diff options
Diffstat (limited to 'core/models.py')
-rw-r--r-- | core/models.py | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/core/models.py b/core/models.py index 9529582..46a86da 100644 --- a/core/models.py +++ b/core/models.py @@ -10,14 +10,13 @@ from django.db.models import Min, Max from django.conf import settings from decimal import Decimal, getcontext from django.core.urlresolvers import reverse -from imagekit.models import ImageModel +from imagekit.models import ProcessedImageField #ImageModel from django.template import Context, loader import settings getcontext().prec=2 #use 2 significant figures for decimal calculations from troggle.core.models_survex import * - def get_related_by_wikilinks(wiki_text): found=re.findall(settings.QM_PATTERN,wiki_text) res=[] @@ -98,11 +97,11 @@ class Expedition(TroggleModel): return res def day_min(self): - res = self.expeditionday_set.all() + res = self.Expeditionday_set.all() return res and res[0] or None def day_max(self): - res = self.expeditionday_set.all() + res = self.Expeditionday_set.all() return res and res[len(res) - 1] or None @@ -114,9 +113,12 @@ class ExpeditionDay(TroggleModel): ordering = ('date',) def GetPersonTrip(self, personexpedition): - personexpeditions = self.persontrip_set.filter(expeditionday=self) + personexpeditions = self.Persontrip_set.filter(expeditionday=self) return personexpeditions and personexpeditions[0] or None + def __unicode__(self): + return str(self.expedition) + ' ' + str(self.date) + # # single Person, can go on many years # @@ -462,7 +464,7 @@ class Cave(TroggleModel): return unicode(self.slug()) def get_QMs(self): - return QM.objects.filter(found_by__cave_slug=self.caveslug_set.all()) + return QM.objects.filter(nearest_station__block__cave__caveslug=self.caveslug_set.all()) def new_QM_number(self, year=datetime.date.today().year): """Given a cave and the current year, returns the next QM number.""" @@ -739,20 +741,20 @@ class NewSubCave(TroggleModel): return unicode(self.name) class QM(TroggleModel): - #based on qm.csv in trunk/expoweb/1623/204 which has the fields: - #"Number","Grade","Area","Description","Page reference","Nearest station","Completion description","Comment" + # based on qm.csv in trunk/expoweb/1623/204 which has the fields: + # "Number","Grade","Area","Description","Page reference","Nearest station","Completion description","Comment" found_by = models.ForeignKey(LogbookEntry, related_name='QMs_found',blank=True, null=True ) ticked_off_by = models.ForeignKey(LogbookEntry, related_name='QMs_ticked_off',null=True,blank=True) - #cave = models.ForeignKey(Cave) - #expedition = models.ForeignKey(Expedition) + # cave = models.ForeignKey(Cave) + # expedition = models.ForeignKey(Expedition) number = models.IntegerField(help_text="this is the sequential number in the year", ) GRADE_CHOICES=( - ('A', 'A: Large obvious lead'), - ('B', 'B: Average lead'), - ('C', 'C: Tight unpromising lead'), - ('D', 'D: Dig'), - ('X', 'X: Unclimbable aven') + ('A', 'A: Large obvious lead'), + ('B', 'B: Average lead'), + ('C', 'C: Tight unpromising lead'), + ('D', 'D: Dig'), + ('X', 'X: Unclimbable aven') ) grade = models.CharField(max_length=1, choices=GRADE_CHOICES) location_description = models.TextField(blank=True) @@ -767,11 +769,19 @@ class QM(TroggleModel): return u"%s %s" % (self.code(), self.grade) def code(self): - return u"%s-%s-%s" % (unicode(self.found_by.cave)[6:], self.found_by.date.year, self.number) + if self.found_by: + # Old style QMs where found_by is a logbook entry + return u"%s-%s-%s" % (unicode(self.found_by.cave)[6:], self.found_by.date.year, self.number) + elif self.nearest_station: + # New style QMs where QMs are stored in SVX files and nearest station is a forigin key + return u"%s-%s-%s" % (self.nearest_station.block.name, self.nearest_station.name, self.number) + else: + # Just give up!! + return u"%s" % (self.number) def get_absolute_url(self): #return settings.URL_ROOT + '/cave/' + self.found_by.cave.kataster_number + '/' + str(self.found_by.date.year) + '-' + '%02d' %self.number - return urlparse.urljoin(settings.URL_ROOT, reverse('qm',kwargs={'cave_id':self.found_by.cave.kataster_number,'year':self.found_by.date.year,'qm_id':self.number,'grade':self.grade})) + return urlparse.urljoin(settings.URL_ROOT, reverse('qm',kwargs={'qm_id':self.id})) def get_next_by_id(self): return QM.objects.get(id=self.id+1) |