From 517d29163669de836f631fa17855a0b5cd914660 Mon Sep 17 00:00:00 2001 From: goatchurch Date: Sun, 13 Sep 2009 17:27:46 +0100 Subject: [PATCH] able to save sketches up from tunnel --- core/models_survex.py | 4 ++++ core/view_surveys.py | 45 ++++++++++++++++++++++++++++++++++++-- databaseReset.py | 2 +- parsers/surveys.py | 37 ++++++++++++++++++++++--------- templates/tunnelfiles.html | 8 +++++-- urls.py | 3 +++ 6 files changed, 84 insertions(+), 15 deletions(-) diff --git a/core/models_survex.py b/core/models_survex.py index 9fd23c4..2828389 100644 --- a/core/models_survex.py +++ b/core/models_survex.py @@ -173,5 +173,9 @@ class TunnelFile(models.Model): survexscans = models.ManyToManyField("SurvexScanSingle") survexblocks = models.ManyToManyField("SurvexBlock") tunnelcontains = models.ManyToManyField("TunnelFile") # case when its a frame type + filesize = models.IntegerField(default=0) + npaths = models.IntegerField(default=0) + class Meta: + ordering = ('tunnelpath',) \ No newline at end of file diff --git a/core/view_surveys.py b/core/view_surveys.py index 0324b24..fc93a7e 100644 --- a/core/view_surveys.py +++ b/core/view_surveys.py @@ -2,7 +2,7 @@ from django.conf import settings import fileAbstraction from django.shortcuts import render_to_response from django.http import HttpResponse, Http404 -import os +import os, stat import re from troggle.core.models import SurvexScansFolder, SurvexScanSingle, SurvexBlock, TunnelFile @@ -181,4 +181,45 @@ def surveyscansfolders(request): def tunneldata(request): tunnelfiles = TunnelFile.objects.all() return render_to_response('tunnelfiles.html', { 'tunnelfiles':tunnelfiles, 'settings': settings }) - \ No newline at end of file + +def tunnelfile(request, path): + tunnelfile = TunnelFile.objects.get(tunnelpath=path) + tfile = os.path.join(settings.TUNNEL_DATA, tunnelfile.tunnelpath) + + # just output the file + if not request.POST: + return HttpResponse(content=open(tfile), mimetype="text/plain") + + project, user, password, tunnelversion = request.POST["tunnelproject"], request.POST["tunneluser"], request.POST["tunnelpassword"], request.POST["tunnelversion"] + print (project, user, tunnelversion) + for uploadedfile in request.FILES.values(): + if uploadedfile.field_name != "sketch": + return HttpResponse(content="Error: non-sketch file uploaded", mimetype="text/plain") + if uploadedfile.content_type != "text/plain": + return HttpResponse(content="Error: non-plain content type", mimetype="text/plain") + + # could use this to add new files + if os.path.split(path)[1] != uploadedfile.name: + return HttpResponse(content="Error: name disagrees", mimetype="text/plain") + + orgsize = tunnelfile.filesize # = os.stat(tfile)[stat.ST_SIZE] + + ttext = uploadedfile.read() + + # could check that the user and projects agree here + + fout = open(tfile, "w") + fout.write(ttext) + fout.close() + + # redo its settings of + tunnelfile.filesize = os.stat(tfile)[stat.ST_SIZE] + tunnelfile.save() + + uploadedfile.close() + message = "File size %d overwritten with size %d" % (orgsize, tunnelfile.filesize) + return HttpResponse(content=message, mimetype="text/plain") + + + + diff --git a/databaseReset.py b/databaseReset.py index 6c635d1..6e049b6 100644 --- a/databaseReset.py +++ b/databaseReset.py @@ -77,7 +77,7 @@ def parse_descriptions(): def import_tunnelfiles(): import parsers.surveys - parsers.surveys.LoadTunnelFiles(settings.TUNNEL_DATA) + parsers.surveys.LoadTunnelFiles() def reset(): diff --git a/parsers/surveys.py b/parsers/surveys.py index 86f6405..cffeb4a 100644 --- a/parsers/surveys.py +++ b/parsers/surveys.py @@ -1,4 +1,4 @@ -import sys, os, types, logging +import sys, os, types, logging, stat #sys.path.append('C:\\Expo\\expoweb') #from troggle import * #os.environ['DJANGO_SETTINGS_MODULE']='troggle.settings' @@ -204,7 +204,30 @@ def LoadListScans(surveyscansdir): -def LoadTunnelFiles(tunneldatadir): +def SetTunnelfileInfo(tunnelfile): + ff = os.path.join(settings.TUNNEL_DATA, tunnelfile.tunnelpath) + tunnelfile.filesize = os.stat(ff)[stat.ST_SIZE] + fin = open(ff) + ttext = fin.read() + fin.close() + + mtype = re.search("<(fontcolours|sketch)", ttext) + assert mtype, ff + tunnelfile.bfontcolours = (mtype.group(1)=="fontcolours") + tunnelfile.npaths = len(re.findall(" + # + print tunnelfile.tunnelpath, re.findall('All Tunnel files - + {% for tunnelfile in tunnelfiles %} - + + + + + {% endfor %}
FileFontFrameSurvexBlocksSize
FileFontFrameSurvexBlocksSizePaths
{{tunnelfile.tunnelpath}}{{tunnelfile.tunnelpath}} {{tunnelfile.bfontcolours}}{{tunnelfile.filesize}}{{tunnelfile.npaths}}
diff --git a/urls.py b/urls.py index 20f5ca4..bdaabb3 100644 --- a/urls.py +++ b/urls.py @@ -108,7 +108,10 @@ urlpatterns = patterns('', url(r'^survey_scans/(?P[^/]+)/$', view_surveys.surveyscansfolder, name="surveyscansfolder"), url(r'^survey_scans/(?P[^/]+)/(?P[^/]+(?:png|jpg))$', view_surveys.surveyscansingle, name="surveyscansingle"), + url(r'^tunneldata/$', view_surveys.tunneldata, name="tunneldata"), + url(r'^tunneldataraw/(?P.+?\.xml)$', view_surveys.tunnelfile, name="tunnelfile"), + #url(r'^tunneldatainfo/(?P.+?\.xml)$', view_surveys.tunnelfileinfo, name="tunnelfileinfo"), (r'^photos/(?P.*)$', 'django.views.static.serve', {'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}),