From b31d022c1ab0ee4e33b477f913aeb200ad9e0b58 Mon Sep 17 00:00:00 2001 From: substantialnoninfringinguser Date: Wed, 13 May 2009 06:23:57 +0100 Subject: [svn] Dynamic thumbnail generation for photos and survey scans using imagekit, further improving registration system, other misc. Copied from http://cucc@cucc.survex.com/svn/trunk/expoweb/troggle/, rev. 8336 by cucc @ 5/10/2009 11:05 PM --- parsers/surveys.py | 44 +++++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 11 deletions(-) (limited to 'parsers/surveys.py') diff --git a/parsers/surveys.py b/parsers/surveys.py index c7c666d..e2a502d 100644 --- a/parsers/surveys.py +++ b/parsers/surveys.py @@ -1,19 +1,19 @@ import sys import os import types -sys.path.append('C:\\Expo\\expoweb') -from troggle import * -os.environ['DJANGO_SETTINGS_MODULE']='troggle.settings' +#sys.path.append('C:\\Expo\\expoweb') +#from troggle import * +#os.environ['DJANGO_SETTINGS_MODULE']='troggle.settings' import troggle.settings as settings from troggle.expo.models import * - +from PIL import Image #import settings #import expo.models as models import csv import re import datetime -def readSurveysFromCSV(): +def readSurveysFromCSV(logfile=None): try: surveytab = open(os.path.join(settings.SURVEYS, "Surveys.csv")) except IOError: @@ -29,8 +29,18 @@ def readSurveysFromCSV(): if Expedition.objects.count()==0: print "There are no expeditions in the database. Please run the logbook parser." sys.exit() + + if logfile: + logfile.write("Deleting all scanned images") ScannedImage.objects.all().delete() + + if logfile: + logfile.write("Deleting all survey objects") Survey.objects.all().delete() + + if logfile: + logfile.write("Beginning to import surveys from "+str(os.path.join(settings.SURVEYS, "Surveys.csv"))+"\n"+"-"*60+"\n") + for survey in surveyreader: walletNumberLetter = re.match(r'(?P\d*)(?P[a-zA-Z]*)',survey[header['Survey Number']]) #I hate this, but some surveys have a letter eg 2000#34a. This line deals with that. # print walletNumberLetter.groups() @@ -47,7 +57,9 @@ def readSurveysFromCSV(): #try and find the sketch_scan pass surveyobj.save() - print "added survey " + survey[header['Year']] + "#" + surveyobj.wallet_number + "\r", + + if logfile: + logfile.write("added survey " + survey[header['Year']] + "#" + surveyobj.wallet_number + "\r") def listdir(*directories): try: @@ -59,7 +71,7 @@ def listdir(*directories): return [folder.rstrip(r"/") for folder in folders] # add survey scans -def parseSurveyScans(year): +def parseSurveyScans(year, logfile=None): # yearFileList = listdir(year.year) yearPath=os.path.join(settings.SURVEY_SCANS, year.year) yearFileList=os.listdir(yearPath) @@ -92,17 +104,27 @@ def parseSurveyScans(year): survey=Survey.objects.get_or_create(wallet_number=surveyNumber, expedition=year)[0] except Survey.MultipleObjectsReturned: survey=Survey.objects.filter(wallet_number=surveyNumber, expedition=year)[0] - + file=os.path.join(year.year, surveyFolder, scan) scanObj = ScannedImage( - file=os.path.join(year.year, surveyFolder, scan), + file=file, contents=scanType, number_in_wallet=scanNumber, - survey=survey + survey=survey, + new_since_parsing=False, ) #print "Added scanned image at " + str(scanObj) + if scanFormat=="png": + if isInterlacedPNG(os.path.join(settings.SURVEY_SCANS,file)): + print file + "is an interlaced PNG. No can do." + continue scanObj.save() -def parseSurveys(): +def parseSurveys(logfile=None): readSurveysFromCSV() for year in Expedition.objects.filter(year__gte=2000): #expos since 2000, because paths and filenames were nonstandard before then parseSurveyScans(year) + +def isInterlacedPNG(filePath): #We need to check for interlaced PNGs because the thumbnail engine can't handle them (uses PIL) + file=Image.open(filePath) + return file.info['interlace'] + \ No newline at end of file -- cgit v1.2.3