summaryrefslogtreecommitdiffstats
path: root/core/models
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@gmail.com>2023-03-17 20:01:52 +0000
committerPhilip Sargent <philip.sargent@gmail.com>2023-03-17 20:01:52 +0000
commit7345e3a3286ebf2771a7c7800c83632cc9930fa1 (patch)
treeff58cd35a20dc382dfa696d2edcf82664fbeba0d /core/models
parentde54576d1131c0f2020dca082499f837ad6c672e (diff)
downloadtroggle-7345e3a3286ebf2771a7c7800c83632cc9930fa1.tar.gz
troggle-7345e3a3286ebf2771a7c7800c83632cc9930fa1.tar.bz2
troggle-7345e3a3286ebf2771a7c7800c83632cc9930fa1.zip
Much QM re-engineering
Diffstat (limited to 'core/models')
-rw-r--r--core/models/caves.py18
-rw-r--r--core/models/logbooks.py35
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)