From c2876c0b64d17ca2c3a9e8a4a61a569d43e70cd6 Mon Sep 17 00:00:00 2001
From: julian <devnull@localhost>
Date: Mon, 3 Nov 2008 00:17:28 +0100
Subject: [PATCH] [svn r8054] Removed last of the sqlite save hack Started to
 add reading of dates Changed character encoding code so it works

---
 troggle/parsers/survex.py | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/troggle/parsers/survex.py b/troggle/parsers/survex.py
index 99044cbe8..a3ea4dcb5 100644
--- a/troggle/parsers/survex.py
+++ b/troggle/parsers/survex.py
@@ -7,26 +7,18 @@ re_include_extension = re.compile(r"^\s*\*include\s+([^\s]*).svx$", re.IGNORECAS
 re_include_no_extension = re.compile(r"^\s*\*include\s+([^\s]*)$", re.IGNORECASE)
 re_begin = re.compile(r"^\s*\*begin\s+(.*?)\s*$", re.IGNORECASE)
 re_end = re.compile(r"^\s*\*end\s+(.*?)\s*$", re.IGNORECASE)
-
-def save(x):   #There seems to be an intermitent problem with sqlite and Vista, this should fix it
-    #try:
-        x.save()
-    #except Exception: #sqlite3.OperationalError:
-    #    print "Error"
-    #    time.sleep(1)
-    #    save(x)
+re_date = re.compile(r"^\s*\*date\s+(.*?)\s*$", re.IGNORECASE)
 
 def fileIterator(directory, filename):
     survex_file = os.path.join(directory, filename + ".svx")
     f = open(os.path.join(settings.SURVEX_DATA, survex_file), "rb")
     char = 0
     for line in f.readlines():
-        line = unicode(line, "latin1").decode("utf-8")
+        line = unicode(line, "latin1")
         include_extension = re_include_extension.match(line)
         include_no_extension = re_include_no_extension.match(line)
         def a(include):
             link = re.split(r"/|\\", include)
-            print os.path.join(directory, *link[:-1]), link[-1]
             return fileIterator(os.path.join(directory, *link[:-1]), link[-1])
         if include_extension:
             for sf, c, l in a(include_extension.groups()[0]):
@@ -43,26 +35,29 @@ def make_model(name, parent, iter_lines, sf, c, l):
         m = models.SurvexBlock(name = name, parent = parent, begin_file = sf, begin_char = c, text = l)
     else:
         m = models.SurvexBlock(name = name, begin_file = sf, begin_char = c, text = l)
-    save(m)
+    m.save()
     for survex_file, count, line in iter_lines:
       begin = re_begin.match(line.split(";")[0])
       end = re_end.match(line.split(";")[0])
+      date = re_date.match(line.split(";")[0])
       if begin:
           make_model(begin.groups()[0], m, iter_lines, survex_file, count, line)
       elif end:
           m.text = m.text + line
           m.end_file = survex_file
           m.end_char = count
-          print len(m.text)
-          save(m)
+          m.save()
           assert (end.groups()[0]).lower() == (name).lower()
           return None
+      elif date:
+          print date.groups()[0]
+          m.text = m.text + line
       else:
           m.text = m.text + line
     m.text = m.text + line
     m.end_file = survex_file
     m.end_char = count
-    save(m)
+    m.save()
 
 
 filename = "all"