From 735b729a414fdda2e4b832c58707decb19aaae6c Mon Sep 17 00:00:00 2001 From: goatchurch Date: Thu, 10 Sep 2009 22:07:31 +0100 Subject: survey scans features added --- core/admin.py | 7 +++-- core/models_survex.py | 72 ++++++++++++++++++++++++++++++++++----------------- core/view_surveys.py | 17 ++++++++++++ core/views_survex.py | 6 +++-- 4 files changed, 74 insertions(+), 28 deletions(-) (limited to 'core') diff --git a/core/admin.py b/core/admin.py index 87c812a..37afc3b 100644 --- a/core/admin.py +++ b/core/admin.py @@ -19,7 +19,7 @@ class TroggleModelAdmin(admin.ModelAdmin): js = ('js/jquery.js','js/QM_helper.js') class RoleInline(admin.TabularInline): - model = PersonRole + model = SurvexPersonRole extra = 4 class SurvexBlockAdmin(TroggleModelAdmin): @@ -116,7 +116,7 @@ admin.site.register(Entrance, EntranceAdmin) admin.site.register(SurvexBlock, SurvexBlockAdmin) admin.site.register(Expedition) admin.site.register(Person,PersonAdmin) -admin.site.register(PersonRole) +admin.site.register(SurvexPersonRole) admin.site.register(PersonExpedition,PersonExpeditionAdmin) admin.site.register(LogbookEntry, LogbookEntryAdmin) #admin.site.register(PersonTrip) @@ -124,6 +124,9 @@ admin.site.register(QM, QMAdmin) admin.site.register(Survey, SurveyAdmin) admin.site.register(ScannedImage) +admin.site.register(SurvexScansFolder) +admin.site.register(SurvexScanSingle) + def export_as_json(modeladmin, request, queryset): response = HttpResponse(mimetype="text/json") response['Content-Disposition'] = 'attachment; filename=troggle_output.json' diff --git a/core/models_survex.py b/core/models_survex.py index ffb3d4d..c6eb5b9 100644 --- a/core/models_survex.py +++ b/core/models_survex.py @@ -1,6 +1,9 @@ from django.db import models from django.conf import settings import os +import urlparse +import re +from django.core.urlresolvers import reverse ########################################################### @@ -47,37 +50,42 @@ class SurvexFile(models.Model): self.save() class SurvexEquate(models.Model): - cave = models.ForeignKey('Cave', blank=True, null=True) + cave = models.ForeignKey('Cave', blank=True, null=True) class SurvexStation(models.Model): - name = models.CharField(max_length=20) - block = models.ForeignKey('SurvexBlock') - equate = models.ForeignKey('SurvexEquate', blank=True, null=True) + name = models.CharField(max_length=20) + block = models.ForeignKey('SurvexBlock') + equate = models.ForeignKey('SurvexEquate', blank=True, null=True) class SurvexLeg(models.Model): - block = models.ForeignKey('SurvexBlock') + block = models.ForeignKey('SurvexBlock') #title = models.ForeignKey('SurvexTitle') stationfrom = models.ForeignKey('SurvexStation', related_name='stationfrom') - stationto = models.ForeignKey('SurvexStation', related_name='stationto') - tape = models.FloatField() - compass = models.FloatField() - clino = models.FloatField() + stationto = models.ForeignKey('SurvexStation', related_name='stationto') + tape = models.FloatField() + compass = models.FloatField() + clino = models.FloatField() + + # # Single SurvexBlock # class SurvexBlock(models.Model): - name = models.CharField(max_length=100) - parent = models.ForeignKey('SurvexBlock', blank=True, null=True) - text = models.TextField() - cave = models.ForeignKey('Cave', blank=True, null=True) + name = models.CharField(max_length=100) + parent = models.ForeignKey('SurvexBlock', blank=True, null=True) + text = models.TextField() + cave = models.ForeignKey('Cave', blank=True, null=True) - date = models.DateField(blank=True, null=True) + date = models.DateField(blank=True, null=True) expedition = models.ForeignKey('Expedition', blank=True, null=True) - survexfile = models.ForeignKey("SurvexFile", blank=True, null=True) + survexfile = models.ForeignKey("SurvexFile", blank=True, null=True) begin_char = models.IntegerField() # code for where in the survex data files this block sits survexpath = models.CharField(max_length=200) # the path for the survex stations - refscandir = models.CharField(max_length=100) + + survexscansfolder = models.ForeignKey("SurvexScansFolder", null=True) + #refscandir = models.CharField(max_length=100) + totalleglength = models.FloatField() class Meta: @@ -108,16 +116,13 @@ class SurvexBlock(models.Model): class SurvexTitle(models.Model): survexblock = models.ForeignKey('SurvexBlock') - title = models.CharField(max_length=200) - cave = models.ForeignKey('Cave', blank=True, null=True) + title = models.CharField(max_length=200) + cave = models.ForeignKey('Cave', blank=True, null=True) # # member of a SurvexBlock # -class PersonRole(models.Model): - survexblock = models.ForeignKey('SurvexBlock') - - ROLE_CHOICES = ( +ROLE_CHOICES = ( ('insts','Instruments'), ('dog','Other'), ('notes','Notes'), @@ -128,9 +133,11 @@ class PersonRole(models.Model): ('disto','Disto'), ('consultant','Consultant'), ) - nrole = models.CharField(choices=ROLE_CHOICES, max_length=200, blank=True, null=True) - # increasing levels of precision +class SurvexPersonRole(models.Model): + survexblock = models.ForeignKey('SurvexBlock') + nrole = models.CharField(choices=ROLE_CHOICES, max_length=200, blank=True, null=True) + # increasing levels of precision personname = models.CharField(max_length=100) person = models.ForeignKey('Person', blank=True, null=True) personexpedition = models.ForeignKey('PersonExpedition', blank=True, null=True) @@ -140,3 +147,20 @@ class PersonRole(models.Model): return unicode(self.person) + " - " + unicode(self.survexblock) + " - " + unicode(self.nrole) +class SurvexScansFolder(models.Model): + fpath = models.CharField(max_length=200) + walletname = models.CharField(max_length=200) + + def get_absolute_url(self): + return urlparse.urljoin(settings.URL_ROOT, reverse('surveyscansfolder', kwargs={"path":re.sub("#", "%23", self.walletname)})) + +class SurvexScanSingle(models.Model): + ffile = models.CharField(max_length=200) + name = models.CharField(max_length=200) + survexscansfolder = models.ForeignKey("SurvexScansFolder", null=True) + + def get_absolute_url(self): + return urlparse.urljoin(settings.URL_ROOT, reverse('surveyscansingle', kwargs={"path":re.sub("#", "%23", self.survexscansfolder.walletname), "file":self.name})) + + + diff --git a/core/view_surveys.py b/core/view_surveys.py index 846b245..ab45438 100644 --- a/core/view_surveys.py +++ b/core/view_surveys.py @@ -4,10 +4,12 @@ from django.shortcuts import render_to_response from django.http import HttpResponse, Http404 import os import re +from troggle.core.models import SurvexScansFolder, SurvexScanSingle, SurvexBlock # inline fileabstraction into here if it's not going to be useful anywhere else # keep things simple and ignore exceptions everywhere for now + def getMimeType(extension): try: return {"txt": "text/plain", @@ -159,3 +161,18 @@ def jgtuploadfile(request): print "gothere" return render_to_response('fileupload.html', {'message':message, 'filesuploaded':filesuploaded, 'settings': settings}) +def surveyscansfolder(request, path): + #print [ s.walletname for s in SurvexScansFolder.objects.all() ] + survexscansfolder = SurvexScansFolder.objects.get(walletname=path) + return render_to_response('survexscansfolder.html', { 'survexscansfolder':survexscansfolder, 'settings': settings }) + +def surveyscansingle(request, path, file): + survexscansfolder = SurvexScansFolder.objects.get(walletname=path) + survexscansingle = SurvexScanSingle.objects.get(survexscansfolder=survexscansfolder, name=file) + return HttpResponse(content=open(survexscansingle.ffile), mimetype="image/png") + #return render_to_response('survexscansfolder.html', { 'survexscansfolder':survexscansfolder, 'settings': settings }) + +def surveyscansfolders(request): + survexscansfolders = SurvexScansFolder.objects.all() + return render_to_response('survexscansfolders.html', { 'survexscansfolders':survexscansfolders, 'settings': settings }) + \ No newline at end of file diff --git a/core/views_survex.py b/core/views_survex.py index 698268c..b6b5aba 100644 --- a/core/views_survex.py +++ b/core/views_survex.py @@ -8,7 +8,7 @@ import datetime import difflib from troggle.core.models import Expedition, Person, PersonExpedition, PersonTrip, LogbookEntry, Cave -from troggle.core.models import SurvexBlock, PersonRole, SurvexFile, SurvexDirectory, SurvexTitle +from troggle.core.models import SurvexBlock, SurvexPersonRole, SurvexFile, SurvexDirectory, SurvexTitle from parsers.people import GetPersonExpeditionNameLookup import troggle.settings as settings @@ -306,8 +306,10 @@ def survexcaveslist(request): # parsing all the survex files of a single cave and showing that it's consistent and can find all the files and people # doesn't use recursion. just writes it twice def survexcavesingle(request, survex_cave): + breload = False cave = Cave.objects.get(kataster_number=survex_cave) - parsers.survex.ReloadSurvexCave(survex_cave) + if breload: + parsers.survex.ReloadSurvexCave(survex_cave) return render_to_response('svxcavesingle.html', {'settings': settings, "cave":cave }) -- cgit v1.2.3