summaryrefslogtreecommitdiffstats
path: root/core/models.py
diff options
context:
space:
mode:
authorSam Wenham <sam@wenhams.co.uk>2019-07-19 01:04:18 +0100
committerSam Wenham <sam@wenhams.co.uk>2019-07-19 01:04:18 +0100
commitde22b071b0749fef13ea3c53faaed1adb3191356 (patch)
treefc66284dca70014ee395f6a14f4972ef8addc3e3 /core/models.py
parent08a41941f9e2b35b16548624d5070216dd933f79 (diff)
downloadtroggle-de22b071b0749fef13ea3c53faaed1adb3191356.tar.gz
troggle-de22b071b0749fef13ea3c53faaed1adb3191356.tar.bz2
troggle-de22b071b0749fef13ea3c53faaed1adb3191356.zip
Improve README
Make new style QMs from survexfiles work
Diffstat (limited to 'core/models.py')
-rw-r--r--core/models.py44
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)