summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@gmail.com>2023-12-23 18:37:20 +0000
committerPhilip Sargent <philip.sargent@gmail.com>2023-12-23 18:37:20 +0000
commit96b034d026422ae9b92925f7e5a0c4e709eb13d6 (patch)
tree4838b9129ef33c3e3bb839ae37af2b661f5b0f0b /core
parentebfab4da4540f99581aa6dfc339929c1df257128 (diff)
downloadtroggle-96b034d026422ae9b92925f7e5a0c4e709eb13d6.tar.gz
troggle-96b034d026422ae9b92925f7e5a0c4e709eb13d6.tar.bz2
troggle-96b034d026422ae9b92925f7e5a0c4e709eb13d6.zip
enhancing list of wallets on cave description page
Diffstat (limited to 'core')
-rw-r--r--core/models/caves.py14
-rw-r--r--core/models/wallets.py7
-rw-r--r--core/views/caves.py20
3 files changed, 25 insertions, 16 deletions
diff --git a/core/models/caves.py b/core/models/caves.py
index 3193f2b..b3f6dfe 100644
--- a/core/models/caves.py
+++ b/core/models/caves.py
@@ -62,6 +62,20 @@ class CaveAndEntrance(models.Model):
# class CaveSlug(models.Model):
# moved to models/logbooks.py to avoid cyclic import problem. No I don't know why either.
+def get_cave_leniently(caveid):
+ try:
+ c = getCave(caveid)
+ if c:
+ return c
+ except:
+ # print(f"get_cave_leniently FAIL {caveid}")
+ try:
+ c = getCave("1623-"+caveid)
+ if c:
+ return c
+ except:
+ return None
+
class Cave(TroggleModel):
# (far) too much here perhaps,
areacode = models.CharField(max_length=4, blank=True, null=True) # could use models.IntegerChoices
diff --git a/core/models/wallets.py b/core/models/wallets.py
index 3078e2d..0382adb 100644
--- a/core/models/wallets.py
+++ b/core/models/wallets.py
@@ -11,7 +11,7 @@ from django.db import models
from django.urls import reverse
from troggle.core.models.troggle import DataIssue
-from troggle.core.views.caves import get_cave_leniently
+from troggle.core.models.caves import get_cave_leniently
# from troggle.core.models.survex import SurvexBlock
# from troggle.core.models.troggle import DataIssue # circular import. Hmm
@@ -133,6 +133,9 @@ class Wallet(models.Model):
# we do not use URL_ROOT any more.
return reverse("singlewallet", kwargs={"path": re.sub("#", "%23", self.walletname)})
+ def get_url(self):
+ return f"/walletedit/{self.walletname}".replace('#', ':')
+
def get_json(self):
"""Read the JSON file for the wallet and do stuff
Do it every time it is queried, to be sure the result is fresh.. well, no.
@@ -150,7 +153,7 @@ class Wallet(models.Model):
fp = Path(self.fpath)
wname = fp.name
wyear = fp.parent.name
- wurl = f"/walletedit/{self.walletname}".replace('#', ':')
+ wurl = self.get_url()
if len(wyear) != 4 or len(wname) !=6:
# no contents.json for old-style wallets
diff --git a/core/views/caves.py b/core/views/caves.py
index 0811567..d71749c 100644
--- a/core/views/caves.py
+++ b/core/views/caves.py
@@ -15,8 +15,9 @@ from django.urls import NoReverseMatch, reverse
import troggle.settings as settings
from troggle.core.forms import CaveAndEntranceFormSet, CaveForm, EntranceForm, EntranceLetterForm
-from troggle.core.models.caves import Cave, CaveAndEntrance, Entrance, GetCaveLookup
+from troggle.core.models.caves import Cave, CaveAndEntrance, Entrance, GetCaveLookup, get_cave_leniently
from troggle.core.models.logbooks import CaveSlug, QM
+from troggle.core.models.wallets import Wallet
from troggle.core.utils import write_and_commit
from troggle.core.views import expo
from troggle.settings import CAVEDESCRIPTIONS, ENTRANCEDESCRIPTIONS
@@ -40,19 +41,7 @@ todo = """
https://zerotobyte.com/how-to-use-django-select-related-and-prefetch-related/
"""
-def get_cave_leniently(caveid):
- try:
- c = getCave(caveid)
- if c:
- return c
- except:
- # print(f"get_cave_leniently FAIL {caveid}")
- try:
- c = getCave("1623-"+caveid)
- if c:
- return c
- except:
- return None
+
def getCaves(cave_id):
@@ -294,6 +283,8 @@ def rendercave(request, cave, slug, cave_id=""):
# see design docum in troggle/templates/cave.html
# see rendercave() in troggle/core/views/caves.py
templatefile = "cave.html"
+
+ wallets = Wallet.objects.filter(caves=cave)
if not cave_id:
cave_id = slug # cave.unofficial_number
@@ -305,6 +296,7 @@ def rendercave(request, cave, slug, cave_id=""):
"cave_id": cave_id,
"svxstem": str(svxstem),
"svx3d": svx3d,
+ "wallets": wallets,
}
# Do not catch any exceptions here: propagate up to caller