summaryrefslogtreecommitdiffstats
path: root/core/models/caves.py
diff options
context:
space:
mode:
Diffstat (limited to 'core/models/caves.py')
-rw-r--r--core/models/caves.py38
1 files changed, 32 insertions, 6 deletions
diff --git a/core/models/caves.py b/core/models/caves.py
index e635023..ea312df 100644
--- a/core/models/caves.py
+++ b/core/models/caves.py
@@ -4,6 +4,7 @@ import datetime
import re
import json
import subprocess
+import operator
from collections import defaultdict
from pathlib import Path
@@ -149,7 +150,21 @@ class Cave(TroggleModel):
return str(self.slug())
def get_QMs(self):
- return QM.objects.filter(cave=self)
+ '''Searches for all QMs that reference this cave. Probably a better Django way to do this
+ '''
+ qms = QM.objects.filter(cave=self).order_by('expoyear', 'block__date') # a QuerySet, see https://docs.djangoproject.com/en/4.0/ref/models/querysets/#order-by
+ return qms # a QuerySet
+ # undated = []
+ # dated = []
+ # qms = QM.objects.filter(cave=self) # a QuerySet
+ # for q in qms:
+ # if q.block:
+ # dated.append(q)
+ # else:
+ # undated.append(q)
+ # sortedqms = sorted(dated, key=operator.attrgetter('block.date')) # sort by date of survexblock the QM was defined in
+ # orderedqms = sorted(undated, key=operator.attrgetter('expoyear')) # sort by date of expoyear
+ # return orderedqms + sortedqms # a list, NOT a QuerySet
# def new_QM_number(self, year=datetime.date.today().year):
@@ -456,8 +471,8 @@ class QM(TroggleModel):
blockname=models.TextField(blank=True,null=True) # NB truncated copy of survexblock name
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 atatched to a logbook entry
- ticked_off_by = models.ForeignKey(LogbookEntry, related_name='QMs_ticked_off',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?!
number = models.IntegerField(help_text="this is the sequential number in the year, only unique for CSV imports", )
GRADE_CHOICES=(
('A', 'A: Large obvious lead'),
@@ -493,9 +508,20 @@ class QM(TroggleModel):
blocknamestr = ""
#return f'{self.cave.slug()[5:]}-{self.expoyear}-{self.blockname}{self.number}{self.grade}'
return f'{cavestr}-{expoyearstr}-{blocknamestr}{self.number}{self.grade}'
-
- def newslug(self):
-
+
+ def get_completion_url(self):
+ '''assumes html file named is in same folder as cave description file
+ '''
+ cd = None
+ if self.completion_description:
+ try:
+ dir = Path(self.cave.url).parent
+ cd = dir / self.completion_description
+ except:
+ cd = None
+ return cd
+
+ def newslug(self):
qmslug = f'{str(self.cave)}-{self.expoyear}-{self.blockname}{self.number}{self.grade}'
return qmslug