diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/TESTS/tests_logins.py | 7 | ||||
-rw-r--r-- | core/models/caves.py | 254 | ||||
-rw-r--r-- | core/views/uploads.py | 117 |
3 files changed, 235 insertions, 143 deletions
diff --git a/core/TESTS/tests_logins.py b/core/TESTS/tests_logins.py index c6cf962..0031a00 100644 --- a/core/TESTS/tests_logins.py +++ b/core/TESTS/tests_logins.py @@ -81,6 +81,9 @@ class PostTests(TestCase): def test_scan_upload(self): '''Expect scan upload to wallet to work on any file Need to login first. + + This upload form looks for the cave, so the test fails if the database is not loaded with the cave + identified in the wallet ''' c = self.client from django.contrib.auth.models import User @@ -99,8 +102,8 @@ class PostTests(TestCase): for ph in [ r'test_upload_', r'← 2020#00 →', r'description written', - r'plan not required', - r'Upload scan into wallet']: + r'Plan not required', + r'edit settings or upload a file']: phmatch = re.search(ph, content) self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph +"'") diff --git a/core/models/caves.py b/core/models/caves.py index c6c47de..03d5208 100644 --- a/core/models/caves.py +++ b/core/models/caves.py @@ -574,6 +574,8 @@ def GetCaveLookup(): """lookup function modelled on GetPersonExpeditionNameLookup repeated assignment each call, needs refactoring + Used when parsing wallets contents.json file too in views/uploads.py + Does NOT detect duplicates! Needs fixing. Needs to be a proper funciton that raises an exception if there is a duplicate. OR we could set it to return None if there are duplictes, and require the caller to @@ -609,130 +611,134 @@ def GetCaveLookup(): # and Becka's email of 25 may 2020 on new kataster numbers # These might alse create more duplicate entries, so re-write it to check - Gcavelookup["1987-02"] = Gcavelookup["267"] - Gcavelookup["1990-01"] = Gcavelookup["171"] - Gcavelookup["1990-02"] = Gcavelookup["172"] - Gcavelookup["1990-03"] = Gcavelookup["173"] - Gcavelookup["1990-04"] = Gcavelookup["174"] - Gcavelookup["1990-05"] = Gcavelookup["175"] - Gcavelookup["1990-06"] = Gcavelookup["176"] - Gcavelookup["1990-07"] = Gcavelookup["177"] - Gcavelookup["1990-08"] = Gcavelookup["178"] - Gcavelookup["1990-09"] = Gcavelookup["179"] - Gcavelookup["1990-10"] = Gcavelookup["180"] - Gcavelookup["1990-11"] = Gcavelookup["181"] - Gcavelookup["1990-12"] = Gcavelookup["182"] - Gcavelookup["1990-13"] = Gcavelookup["183"] - Gcavelookup["1990-14"] = Gcavelookup["184"] - Gcavelookup["1990-18"] = Gcavelookup["188"] - Gcavelookup["1990-adam"] = Gcavelookup["225"] - Gcavelookup["1993-01"] = Gcavelookup["200"] - Gcavelookup["1996-02"] = Gcavelookup["224"] - Gcavelookup["1996-03"] = Gcavelookup["223"] - Gcavelookup["1996-04"] = Gcavelookup["222"] - Gcavelookup["1996wk2"] = Gcavelookup["207"] - Gcavelookup["1996wk3"] = Gcavelookup["208"] - Gcavelookup["1996wk5"] = Gcavelookup["219"] - Gcavelookup["1996wk6"] = Gcavelookup["218"] - Gcavelookup["1996wk8"] = Gcavelookup["209"] - Gcavelookup["1996wk11"] = Gcavelookup["268"] - Gcavelookup["96wk11"] = Gcavelookup["268"] - Gcavelookup["1998-01"] = Gcavelookup["201"] - Gcavelookup["1998-03"] = Gcavelookup["210"] - Gcavelookup["1999-03"] = Gcavelookup["204"] - Gcavelookup["1999-04"] = Gcavelookup["230"] - Gcavelookup["1999-10"] = Gcavelookup["162"] - Gcavelookup["1999-bo-01"] = Gcavelookup["205"] - Gcavelookup["1999-ob-01"] = Gcavelookup["205"] - Gcavelookup["1999-ob-03"] = Gcavelookup["226"] - Gcavelookup["1999-ob-04"] = Gcavelookup["227"] - Gcavelookup["2000-01"] = Gcavelookup["231"] - Gcavelookup["2000-03"] = Gcavelookup["214"] - Gcavelookup["2000-04"] = Gcavelookup["220"] - Gcavelookup["2000-05"] = Gcavelookup["215"] - Gcavelookup["2000-06"] = Gcavelookup["216"] - Gcavelookup["2000-07"] = Gcavelookup["217"] - Gcavelookup["2000-09"] = Gcavelookup["234"] - Gcavelookup["2000-aa-01"] = Gcavelookup["250"] - Gcavelookup["2001-04"] = Gcavelookup["239"] - Gcavelookup["2001-05"] = Gcavelookup["243"] - Gcavelookup["2002-01"] = Gcavelookup["249"] - Gcavelookup["2002-02"] = Gcavelookup["234"] - Gcavelookup["2002-04"] = Gcavelookup["242"] - Gcavelookup["2002-05"] = Gcavelookup["294"] - Gcavelookup["2003-01"] = Gcavelookup["256"] - Gcavelookup["2003-02"] = Gcavelookup["248"] - Gcavelookup["2003-03"] = Gcavelookup["247"] - Gcavelookup["2003-04"] = Gcavelookup["241"] - Gcavelookup["2003-05"] = Gcavelookup["246"] - Gcavelookup["2003-06"] = Gcavelookup["161"] - Gcavelookup["2003-08"] = Gcavelookup["240"] - Gcavelookup["2003-09"] = Gcavelookup["245"] - Gcavelookup["2003-10"] = Gcavelookup["244"] - Gcavelookup["2004-01"] = Gcavelookup["269"] - Gcavelookup["2004-03"] = Gcavelookup["270"] - Gcavelookup["2004-11"] = Gcavelookup["251"] - Gcavelookup["2004-12"] = Gcavelookup["161"] - Gcavelookup["2004-15"] = Gcavelookup["253"] - Gcavelookup["2004-19"] = Gcavelookup["254"] - Gcavelookup["2004-20"] = Gcavelookup["255"] - Gcavelookup["2005-04"] = Gcavelookup["204"] - Gcavelookup["2005-05"] = Gcavelookup["264"] - Gcavelookup["2005-07"] = Gcavelookup["257"] - Gcavelookup["2006-08"] = Gcavelookup["285"] - Gcavelookup["2006-09"] = Gcavelookup["298"] - Gcavelookup["2007-71"] = Gcavelookup["271"] - Gcavelookup["2010-01"] = Gcavelookup["263"] - Gcavelookup["2010-03"] = Gcavelookup["293"] - Gcavelookup["2011-01"] = Gcavelookup["292"] - Gcavelookup["2012-dd-05"] = Gcavelookup["286"] - Gcavelookup["2012-ns-13"] = Gcavelookup["292"] - Gcavelookup["2014-neo-01"] = Gcavelookup["273"] - Gcavelookup["2014-sd-01"] = Gcavelookup["274"] - Gcavelookup["2014-ms-14"] = Gcavelookup["287"] - Gcavelookup["2015-mf-06"] = Gcavelookup["288"] - Gcavelookup["2016-jb-01"] = Gcavelookup["289"] - Gcavelookup["2017-pw-01"] = Gcavelookup["277"] - Gcavelookup["2018-dm-07"] = Gcavelookup["359"] # NB this is 1626 - Gcavelookup["2017_cucc_24"] = Gcavelookup["291"] # note _ not - - Gcavelookup["2017_cucc_23"] = Gcavelookup["295"] # note _ not - - Gcavelookup["2017_cucc_28"] = Gcavelookup["290"] # note _ not - - Gcavelookup["bs17"] = Gcavelookup["283"] - - Gcavelookup["1976/b11"] = Gcavelookup["198"] - Gcavelookup["1976/b8"] = Gcavelookup["197"] - Gcavelookup["1976/b9"] = Gcavelookup["190"] - Gcavelookup["b11"] = Gcavelookup["1976/b11"] - Gcavelookup["b8"] = Gcavelookup["1976/b8"] - Gcavelookup["b9"] = Gcavelookup["1976/b9"] - - Gcavelookup["2011-01-bs30"] = Gcavelookup["190"] - Gcavelookup["bs30"] = Gcavelookup["190"] - Gcavelookup["87"] = Gcavelookup["190"] - Gcavelookup["2011-01"] = Gcavelookup["190"] - - Gcavelookup["quarriesd"] = Gcavelookup["2002-08"] - Gcavelookup["2002-x11"] = Gcavelookup["2005-08"] - Gcavelookup["2002-x12"] = Gcavelookup["2005-07"] - Gcavelookup["2002-x13"] = Gcavelookup["2005-06"] - Gcavelookup["2002-x14"] = Gcavelookup["2005-05"] - - Gcavelookup["kh"] = Gcavelookup["161"] - Gcavelookup["161-kh"] = Gcavelookup["161"] - Gcavelookup["204-steinBH"] = Gcavelookup["204"] - Gcavelookup["stonebridge"] = Gcavelookup["204"] - Gcavelookup["hauchhole"] = Gcavelookup["234"] - Gcavelookup["hauch"] = Gcavelookup["234"] - Gcavelookup["234-hauch"] = Gcavelookup["234"] - Gcavelookup["tunnocks"] = Gcavelookup["258"] - Gcavelookup["balcony"] = Gcavelookup["264"] - Gcavelookup["balkon"] = Gcavelookup["264"] - Gcavelookup["fgh"] = Gcavelookup["290"] - Gcavelookup["gsh"] = Gcavelookup["291"] - - Gcavelookup["homecoming"] = Gcavelookup["2018-dm-07"] - Gcavelookup["heimkommen"] = Gcavelookup["2018-dm-07"] - Gcavelookup["99ob02"] = Gcavelookup["1999-ob-02"] + # skip any missing keys as this gets called during tests when the database is not loaded + try: + Gcavelookup["1987-02"] = Gcavelookup["267"] + Gcavelookup["1990-01"] = Gcavelookup["171"] + Gcavelookup["1990-02"] = Gcavelookup["172"] + Gcavelookup["1990-03"] = Gcavelookup["173"] + Gcavelookup["1990-04"] = Gcavelookup["174"] + Gcavelookup["1990-05"] = Gcavelookup["175"] + Gcavelookup["1990-06"] = Gcavelookup["176"] + Gcavelookup["1990-07"] = Gcavelookup["177"] + Gcavelookup["1990-08"] = Gcavelookup["178"] + Gcavelookup["1990-09"] = Gcavelookup["179"] + Gcavelookup["1990-10"] = Gcavelookup["180"] + Gcavelookup["1990-11"] = Gcavelookup["181"] + Gcavelookup["1990-12"] = Gcavelookup["182"] + Gcavelookup["1990-13"] = Gcavelookup["183"] + Gcavelookup["1990-14"] = Gcavelookup["184"] + Gcavelookup["1990-18"] = Gcavelookup["188"] + Gcavelookup["1990-adam"] = Gcavelookup["225"] + Gcavelookup["1993-01"] = Gcavelookup["200"] + Gcavelookup["1996-02"] = Gcavelookup["224"] + Gcavelookup["1996-03"] = Gcavelookup["223"] + Gcavelookup["1996-04"] = Gcavelookup["222"] + Gcavelookup["1996wk2"] = Gcavelookup["207"] + Gcavelookup["1996wk3"] = Gcavelookup["208"] + Gcavelookup["1996wk5"] = Gcavelookup["219"] + Gcavelookup["1996wk6"] = Gcavelookup["218"] + Gcavelookup["1996wk8"] = Gcavelookup["209"] + Gcavelookup["1996wk11"] = Gcavelookup["268"] + Gcavelookup["96wk11"] = Gcavelookup["268"] + Gcavelookup["1998-01"] = Gcavelookup["201"] + Gcavelookup["1998-03"] = Gcavelookup["210"] + Gcavelookup["1999-03"] = Gcavelookup["204"] + Gcavelookup["1999-04"] = Gcavelookup["230"] + Gcavelookup["1999-10"] = Gcavelookup["162"] + Gcavelookup["1999-bo-01"] = Gcavelookup["205"] + Gcavelookup["1999-ob-01"] = Gcavelookup["205"] + Gcavelookup["1999-ob-03"] = Gcavelookup["226"] + Gcavelookup["1999-ob-04"] = Gcavelookup["227"] + Gcavelookup["2000-01"] = Gcavelookup["231"] + Gcavelookup["2000-03"] = Gcavelookup["214"] + Gcavelookup["2000-04"] = Gcavelookup["220"] + Gcavelookup["2000-05"] = Gcavelookup["215"] + Gcavelookup["2000-06"] = Gcavelookup["216"] + Gcavelookup["2000-07"] = Gcavelookup["217"] + Gcavelookup["2000-09"] = Gcavelookup["234"] + Gcavelookup["2000-aa-01"] = Gcavelookup["250"] + Gcavelookup["2001-04"] = Gcavelookup["239"] + Gcavelookup["2001-05"] = Gcavelookup["243"] + Gcavelookup["2002-01"] = Gcavelookup["249"] + Gcavelookup["2002-02"] = Gcavelookup["234"] + Gcavelookup["2002-04"] = Gcavelookup["242"] + Gcavelookup["2002-05"] = Gcavelookup["294"] + Gcavelookup["2003-01"] = Gcavelookup["256"] + Gcavelookup["2003-02"] = Gcavelookup["248"] + Gcavelookup["2003-03"] = Gcavelookup["247"] + Gcavelookup["2003-04"] = Gcavelookup["241"] + Gcavelookup["2003-05"] = Gcavelookup["246"] + Gcavelookup["2003-06"] = Gcavelookup["161"] + Gcavelookup["2003-08"] = Gcavelookup["240"] + Gcavelookup["2003-09"] = Gcavelookup["245"] + Gcavelookup["2003-10"] = Gcavelookup["244"] + Gcavelookup["2004-01"] = Gcavelookup["269"] + Gcavelookup["2004-03"] = Gcavelookup["270"] + Gcavelookup["2004-11"] = Gcavelookup["251"] + Gcavelookup["2004-12"] = Gcavelookup["161"] + Gcavelookup["2004-15"] = Gcavelookup["253"] + Gcavelookup["2004-19"] = Gcavelookup["254"] + Gcavelookup["2004-20"] = Gcavelookup["255"] + Gcavelookup["2005-04"] = Gcavelookup["204"] + Gcavelookup["2005-05"] = Gcavelookup["264"] + Gcavelookup["2005-07"] = Gcavelookup["257"] + Gcavelookup["2006-08"] = Gcavelookup["285"] + Gcavelookup["2006-09"] = Gcavelookup["298"] + Gcavelookup["2007-71"] = Gcavelookup["271"] + Gcavelookup["2010-01"] = Gcavelookup["263"] + Gcavelookup["2010-03"] = Gcavelookup["293"] + Gcavelookup["2011-01"] = Gcavelookup["292"] + Gcavelookup["2012-dd-05"] = Gcavelookup["286"] + Gcavelookup["2012-ns-13"] = Gcavelookup["292"] + Gcavelookup["2014-neo-01"] = Gcavelookup["273"] + Gcavelookup["2014-sd-01"] = Gcavelookup["274"] + Gcavelookup["2014-ms-14"] = Gcavelookup["287"] + Gcavelookup["2015-mf-06"] = Gcavelookup["288"] + Gcavelookup["2016-jb-01"] = Gcavelookup["289"] + Gcavelookup["2017-pw-01"] = Gcavelookup["277"] + Gcavelookup["2018-dm-07"] = Gcavelookup["359"] # NB this is 1626 + Gcavelookup["2017_cucc_24"] = Gcavelookup["291"] # note _ not - + Gcavelookup["2017_cucc_23"] = Gcavelookup["295"] # note _ not - + Gcavelookup["2017_cucc_28"] = Gcavelookup["290"] # note _ not - + Gcavelookup["bs17"] = Gcavelookup["283"] + + Gcavelookup["1976/b11"] = Gcavelookup["198"] + Gcavelookup["1976/b8"] = Gcavelookup["197"] + Gcavelookup["1976/b9"] = Gcavelookup["190"] + Gcavelookup["b11"] = Gcavelookup["1976/b11"] + Gcavelookup["b8"] = Gcavelookup["1976/b8"] + Gcavelookup["b9"] = Gcavelookup["1976/b9"] + + Gcavelookup["2011-01-bs30"] = Gcavelookup["190"] + Gcavelookup["bs30"] = Gcavelookup["190"] + Gcavelookup["87"] = Gcavelookup["190"] + Gcavelookup["2011-01"] = Gcavelookup["190"] + + Gcavelookup["quarriesd"] = Gcavelookup["2002-08"] + Gcavelookup["2002-x11"] = Gcavelookup["2005-08"] + Gcavelookup["2002-x12"] = Gcavelookup["2005-07"] + Gcavelookup["2002-x13"] = Gcavelookup["2005-06"] + Gcavelookup["2002-x14"] = Gcavelookup["2005-05"] + + Gcavelookup["kh"] = Gcavelookup["161"] + Gcavelookup["161-kh"] = Gcavelookup["161"] + Gcavelookup["204-steinBH"] = Gcavelookup["204"] + Gcavelookup["stonebridge"] = Gcavelookup["204"] + Gcavelookup["hauchhole"] = Gcavelookup["234"] + Gcavelookup["hauch"] = Gcavelookup["234"] + Gcavelookup["234-hauch"] = Gcavelookup["234"] + Gcavelookup["tunnocks"] = Gcavelookup["258"] + Gcavelookup["balcony"] = Gcavelookup["264"] + Gcavelookup["balkon"] = Gcavelookup["264"] + Gcavelookup["fgh"] = Gcavelookup["290"] + Gcavelookup["gsh"] = Gcavelookup["291"] + + Gcavelookup["homecoming"] = Gcavelookup["2018-dm-07"] + Gcavelookup["heimkommen"] = Gcavelookup["2018-dm-07"] + Gcavelookup["99ob02"] = Gcavelookup["1999-ob-02"] + except: + pass addmore = {} for id in Gcavelookup: diff --git a/core/views/uploads.py b/core/views/uploads.py index 35166c6..91bed4f 100644 --- a/core/views/uploads.py +++ b/core/views/uploads.py @@ -3,8 +3,10 @@ import subprocess import json import settings import urllib +import operator from pathlib import Path +from functools import reduce from django import forms @@ -15,6 +17,7 @@ from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render from django.template import Context, loader from django.core.files.storage import FileSystemStorage, default_storage +from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned #from troggle import settings @@ -27,6 +30,7 @@ from troggle.core.models.troggle import Expedition, Person, PersonExpedition from troggle.core.models.caves import LogbookEntry, QM, Cave, PersonTrip from troggle.core.models.survex import DrawingFile from troggle.core.views.scans import oldwallet, walletindex +from troggle.core.views.caves import getCave from .auth import login_required_if_public #from django.views.decorators.csrf import ensure_csrf_cookie, csrf_exempt @@ -35,6 +39,10 @@ from .auth import login_required_if_public ''' todo = ''' +- Register uploaded filenames in the Django db without needing to wait for a reset & bulk file import + +- Refactor scanupload() as it contains all the wallets 'complaints' code from the old script wallets.py + - Need to validate uploaded file as being a valid image file, not a dubious script or hack - Write equivalent GPX upload form system, similar to scanupload() but in expofiles/gpslogs/ @@ -47,7 +55,6 @@ todo = ''' - Enable folder creation in dwguploads or as a separate form -- Register uploaded filenames in the Django db without needing to wait for a reset & bulk file import ''' class FilesForm(forms.Form): # not a model-form, just a form-form @@ -91,6 +98,85 @@ xlate = {"url": "description url", "survex": "survex file", } +def get_complaints(complaints, waldata, svxfiles, files): + '''Taken from old script wallets.py and edited to make more comprehensible + Loads the survex files names and processes all complaints + ''' + survex_complaint = "" + + if waldata["survex file"]: + 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 svx in waldata["survex file"]: + svxfiles.append(svx) + if not (Path(settings.SURVEX_DATA) / svx).is_file(): + file_complaint = f"{wallet} Incorrect survex file name in wallet data: {svx} not found in LOSER repo" + complaints.append(file_complaint) + message = f"! {file_complaint}" + print(message) + DataIssue.objects.create(parser='scans', message=message, url=wurl) # set URL to this wallet folder + + if waldata["survex not required"] and waldata["survex file"] != "": + survex_complaint = "Survex is stated as not required and yet there is a survex file!" + if not waldata["survex not required"] and waldata["survex file"] == "": + survex_complaint = "A survex file is required, but has not been specified!" + if survex_complaint: + complaints.append(survex_complaint) + + # Notes required + if not waldata["electronic survey"]: + notes_scanned = reduce(operator.or_, [f.startswith("note") for f in files], False) + notes_scanned = reduce(operator.or_, [f.endswith("note") for f in files], notes_scanned) + if not notes_scanned: + complaints.append("The notes needs scanning (or renaming): no noteNN.jpg or XXnote.jpg file found; and this is not an electronic survey.") + + # Plan drawing required + plan_scanned = reduce(operator.or_, [f.startswith("plan") for f in files], False) + plan_scanned = reduce(operator.or_, [f.endswith("plan") for f in files], plan_scanned) + plan_drawing_required = not (plan_scanned or waldata["plan drawn"] or waldata["plan not required"]) + if plan_drawing_required: + complaints.append("The plan needs drawing (or renaming, or tick 'Plan drawn' checkbox or 'Plan not required' checkbox): no planNN.jpg or XXplan.jpg file found.") + + # Elev drawing required + elev_scanned = reduce(operator.or_, [f.startswith("elev") for f in files], False) + elev_scanned = reduce(operator.or_, [f.endswith("elev") for f in files], elev_scanned) + elev_drawing_required = not (elev_scanned or waldata["elev drawn"] or waldata["elev not required"]) + if elev_drawing_required: + complaints.append("The elevation needs drawing (or renaming, or tick 'Elev drawn' checkbox or 'Elev not required' checkbox): no elevNN.jpg or XXelev.jpg file found.") + + # Electronic Surveys + if not waldata["electronic survey"]: + if elev_drawing_required or plan_drawing_required: + complaints.append("Tunnel or Therion drawing files need drawing. Or if this an electronic survey, please tick the 'Electronic survey' checkbox.") + + # Description + if not waldata["description written"]: + complaints.append("The guidebook description needs writing into the survex file. Tick the 'Cave description written' checkbox when this is done.") + # QMs + if not waldata["qms written"]: + complaints.append("The QMs needs writing into the survex file. Tick the 'QMs written' checkbox when this is done.") + + + # Website + if not waldata["website updated"]: + complaints.append("The cave description website is marked as needing updating using the guidebook description from the survex file. Tick the 'Website updated' checkbox when this is done.") + + # FInd the cave, if it exists + try: + caveobject = getCave(waldata["cave"]) + print(f'getCave for id "{waldata["cave"]}" {caveobject}') + if not caveobject.url == waldata["description url"]: + complaints.append(f'The URL of cave description \"{waldata["description url"]}\" does not match the one on record for this cave which is: "{caveobject.url}". If the wallet is not for a cave, put a useful URL here.') + except Cave.MultipleObjectsReturned: + complaints.append(f'The cave ID \'{waldata["cave"]}\' is AMBIGUOUS. Please fix it.') + caveobject = None + except ObjectDoesNotExist: + complaints.append(f'The cave ID \'{waldata["cave"]}\' is not recognised. Please fix it.') + caveobject = None + + + return complaints, caveobject + # @login_required_if_public def scanupload(request, path=None): '''Upload scanned image files into a wallet on /expofiles @@ -98,6 +184,9 @@ def scanupload(request, path=None): This does NOT use a Django model linked to a Django form. Just a simple Django form. You will find the Django documentation on forms very confusing, This is simpler. + + This subsumes much of the code which was in the old wallets.py script and so this function is very long + indeed and needs refactoring. ''' filesaved = False actual_saved = [] @@ -270,35 +359,29 @@ def scanupload(request, path=None): if not waldata["description url"]: waldata["description url"]="" if waldata["cave"]: - cave = waldata["cave"] + cave = waldata["cave"] # text string if waldata["name"]: psg = waldata["name"] - if waldata["survex file"]: - #print(f'+++ ${waldata["survex file"]}$ {type(waldata["survex file"])}') - if not type(waldata["survex file"])==list: # a string also is a sequence type, so do it this way - #print(f'+++ NOT A LIST: {waldata["survex file"]} {type(waldata["survex file"])}') - waldata["survex file"] = [waldata["survex file"]] - - for svx in waldata["survex file"]: - svxfiles.append(svx) - if not (Path(settings.SURVEX_DATA) / svx).is_file(): - message = f"! {wallet} Incorrect survex file in wallet data: {svx} not found in LOSER repo" - print(message) - DataIssue.objects.create(parser='scans', message=message, url=wurl) # set URL to this wallet folder + + #Survex and survex complaints + complaints, caveobject = get_complaints([], waldata, svxfiles, files) + for f in checkboxes: if waldata[f]: checked[f] = "checked" - + context = {'year': year, 'prev': prev, 'next': next, 'prevy': prevy, 'nexty': nexty, 'files': files, 'dirs': dirs, 'waldata': waldata, 'svxfiles': svxfiles, 'checked': checked, 'create': create, + 'complaints': complaints, + 'caveobject': caveobject, 'people': waldata["people"], 'peoplesize': str(len(str(waldata["people"]))), 'filesaved': filesaved, 'actual_saved': actual_saved } - return render(request, 'scanuploadform.html', + return render(request, 'walletform.html', {'form': form, 'wallet': wallet, **context, 'date': waldata["date"], 'url': waldata["description url"], 'urlsize': str(len(str(waldata["description url"]))), @@ -312,7 +395,7 @@ def scanupload(request, path=None): 'people': "", 'peoplesize': 12, 'filesaved': filesaved, 'actual_saved': actual_saved } - return render(request, 'scanuploadform.html', + return render(request, 'walletform.html', {'form': form, 'wallet': wallet, **context, 'date': "", 'url': "", 'urlsize': 12, |