diff options
Diffstat (limited to 'parsers')
-rw-r--r-- | parsers/survex.py | 11 | ||||
-rw-r--r-- | parsers/surveys.py | 57 |
2 files changed, 63 insertions, 5 deletions
diff --git a/parsers/survex.py b/parsers/survex.py index 0a764ef..e9b018d 100644 --- a/parsers/survex.py +++ b/parsers/survex.py @@ -68,8 +68,13 @@ def RecursiveLoad(survexblock, survexfile, fin, textlines): # detect ref line pointing to the scans directory mref = comment and re.match('.*?ref.*?(\d+)\s*#\s*(\d+)', comment) if mref: - survexblock.refscandir = "%s/%s%%23%s" % (mref.group(1), mref.group(1), mref.group(2)) - survexblock.save() + refscan = "%s#%s" % (mref.group(1), mref.group(2)) + print refscan + survexscansfolders = models.SurvexScansFolder.objects.filter(walletname=refscan) + if survexscansfolders: + survexblock.survexscansfolder = survexscansfolders[0] + #survexblock.refscandir = "%s/%s%%23%s" % (mref.group(1), mref.group(1), mref.group(2)) + survexblock.save() continue if not sline: @@ -128,7 +133,7 @@ def RecursiveLoad(survexblock, survexfile, fin, textlines): personexpedition = survexblock.expedition and GetPersonExpeditionNameLookup(survexblock.expedition).get(tm.lower()) if (personexpedition, tm) not in teammembers: teammembers.append((personexpedition, tm)) - personrole = models.PersonRole(survexblock=survexblock, nrole=mteammember.group(1).lower(), personexpedition=personexpedition, personname=tm) + personrole = models.SurvexPersonRole(survexblock=survexblock, nrole=mteammember.group(1).lower(), personexpedition=personexpedition, personname=tm) if personexpedition: personrole.person=personexpedition.person personrole.save() diff --git a/parsers/surveys.py b/parsers/surveys.py index ff78355..9f7ba10 100644 --- a/parsers/surveys.py +++ b/parsers/surveys.py @@ -2,8 +2,8 @@ import sys, os, types, logging #sys.path.append('C:\\Expo\\expoweb')
#from troggle import *
#os.environ['DJANGO_SETTINGS_MODULE']='troggle.settings'
-import troggle.settings as settings
-from troggle.core.models import *
+import settings
+from core.models import *
from PIL import Image
#import settings
#import core.models as models
@@ -146,3 +146,56 @@ def isInterlacedPNG(filePath): #We need to check for interlaced PNGs because the return file.info['interlace']
else:
return False
+
+
+# handles url or file
+def GetListDir(sdir):
+ res = [ ]
+ if sdir[:7] == "http://":
+ s = urllib.urlopen(sdir)
+ else:
+ for f in os.listdir(sdir):
+ if f[0] != ".":
+ ff = os.path.join(sdir, f)
+ res.append((f, ff, os.path.isdir(ff)))
+ return res
+
+# this iterates through the scans directories (either here or on the remote server)
+# and builds up the models we can access later
+def LoadListScans(surveyscansdir):
+ SurvexScanSingle.objects.all().delete()
+ SurvexScansFolder.objects.all().delete()
+
+ for f, ff, fisdir in GetListDir(surveyscansdir):
+ if not fisdir:
+ continue
+
+ # do the year folders
+ if re.match("\d\d\d\d$", f):
+ for fy, ffy, fisdiry in GetListDir(ff):
+ assert fisdiry, ffy
+ survexscansfolder = SurvexScansFolder(fpath=ffy, walletname=fy)
+ survexscansfolder.save()
+ for fyf, ffyf, fisdiryf in GetListDir(ffy):
+ assert not fisdiryf, ffyf
+ survexscansingle = SurvexScanSingle(ffile=ffyf, name=fyf, survexscansfolder=survexscansfolder)
+ survexscansingle.save()
+ elif f != "thumbs":
+ survexscansfolder = SurvexScansFolder(fpath=ff, walletname=f)
+ survexscansfolder.save()
+ gld = [ ]
+
+ # flatten out any directories in these book files
+ for (fyf, ffyf, fisdiryf) in GetListDir(ff):
+ if fisdiryf:
+ gld.extend(GetListDir(ffyf))
+ else:
+ gld.append((fyf, ffyf, fisdiryf))
+
+ for (fyf, ffyf, fisdiryf) in gld:
+ assert not fisdiryf, ffyf
+ survexscansingle = SurvexScanSingle(ffile=ffyf, name=fyf, survexscansfolder=survexscansfolder)
+ survexscansingle.save()
+
+
+
\ No newline at end of file |