summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--parsers/peopleM.py27
-rw-r--r--parsers/surveysM.py65
2 files changed, 92 insertions, 0 deletions
diff --git a/parsers/peopleM.py b/parsers/peopleM.py
new file mode 100644
index 0000000..62c7ce0
--- /dev/null
+++ b/parsers/peopleM.py
@@ -0,0 +1,27 @@
+from django.conf import settings
+import troggle.core.models as models
+
+def load():
+ folkfile = open(settings.EXPOWEB+"noinfo/folk.csv")
+ personlines = folkfile.read().splitlines()
+ persontable = [x.split(',') for x in personlines]
+ years = [persontable[0][i] for i in range(5,len(persontable[0]))]
+ for year in years:
+ newexpedition = models.ExpeditionM( date = year )
+ newexpedition.save()
+ for row in persontable[1:]: #skip header
+ attendedid = [i for i, x in enumerate(row) if '1' in x]
+ attendedyears = [persontable[0][i] for i in attendedid if i >= 5]
+ name = row[0]
+ print(name+' has attended: '+', '.join(attendedyears))
+ newperson = models.PersonM(
+ name = name)
+ newperson.save()
+ for year in attendedyears:
+ target = models.ExpeditionM.objects.get(date=year)
+ newperson.expos_attended.add( target )
+ print('Person -> Expo table created!')
+
+
+
+
diff --git a/parsers/surveysM.py b/parsers/surveysM.py
new file mode 100644
index 0000000..2b94b02
--- /dev/null
+++ b/parsers/surveysM.py
@@ -0,0 +1,65 @@
+from django.conf import settings
+import subprocess, re
+import troggle.core.models as models
+
+def load():
+ print('Load survex files and relations')
+ load_area('1623')
+
+def load_area(areacode):
+
+ print('Searching all cave dirs files')
+ basedir = settings.SURVEX_DATA+'caves-'+areacode+'/'
+
+ cavedirs = bash("find "+basedir+" -maxdepth 1 -type d").splitlines() #this command finds all directories
+ print('Obtained list of directories! (#dirs='+str(len(cavedirs))+')')
+
+ for cavedir in cavedirs:
+ if cavedir==basedir:
+ continue #skip the basedir - a non-proper subdirectory
+ parentname = bash('echo '+cavedir+' | rev | cut -f1 -d \'/\' | rev').splitlines()[0] #get final bit of the directory
+ parentcave = models.CaveM.objects.filter(survex_file__icontains=cavedir)
+ if len(parentcave)>1:
+ print('Non unique parent - skipping. Name:'+parentname)
+ elif len(parentcave)==0:
+ print('Error! parent not created:'+parentname)
+ continue
+ else: #exaclty one match
+ print('Adding relations of:'+parentname)
+ parentcave = parentcave[0]
+
+ surveyfiles = bash('find '+cavedir+' -name \'*.svx\'').splitlines()
+ for fn in surveyfiles:
+ print(fn)
+ svxcontents = open(fn,'r').read().splitlines()
+ try:
+ dateline = [x for x in svxcontents if ('*date' in x)][0]
+ date = re.findall('\\d\\d\\d\\d\\.\\d\\d\\.\\d\\d', dateline, re.S)[0]
+
+
+ except:
+ if( len( [x for x in svxcontents if ('*date' in x)] ) == 0 ):
+ continue #skip dateless files
+ print('Date format error in '+fn)
+ print('Dateline = '+ '"'.join([x for x in svxcontents if ('*date' in x)]))
+ date = '1900.01.01'
+
+
+ newsurvex = models.SurveyM(survex_file=fn, date=date)
+ newsurvex.save()
+ parentcave.surveys.add(newsurvex)
+ parentcave.save()
+
+
+def file_exists(filename):
+ test = bash('if [ ! -f '+filename+' ] ; then echo MISSING; fi')#test for file exisence
+ if 'MISSING' in test: #send error message to the database
+ return False
+ return True
+
+def bash(cmd): #calls command in bash shell, returns output
+ process = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
+ output, error = process.communicate()
+ return output
+
+