diff options
author | Philip Sargent <philip.sargent@gmail.com> | 2023-02-01 21:31:07 +0000 |
---|---|---|
committer | Philip Sargent <philip.sargent@gmail.com> | 2023-02-01 21:31:07 +0000 |
commit | 5798e8dcd507bc30c12bca7efa92185772bf0eee (patch) | |
tree | 9979281d3ca19151c0b5229d67b7d0e5a8ccfb47 /core/views | |
parent | 5ae37eef8251fd9aa709f50658dc5ed26c19e1aa (diff) | |
download | troggle-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.py | 53 |
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 = { |