diff options
Diffstat (limited to 'core/models')
-rw-r--r-- | core/models/caves.py | 18 | ||||
-rw-r--r-- | core/models/logbooks.py | 35 |
2 files changed, 24 insertions, 29 deletions
diff --git a/core/models/caves.py b/core/models/caves.py index 6492698..8b23ceb 100644 --- a/core/models/caves.py +++ b/core/models/caves.py @@ -1,4 +1,5 @@ import os +import os import re from collections import defaultdict from datetime import datetime, timezone @@ -161,14 +162,27 @@ class Cave(TroggleModel): def __str__(self, sep=": "): return str(self.slug()) - def get_QMs(self): + def get_open_QMs(self): """Searches for all QMs that reference this cave.""" # qms = self.qm_set.all().order_by('expoyear', 'block__date') qms = QM.objects.filter(cave=self).order_by( "expoyear", "block__date" ) # a QuerySet, see https://docs.djangoproject.com/en/dev/ref/models/querysets/#order-by - return qms # a QuerySet + qmsopen = qms.filter(ticked=False) + return qmsopen # a QuerySet + def get_ticked_QMs(self): + """Searches for all QMs that reference this cave.""" + qms = QM.objects.filter(cave=self).order_by( + "expoyear", "block__date" + ) + qmticked = qms.filter(ticked=True) + return qmticked # a QuerySet + + def get_QMs(self): + qms = self.get_open_QMs() | self.get_ticked_QMs() # set union operation + return qms # a QuerySet + def kat_area(self): for a in self.area.all(): if a.kat_area(): diff --git a/core/models/logbooks.py b/core/models/logbooks.py index 226f8e5..b594945 100644 --- a/core/models/logbooks.py +++ b/core/models/logbooks.py @@ -144,38 +144,19 @@ class QM(TroggleModel): number = models.IntegerField( help_text="this is the sequential number in the year, only unique for CSV imports", ) + grade = models.CharField(max_length=1, blank=True, null=True, help_text="A/B/C/D/X") cave = models.ForeignKey("Cave", related_name="QMs", blank=True, null=True, on_delete=models.SET_NULL) block = models.ForeignKey("SurvexBlock", null=True, on_delete=models.SET_NULL) # only for QMs from survex files blockname = models.TextField(blank=True, null=True) # NB truncated copy of survexblock name with last char added - expoyear = models.CharField( - max_length=4, blank=True, null=True - ) # could change to datetime if logbooks similarly chnaged - found_by = models.ForeignKey( - LogbookEntry, related_name="QMs_found", blank=True, null=True, on_delete=models.SET_NULL - ) - ticked = models.BooleanField( - default=False - ) # for ticked QMs not attached to a logbook entry, should imply completion_description has text - ticked_off_by = models.ForeignKey( - LogbookEntry, related_name="QMs_ticked_off", blank=True, null=True, on_delete=models.SET_NULL - ) # unused, ever?! - - GRADE_CHOICES = ( - ("A", "A: Large obvious lead"), - ("B", "B: Average lead"), - ("C", "C: Tight unpromising lead"), - ("D", "D: Dig"), - ("X", "X: Unclimbable or horrid"), - ("V", "V: Vertical"), - ) # also seen "?" in imported data - see urls.py - grade = models.CharField(max_length=1, choices=GRADE_CHOICES) + expoyear = models.CharField(max_length=4, blank=True, null=True) + ticked = models.BooleanField(default=False) location_description = models.TextField(blank=True) - nearest_station_description = models.CharField(max_length=400, blank=True, null=True) + completion_description = models.TextField(blank=True) + completion_date = models.DateField(blank=True, null=True) nearest_station_name = models.CharField(max_length=200, blank=True, null=True) resolution_station_name = models.CharField(max_length=200, blank=True, null=True) - nearest_station = models.ForeignKey("SurvexStation", blank=True, null=True, on_delete=models.SET_NULL) area = models.CharField(max_length=100, blank=True, null=True) - completion_description = models.TextField(blank=True, null=True) + page_ref = models.TextField(blank=True, null=True) comment = models.TextField(blank=True, null=True) def __str__(self): @@ -228,8 +209,8 @@ class QM(TroggleModel): ), ) - def get_next_by_id(self): + def get_next_by_id(self): # called in template return QM.objects.get(id=self.id + 1) - def get_previous_by_id(self): + def get_previous_by_id(self): # called in template return QM.objects.get(id=self.id - 1) |