summaryrefslogtreecommitdiffstats
path: root/core/views
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@gmail.com>2023-02-01 21:31:07 +0000
committerPhilip Sargent <philip.sargent@gmail.com>2023-02-01 21:31:07 +0000
commit5798e8dcd507bc30c12bca7efa92185772bf0eee (patch)
tree9979281d3ca19151c0b5229d67b7d0e5a8ccfb47 /core/views
parent5ae37eef8251fd9aa709f50658dc5ed26c19e1aa (diff)
downloadtroggle-5798e8dcd507bc30c12bca7efa92185772bf0eee.tar.gz
troggle-5798e8dcd507bc30c12bca7efa92185772bf0eee.tar.bz2
troggle-5798e8dcd507bc30c12bca7efa92185772bf0eee.zip
make nav cope with missing wallets
Diffstat (limited to 'core/views')
-rw-r--r--core/views/wallets.py53
1 files changed, 46 insertions, 7 deletions
diff --git a/core/views/wallets.py b/core/views/wallets.py
index 0b9f426..12b2e01 100644
--- a/core/views/wallets.py
+++ b/core/views/wallets.py
@@ -309,8 +309,47 @@ def walletedit(request, path=None):
wallet = f"{year}:{wnumber:02d}"
return (None, wallet)
+ def identify_most_recent_wallet(wallet, y):
+ """ Need to find the last wallet of the previous year
+ Has to cope with years when there are no wallets
+ Has to cope with weirdly named imported wallets from 1999 & earlier
+ Has to cope if the 'current' wallet is one that happens to 'not exist' too.
+
+ Frankly this has just become too bizarre and we should devise a quite different
+ navigation system.
+ """
+ current_name = wallet.replace(":","#")
+
+ try:
+ allwallets = Wallet.objects.all().order_by('walletname')
+ previous_wallet = allwallets.first()
+ for w in allwallets:
+ if len(w.walletname) < 5:
+ continue
+ if w.walletname[4] != "#":
+ continue
+
+ if w.walletname == current_name:
+ break
+ if int(w.walletyear.year) >= int(y):
+ break
+ previous_wallet = w
+ name = previous_wallet.walletname
+
+ y = name[:4]
+ prevy = f"{int(y)-1}"
+ n = name[5:]
+ prev = f"{int(n):02d}"
+
+ except:
+ raise
+ prev = f"{int(n):02d}"
+
+ print(prev, prevy, y)
+ return prev, prevy, y
+
def create_nav_links(wallet):
- print(f"--- {wallet} now current")
+ """Find the previous wallet and next wallet and create navigation shortcuts"""
y = wallet[:4]
n = wallet[5:]
nexty = f"{int(y)+1}"
@@ -318,9 +357,9 @@ def walletedit(request, path=None):
next = f"{int(n)+1:02d}"
prev = f"{int(n)-1:02d}"
- if int(n) == 0:
- prev = f"{int(n):02d}"
-
+ if int(n) == 0:
+ prev, prevy, y = identify_most_recent_wallet(wallet, y)
+
return next, nexty, prev, prevy, y
def read_json():
@@ -339,7 +378,7 @@ def walletedit(request, path=None):
DataIssue.objects.create(parser="scans", message=message, url=wurl) # set URL to this wallet folder
raise
else: # no JSON file exists
- print("--- No JSON exists, so creating blank copy")
+ print("--- No JSON exists, so using default copy")
waldata = WALLET_BLANK_JSON.copy()
if not waldata["survex file"]:
try:
@@ -366,7 +405,7 @@ def walletedit(request, path=None):
"""We need a wallet Object so that the django template stuff can find the files"""
try:
w, created = Wallet.objects.get_or_create(walletname=walletname)
- print(f"--- Wallet string {walletname}, wallet object {w} created new?: {created}")
+ # print(f"--- Wallet string {walletname}, wallet object {w} created new?: {created}")
if created:
w.fpath = Path(settings.SCANS_ROOT, walletname[0:4], walletname)
w.save()
@@ -755,7 +794,7 @@ def walletedit(request, path=None):
caveifywallet(thiswallet)
thiswallet.ticks = thiswallet.get_ticks() # the complaints in colour form
# fixsurvextick(thiswallet, thiswallet.ticks)
- print(f"--- {wallet} {thiswallet} walletdate={thiswallet.walletdate} immediately before form render")
+ # print(f"--- {wallet} {thiswallet} walletdate={thiswallet.walletdate} immediately before form render")
except:
thiswallet = None
context = {