summaryrefslogtreecommitdiffstats
path: root/parsers/survex.py
diff options
context:
space:
mode:
Diffstat (limited to 'parsers/survex.py')
-rw-r--r--parsers/survex.py28
1 files changed, 23 insertions, 5 deletions
diff --git a/parsers/survex.py b/parsers/survex.py
index 5720b11..6fb7c62 100644
--- a/parsers/survex.py
+++ b/parsers/survex.py
@@ -10,7 +10,9 @@ from django.utils.timezone import make_aware
import re
import os
+import time
from datetime import datetime, timedelta
+import sys
line_leg_regex = re.compile(r"[\d\-+.]+$")
@@ -179,7 +181,7 @@ def RecursiveLoad(survexblock, survexfile, fin, textlines):
# print('QM res station %s' % qm_resolve_station)
# print('QM notes %s' % qm_notes)
- # If the QM isn't resolved (has a resolving station) thn load it
+ # If the QM isn't resolved (has a resolving station) then load it
if not qm_resolve_section or qm_resolve_section is not '-' or qm_resolve_section is not 'None':
from_section = models.SurvexBlock.objects.filter(name=qm_from_section)
# If we can find a section (survex note chunck, named)
@@ -364,6 +366,11 @@ def LoadAllSurvexBlocks():
print(" - Data flushed")
print(' - Loading All Survex Blocks...')
+
+ print(' - redirecting stdout to loadsurvexblks.log ...')
+ stdout_orig = sys.stdout
+ # Redirect sys.stdout to the file
+ sys.stdout = open('loadsurvexblks.log', 'w')
survexfile = models.SurvexFile(path=settings.SURVEX_TOPNAME, cave=None)
survexfile.save()
@@ -379,6 +386,11 @@ def LoadAllSurvexBlocks():
fin.close()
survexblockroot.text = "".join(textlines)
survexblockroot.save()
+
+ # Close the file
+ sys.stdout.close()
+ # Restore sys.stdout to our old saved file handler
+ sys.stdout = stdout_orig
print(' - Loaded All Survex Blocks.')
@@ -399,13 +411,18 @@ def LoadPos():
# but without cave import being run before,
# then *everything* may be in the fresh 'not found' cache file.
- cachefile = settings.SURVEX_DATA + "posnotfound"
+ cachefile = settings.SURVEX_DATA + "posnotfound.cache"
notfoundbefore = {}
if os.path.isfile(cachefile):
updtsvx = os.path.getmtime(topdata + ".svx")
updtcache = os.path.getmtime(cachefile)
age = updtcache - updtsvx
- print(' svx: %s cache: %s cache age: %s' % (updtsvx, updtcache, str(timedelta(seconds=age) )))
+ print(' svx: %s cache: %s not-found cache is fresher by: %s' % (updtsvx, updtcache, str(timedelta(seconds=age) )))
+
+ now = time.time()
+ if now - updtcache > 30*24*60*60:
+ print " cache is more than 30 days old. Deleting."
+ os.remove(cachefile)
if age < 0 :
print " cache is stale."
os.remove(cachefile)
@@ -432,6 +449,8 @@ def LoadPos():
# cavern defaults to using same cwd as supplied input file
call([settings.CAVERN, "--output=%s.3d" % (topdata), "%s.svx" % (topdata)])
call([settings.THREEDTOPOS, '%s.3d' % (topdata)], cwd = settings.SURVEX_DATA)
+ print " - This next bit takes a while. Matching ~32,000 survey positions. Be patient..."
+
posfile = open("%s.pos" % (topdata))
posfile.readline() #Drop header
for line in posfile.readlines():
@@ -449,9 +468,8 @@ def LoadPos():
ss.save()
found += 1
except:
- #print "%s in %s.pos not found in lookup of SurvexStation.objects" % (name, settings.SURVEX_TOPNAME)
notfoundnow.append(name)
- print " - %s stations NOT found in lookup of SurvexStation.objects. %s found. %s skipped." % (len(notfoundnow),found, len(skip))
+ print " - %s stations not found in lookup of SurvexStation.objects. %s found. %s skipped." % (len(notfoundnow),found, len(skip))
if found > 10: # i.e. a previous cave import has been done
try: