From 1ef274ec1dca0c54ea3dbda6887960e8f665e2c9 Mon Sep 17 00:00:00 2001
From: expo <expo@expobox.potato.hut>
Date: Mon, 6 Aug 2012 12:19:48 +0200
Subject: [PATCH] Editing no longer changes files more than nesecary. Removed
 TinyMCE editing. /Sumbit/Submit

---
 core/forms.py                      | 16 +++++++--------
 flatpages/views.py                 | 33 +++++++++++++++++++++---------
 templates/cave_entrances.html      | 15 +++++++++-----
 templates/dataformat/flatfile.html | 10 ---------
 templates/editcave.html            |  2 +-
 templates/editcave2.html           |  2 +-
 templates/editentrance.html        |  2 +-
 templates/editfile.html            |  2 +-
 8 files changed, 45 insertions(+), 37 deletions(-)
 delete mode 100644 templates/dataformat/flatfile.html

diff --git a/core/forms.py b/core/forms.py
index 939f64f..e0654fb 100644
--- a/core/forms.py
+++ b/core/forms.py
@@ -8,14 +8,14 @@ from datetime import date
 from tinymce.widgets import TinyMCE
 
 class CaveForm(ModelForm):
-    underground_description = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
-    explorers = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
-    equipment = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
-    survey = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
-    kataster_status = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
-    underground_centre_line = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
-    notes = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
-    references = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
+    underground_description = forms.CharField(required = False, widget=forms.Textarea())
+    explorers = forms.CharField(required = False, widget=forms.Textarea())
+    equipment = forms.CharField(required = False, widget=forms.Textarea())
+    survey = forms.CharField(required = False, widget=forms.Textarea())
+    kataster_status = forms.CharField(required = False, widget=forms.Textarea())
+    underground_centre_line = forms.CharField(required = False, widget=forms.Textarea())
+    notes = forms.CharField(required = False, widget=forms.Textarea())
+    references = forms.CharField(required = False, widget=forms.Textarea())
     class Meta:
         model = Cave
 
diff --git a/flatpages/views.py b/flatpages/views.py
index 0999d31..6fb68bb 100644
--- a/flatpages/views.py
+++ b/flatpages/views.py
@@ -57,9 +57,9 @@ def flatpage(request, path):
     if path.endswith(".htm") or path.endswith(".html"):
         html = o.read()
         
-        m = re.search(r"<head>(.*)</head>.*<body[^>]*>(.*)</body>", html, re.DOTALL + re.IGNORECASE)
+        m = re.search(r"(.*)<\s*head([^>]*)>(.*)<\s*/head\s*>(.*)<\s*body([^>]*)>(.*)<\s*/body\s*>(.*)", html, re.DOTALL + re.IGNORECASE)
         if m:
-            head, body = m.groups()
+            preheader, headerattrs, head, postheader, bodyattrs, body, postbody = m.groups()
         else:
             return HttpResponse(html + "Page could not be split into header and body")
         m = re.search(r"<title>(.*)</title>", head, re.DOTALL + re.IGNORECASE)
@@ -107,13 +107,13 @@ def editflatpage(request, path):
         filepath = os.path.normpath(settings.EXPOWEB + path)
         o = open(filepath, "r")
         html = o.read()
-        m = re.search(r"<head>(.*)</head>.*<body[^>]*>(.*)</body>", html, re.DOTALL + re.IGNORECASE)
+        m = re.search(r"(.*)<head([^>]*)>(.*)</head>(.*)<body([^>]*)>(.*)</body>(.*)", html, re.DOTALL + re.IGNORECASE)
         if m:
             filefound = True
-            head, body = m.groups()
-            linksmatch = re.match('(.*)<ul\s+id="links">', body, re.DOTALL + re.IGNORECASE)
+            preheader, headerargs, head, postheader, bodyargs, body, postbody = m.groups()
+            linksmatch = re.match('(.*)(<ul\s+id="links">.*)', body, re.DOTALL + re.IGNORECASE)
             if linksmatch:
-                body, = linksmatch.groups()
+                body, links = linksmatch.groups()
             if re.search(r"iso-8859-1", html):
                 body = unicode(body, "iso-8859-1")
         else:
@@ -126,9 +126,22 @@ def editflatpage(request, path):
         flatpageForm = FlatPageForm(request.POST) # A form bound to the POST data
         if flatpageForm.is_valid():# Form valid therefore write file
             f = open(filepath, "w")
-            template = loader.get_template('dataformat/flatfile.html')
-            context = Context({'form': flatpageForm.cleaned_data})
-            f.write(template.render(context))
+            if filefound:
+                headmatch =  re.match(r"(.*)<title>.*</title>(.*)", head, re.DOTALL + re.IGNORECASE)
+                if headmatch:
+                    head = headmatch.group(1) + "<title>" + flatpageForm.cleaned_data["title"] + "</title>" + headmatch.group(2)
+                else:
+                    head = "<title>" + flatpageForm.cleaned_data["title"] + "</title>"
+            else:
+                head = "<title>" + flatpageForm.cleaned_data["title"] + "</title>"
+                preheader = "<html>"
+                headerargs = ""
+                postheader = ""
+                bodyargs = ""
+                postbody = "</html>" 
+            body = flatpageForm.cleaned_data["html"]
+            body = body.replace("\r", "")
+            f.write("%s<head%s>%s</head>%s<body%s>\n%s</body>%s" % (preheader, headerargs, head, postheader, bodyargs, body, postbody))
             f.close()
             return HttpResponseRedirect(reverse('flatpage', args=[path])) # Redirect after POST
     else:
@@ -146,4 +159,4 @@ def editflatpage(request, path):
 class FlatPageForm(forms.Form):
     title = forms.CharField(widget=forms.TextInput(attrs={'size':'60'}))
 
-    html = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 20}))
+    html = forms.CharField(widget=forms.Textarea())
diff --git a/templates/cave_entrances.html b/templates/cave_entrances.html
index e4e939d..1364acf 100644
--- a/templates/cave_entrances.html
+++ b/templates/cave_entrances.html
@@ -51,11 +51,16 @@
         {% if ent.entrance.bearings %}
             <dt>Bearings</dt><dd>{{ ent.entrance.bearings|safe }}</dd>
         {% endif %}
-
-    {{ ent.entrance.tag_station|safe }}
-    {{ ent.entrance.exact_station|safe }}
-    {{ ent.entrance.other_station|safe }}
-    {{ ent.entrance.other_description|safe }}
+        {% if ent.entrance.exact_station %}
+            <dt>Exact Station</dt><dd>{{ ent.entrance.exact_station|safe }}</dd>
+        {% endif %}
+        {% if ent.entrance.other_station %}
+            <dt>Other Station</dt><dd>{{ ent.entrance.other_station|safe }}
+		{% if ent.entrance.other_description %}
+			- {{ ent.entrance.other_description|safe }}
+		{% endif %}
+		</dd>
+        {% endif %}
           </dl>  
       </li>
     {% endfor %}
diff --git a/templates/dataformat/flatfile.html b/templates/dataformat/flatfile.html
deleted file mode 100644
index 07d03ca..0000000
--- a/templates/dataformat/flatfile.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{% autoescape off %}
-<html>
-<head>
-<title>{{ form.title }}</title>
-</head>
-<body>
-{{ form.html }}
-</body>
-</html>
-{% endautoescape %}
diff --git a/templates/editcave.html b/templates/editcave.html
index 0e1785b..d7bdf37 100644
--- a/templates/editcave.html
+++ b/templates/editcave.html
@@ -13,7 +13,7 @@
 
 <form action="" method="post">{% csrf_token %}
     {{ form }}
-    <p><input type="submit" value="Sumbit" /></p>
+    <p><input type="submit" value="Submit" /></p>
 </form>
 
 {% endblock %}
diff --git a/templates/editcave2.html b/templates/editcave2.html
index e57b4cd..edac202 100644
--- a/templates/editcave2.html
+++ b/templates/editcave2.html
@@ -12,7 +12,7 @@
 <form action="" method="post">{% csrf_token %}
     <table>{{ form }}{{caveAndEntranceFormSet}}</table>
     {{ versionControlForm }}
-    <p><input type="submit" value="Sumbit" /></p>
+    <p><input type="submit" value="Submit" /></p>
 </form>
 
 {% endblock %}
diff --git a/templates/editentrance.html b/templates/editentrance.html
index d17d1f9..3b0e12b 100644
--- a/templates/editentrance.html
+++ b/templates/editentrance.html
@@ -12,7 +12,7 @@
 <form action="" method="post">{% csrf_token %}
     <table>{{ form }}</table>
     {{ versionControlForm }}
-    <p><input type="submit" value="Sumbit" /></p>
+    <p><input type="submit" value="Submit" /></p>
 </form>
 
 {% endblock %}
diff --git a/templates/editfile.html b/templates/editfile.html
index 954a1c4..b9ae115 100644
--- a/templates/editfile.html
+++ b/templates/editfile.html
@@ -90,7 +90,7 @@
         <label for="id_date">Content:</label>
         {{ fileForm.html }}
     </div>
-    <p><input type="submit" value="Sumbit Trip Report" /></p>
+    <p><input type="submit" value="Submit Trip Report" /></p>
 </form>
 
 {% endblock %}