From 64000dda37ed3595603fc724a7653816516f65a7 Mon Sep 17 00:00:00 2001 From: substantialnoninfringinguser Date: Wed, 13 May 2009 06:02:04 +0100 Subject: [PATCH] [svn] Make qm table export script work Copied from http://cucc@cucc.survex.com/svn/trunk/expoweb/troggle/, rev. 8273 by aaron @ 3/14/2009 4:16 AM --- expo/admin.py | 9 ++++++++- export/toqms.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/expo/admin.py b/expo/admin.py index 83a25fe..24f6f2e 100644 --- a/expo/admin.py +++ b/expo/admin.py @@ -27,7 +27,12 @@ class PersonExpeditionInline(admin.TabularInline): class PersonAdmin(admin.ModelAdmin): search_fields = ('first_name','last_name') inlines = (PersonExpeditionInline,) - + +class QMAdmin(admin.ModelAdmin): + def save_model(self, request, obj, form, change): + obj.new_since_parsing=True + obj.save() + class PersonExpeditionAdmin(admin.ModelAdmin): search_fields = ('person__first_name','expedition__year') @@ -35,6 +40,8 @@ class CaveAdmin(admin.ModelAdmin): search_fields = ('official_name','kataster_number','unofficial_number') extra = 4 + + admin.site.register(Photo) admin.site.register(Cave, CaveAdmin) admin.site.register(Area) diff --git a/export/toqms.py b/export/toqms.py index e69de29..0597da6 100644 --- a/export/toqms.py +++ b/export/toqms.py @@ -0,0 +1,37 @@ +import troggle.expo.models as models +from django.conf import settings + +import csv +import re +import os + +#format of QM tables +headers=['Number','Grade','Area','Description','Page reference','Nearest station','Completion description','Comment'] + +def qmRow(qm): + #mapping of troggle models to table columns is: (guess this could just be a tuple of tuples rather than a dictionary actually) + columnsToModelFields={ + 'Number':str(qm.number), + 'Grade':qm.grade, + 'Area':qm.area, + 'Description':qm.location_description, + #'Page reference': #not implemented + 'Nearest station':qm.nearest_station_description, + 'Completion description':qm.completion_description, + 'Comment':qm.comment + } + + qmRow=['' for x in range(len(headers))] + for column, modelField in columnsToModelFields.items(): + if modelField: + # Very sorry about the atrocious replace below. I will fix this soon if noone beats me to it. - AC + qmRow[headers.index(column)]=modelField.replace(u'\xd7','x').replace(u'\u201c','').replace(u'\u2013','').replace(u'\xbd','') + return qmRow + +def writeQmTable(path,cave): + outfile=file(path,'w') + cavewriter=csv.writer(outfile,lineterminator='\r') + cavewriter.writerow(headers) + for qm in cave.get_QMs(): + cavewriter.writerow(qmRow(qm)) + \ No newline at end of file