diff options
author | substantialnoninfringinguser <substantialnoninfringinguser@gmail.com> | 2009-05-21 19:47:19 +0100 |
---|---|---|
committer | substantialnoninfringinguser <substantialnoninfringinguser@gmail.com> | 2009-05-21 19:47:19 +0100 |
commit | 54a62999c03f5293b42d56f9a99b1c5a3b02fa5f (patch) | |
tree | 8221aee4d3e16f1373c3162cd7c44eebb273345a /expo | |
parent | 99949d466a0bf2667bad10f8c6c2c751036fd858 (diff) | |
download | troggle-54a62999c03f5293b42d56f9a99b1c5a3b02fa5f.tar.gz troggle-54a62999c03f5293b42d56f9a99b1c5a3b02fa5f.tar.bz2 troggle-54a62999c03f5293b42d56f9a99b1c5a3b02fa5f.zip |
[svn] Updates to allow subcave tree with nice admin.
Diffstat (limited to 'expo')
-rw-r--r-- | expo/admin.py | 9 | ||||
-rw-r--r-- | expo/models.py | 57 |
2 files changed, 39 insertions, 27 deletions
diff --git a/expo/admin.py b/expo/admin.py index f2717d9..3b727d2 100644 --- a/expo/admin.py +++ b/expo/admin.py @@ -1,5 +1,6 @@ from troggle.expo.models import *
from django.contrib import admin
+from feincms.admin import editor
from django.forms import ModelForm
import django.forms as forms
from expo.forms import LogbookEntryForm
@@ -69,10 +70,12 @@ class CaveAdmin(TroggleModelAdmin): #inlines = (QMInline,)
extra = 4
+class SubcaveAdmin(editor.TreeEditorMixin,TroggleModelAdmin):
+ pass
admin.site.register(Photo)
-admin.site.register(Subcave)
+admin.site.register(Subcave, SubcaveAdmin)
admin.site.register(Cave, CaveAdmin)
admin.site.register(Area)
admin.site.register(OtherCaveName)
@@ -91,3 +94,7 @@ admin.site.register(QM, QMAdmin) admin.site.register(Survey, SurveyAdmin)
admin.site.register(ScannedImage)
+try:
+ mptt.register(Subcave, order_insertion_by=['name'])
+except mptt.AlreadyRegistered:
+ print "mptt already registered"
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')
-
-
|