From 891b3abb44f1a4a855510be70b2048ed955bbe17 Mon Sep 17 00:00:00 2001 From: substantialnoninfringinguser Date: Thu, 21 May 2009 19:47:19 +0100 Subject: [svn] Updates to allow subcave tree with nice admin. --- expo/models.py | 57 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 26 deletions(-) (limited to 'expo/models.py') diff --git a/expo/models.py b/expo/models.py index 798fa35..ece0e26 100644 --- a/expo/models.py +++ b/expo/models.py @@ -1,4 +1,5 @@ import urllib, urlparse, string, os, datetime +import troggle.mptt as mptt from django.forms import ModelForm from django.db import models from django.contrib import admin @@ -463,31 +464,35 @@ class Entrance(TroggleModel): return f[1] class Subcave(TroggleModel): - description = models.TextField() - name = models.CharField(max_length=200, ) + description = models.TextField(blank=True, null=True) + title = models.CharField(max_length=200, ) cave = models.ForeignKey('Cave', blank=True, null=True, help_text="Only the top-level subcave should be linked to a cave") - parent= models.ForeignKey('Subcave', blank=True, null=True, related_name='children') - adjoining = models.ManyToManyField('Subcave',blank=True, null=True,) - survex_file = models.CharField(max_length=200, blank=True, null=True,) - + parent = models.ForeignKey('self', null=True, blank=True, related_name='children') + #adjoining = models.ManyToManyField('Subcave',blank=True, null=True,) + legacy_description_path = models.CharField(max_length=600, blank=True, null=True) def __unicode__(self): - return self.name + return self.title - def get_absolute_url(self): - urlString=self.name - if self.parent: - parent=self.parent - while parent: #recursively walk up the tree, adding parents to the left of the URL - urlString=parent.name+'/'+urlString - if parent.cave: - cave=parent.cave - parent=parent.parent - urlString='cave/'+unicode(cave.kataster_number)+'/'+urlString - else: - urlString='cave/'+unicode(self.cave.kataster_number)+'/'+urlString + +# def get_absolute_url(self): +# urlString=self.name +# if self.parent: +# parent=self.parent +# while parent: #recursively walk up the tree, adding parents to the left of the URL +# urlString=parent.name+'/'+urlString +# if parent.cave: +# cave=parent.cave +# parent=parent.parent +# urlString='cave/'+unicode(cave.kataster_number)+'/'+urlString +# else: +# urlString='cave/'+unicode(self.cave.kataster_number)+'/'+urlString - return urlparse.urljoin(settings.URL_ROOT, urlString) +# return urlparse.urljoin(settings.URL_ROOT, urlString) +try: + mptt.register(Subcave, order_insertion_by=['title']) +except mptt.AlreadyRegistered: + print "mptt already registered" class QM(TroggleModel): #based on qm.csv in trunk/expoweb/smkridge/204 which has the fields: @@ -592,13 +597,15 @@ class ScannedImage(TroggleImageModel): return get_scan_path(self,'') class Survey(TroggleModel): - expedition = models.ForeignKey('Expedition') + expedition = models.ForeignKey('Expedition') #REDUNDANT (logbook_entry) wallet_number = models.IntegerField(blank=True,null=True) wallet_letter = models.CharField(max_length=1,blank=True,null=True) comments = models.TextField(blank=True,null=True) - location = models.CharField(max_length=400,blank=True,null=True) + location = models.CharField(max_length=400,blank=True,null=True) #REDUNDANT + subcave = models.ForeignKey('Subcave', blank=True, null=True) #notes_scan = models.ForeignKey('ScannedImage',related_name='notes_scan',blank=True, null=True) #Replaced by contents field of ScannedImage model - survex_block = models.ForeignKey('SurvexBlock',blank=True, null=True) + survex_block = models.OneToOneField('SurvexBlock',blank=True, null=True) + logbook_entry = models.ForeignKey('LogbookEntry') centreline_printed_on = models.DateField(blank=True, null=True) centreline_printed_by = models.ForeignKey('Person',related_name='centreline_printed_by',blank=True,null=True) #sketch_scan = models.ForeignKey(ScannedImage,blank=True, null=True) #Replaced by contents field of ScannedImage model @@ -608,7 +615,7 @@ class Survey(TroggleModel): integrated_into_main_sketch_by = models.ForeignKey('Person' ,related_name='integrated_into_main_sketch_by', blank=True,null=True) rendered_image = models.ImageField(upload_to='renderedSurveys',blank=True,null=True) def __str__(self): - return self.expedition.year+"#"+"%02d" % self.wallet_number + return self.expedition.year+"#"+"%02d" % int(self.wallet_number) def notes(self): return self.scannedimage_set.filter(contents='notes') @@ -618,5 +625,3 @@ class Survey(TroggleModel): def elevations(self): return self.scannedimage_set.filter(contents='elevation') - - -- cgit v1.2.3