From 587ccff50110804cbff356d07c56ecea72ccf1fa Mon Sep 17 00:00:00 2001 From: Philip Sargent Date: Wed, 1 Feb 2023 19:10:46 +0000 Subject: [PATCH] date handling now working for new wallet --- core/models/wallets.py | 4 +++- core/views/wallets.py | 43 ++++++++++++++++++--------------------- templates/walletform.html | 1 - 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/core/models/wallets.py b/core/models/wallets.py index 19eaec5..7c0dea4 100644 --- a/core/models/wallets.py +++ b/core/models/wallets.py @@ -13,6 +13,7 @@ from django.urls import reverse # from troggle.core.models.survex import SurvexBlock # from troggle.core.models.troggle import DataIssue # circular import. Hmm +YEAR_RANGE = (1975, 2050) class Wallet(models.Model): """We do not keep the JSON values in the database, we query them afresh each time, @@ -88,7 +89,8 @@ class Wallet(models.Model): if self.walletname[4] != "#": return None year = int(self.walletname[0:4]) - if year < 1975 or year > 2050: + ymin, ymax = YEAR_RANGE + if year < ymin or year > ymax: return None else: self.walletyear = datetime.date(year, 1, 1) diff --git a/core/views/wallets.py b/core/views/wallets.py index 9779b83..0d8ecd0 100644 --- a/core/views/wallets.py +++ b/core/views/wallets.py @@ -18,7 +18,7 @@ from troggle.core.models.caves import Cave from troggle.core.models.logbooks import LogbookEntry # , PersonLogEntry from troggle.core.models.survex import SurvexBlock, SurvexFile, SurvexPersonRole from troggle.core.models.troggle import DataIssue, Expedition -from troggle.core.models.wallets import Wallet +from troggle.core.models.wallets import Wallet, YEAR_RANGE from troggle.core.views.caves import getCave from troggle.core.views.scans import caveifywallet, oldwallet @@ -125,7 +125,7 @@ def get_complaints(complaints, waldata, svxfiles, files, wallet, wurl): or waldata["people"] == [""] ): complaints.append( - "Someody must have done this. Look in the survex file, or in the logbook entries for this date, for the people who created this data." + "Somebody must have done this. Look in the survex file, or in the logbook entries for this date, for the people who created this data." ) # survex, but get_ticks has already done much of this ?? @@ -298,16 +298,17 @@ def walletedit(request, path=None): if not re.match("(19|20)\d\d[:#]\d\d\d?", wpath): return (None, get_next_empty() ) - if int(year) < 1977: - year = "1977" - if int(year) > 2050: + ymin, ymax = YEAR_RANGE + if int(year) < ymin: + year = str(ymin+2) + if int(year) > ymax: return (None, get_next_empty() ) wallet = f"{year}:{wnumber:02d}" return (None, wallet) def create_nav_links(wallet): - print(f" --- {wallet}") + print(f"--- {wallet} now current") y = wallet[:4] n = wallet[5:] nexty = f"{int(y)+1}" @@ -487,7 +488,7 @@ def walletedit(request, path=None): # print(f'--- {wd["survex file"]} - {type(wd["survex file"])}') save_json(wd) - walletobject = make_wallet(wallet) + walletobject = make_wallet(wallet) # will already exist commit_json(wd) else: @@ -510,10 +511,9 @@ def walletedit(request, path=None): if request.POST['submitbutton']=="Create": w = WALLET_BLANK_JSON.copy() save_json(w) - walletobject = make_wallet(wallet) + walletobject = make_wallet(wallet) # no date set yet commit_json(w) - fresh_wallet = True - + form = FilesForm(request.POST, request.FILES) if form.is_valid(): # print(f'--- FORM walletedit multiple BUT EMPTY METADATA supposedly {WALLET_BLANK_JSON["date"]=}') @@ -537,9 +537,8 @@ def walletedit(request, path=None): save_json(waldata) walletobject = make_wallet(wallet) commit_json(waldata) - fresh_wallet = True else: - print("--- Upload files form invalid") + print("--- Upload files form invalid, which is correct if just created.") # # Not a POST, so a GET starts here. And also control gets here after a POST is processed. # @@ -560,7 +559,8 @@ def walletedit(request, path=None): "(No wallet yet. It would be created if you upload a scan and then save the form with a date.)" ) else: - if fresh_wallet: + # either on GET or on dropping-through after the POST creating a new wallet object: + if Wallet.objects.filter(walletname=wallet).exists(): create = False else: create = True @@ -592,11 +592,6 @@ def walletedit(request, path=None): context = {} if waldata: # should always be true as populated by blank data if json file doesn't exist - # if not type(waldata["people"])==list: - # if waldata["people"][0] == '"': - # waldata["people"] = waldata["people"][1:-1] - # waldata["people"] = list(waldata["people"]) - if ( not waldata["date"] or not waldata["people"] @@ -618,17 +613,16 @@ def walletedit(request, path=None): if not type(waldata["survex file"]) == list: # a string also is a sequence type, so do it this way waldata["survex file"] = [waldata["survex file"]] for svxf in waldata["survex file"]: - print(f" - {svxf=}") if svxf: svx = Path(svxf) if svx.suffix.lower() != ".svx": svx = svx.with_suffix(".svx") f = Path(settings.SURVEX_DATA) / svx if f.is_file(): - path = svx.parent / svx.stem - # print(f' - {path=}') + fpath = svx.parent / svx.stem + # print(f' - {fpath=}') try: - svxfile = SurvexFile.objects.get(path=path) + svxfile = SurvexFile.objects.get(path=fpath) print(f" - {svxfile=}") if svxfile.cave: @@ -721,6 +715,9 @@ def walletedit(request, path=None): samedate = datetime.date.fromisoformat(datestr[:10]) except: samedate = None + walletobject = make_wallet(wallet) + walletobject.walletdate = samedate + walletobject.save() try: thisexpo = Expedition.objects.get(year=int(year)) @@ -755,7 +752,7 @@ def walletedit(request, path=None): caveifywallet(thiswallet) thiswallet.ticks = thiswallet.get_ticks() # the complaints in colour form # fixsurvextick(thiswallet, thiswallet.ticks) - print(thiswallet) + print(f"--- {wallet} {thiswallet} walletdate={thiswallet.walletdate} immediately before form render") except: thiswallet = None context = { diff --git a/templates/walletform.html b/templates/walletform.html index c605a2f..871a895 100644 --- a/templates/walletform.html +++ b/templates/walletform.html @@ -68,7 +68,6 @@ {{ f}}
{% empty %}

<No files in this wallet. > -
Sub-folders here are not supported by troggle in 2022. {% endfor %}