diff options
author | Philip Sargent <philip.sargent@gmail.com> | 2023-08-02 18:23:04 +0300 |
---|---|---|
committer | Philip Sargent <philip.sargent@gmail.com> | 2023-08-02 18:23:04 +0300 |
commit | a0f85454f82698cdb882770ee470e39283ca4b34 (patch) | |
tree | 04b24de8a30667743a0f63a8a09807071f049f5b /core/views/scans.py | |
parent | c76c09fced6005888b6ab9a8433128ff8a6965ab (diff) | |
download | troggle-a0f85454f82698cdb882770ee470e39283ca4b34.tar.gz troggle-a0f85454f82698cdb882770ee470e39283ca4b34.tar.bz2 troggle-a0f85454f82698cdb882770ee470e39283ca4b34.zip |
detecting orphan cave ids and adding to pending list
Diffstat (limited to 'core/views/scans.py')
-rw-r--r-- | core/views/scans.py | 62 |
1 files changed, 50 insertions, 12 deletions
diff --git a/core/views/scans.py b/core/views/scans.py index 83d6ac3..f7abc06 100644 --- a/core/views/scans.py +++ b/core/views/scans.py @@ -12,6 +12,7 @@ from troggle.core.models.wallets import Wallet from troggle.core.models.troggle import DataIssue, Expedition, Person from troggle.core.views.expo import getmimetype from troggle.parsers.survex import set_walletdate +from troggle.parsers.caves import add_cave_to_pending_list # from troggle.parsers.people import GetPersonExpeditionNameLookup # import parsers.surveys @@ -85,8 +86,21 @@ def fillblankpeople(w): # print(f' - {wp=} {nobody=}') populatewallet(w) +def is_cave(id): + Gcavelookup = GetCaveLookup() + id = id.strip("' []'") + if id in Gcavelookup: + return True + else: + print(f" - Failed to find cave object from id <{id}>") + if id.lower() != "unknown" and id != "": + print(f" - adding <{id}> to pendingcaves.txt list") + add_cave_to_pending_list(id) + return False def fillblankothers(w): + """This is on the way to having a many:many relationship between Caves and Wallets + """ if not w.walletdate: set_walletdate(w) @@ -98,14 +112,21 @@ def fillblankothers(w): else: if type(wcaveid) == list: for i in wcaveid: - if i in Gcavelookup: - w.caveobj = Gcavelookup[i] # just sets it to the last one found. nasty. bug waiting to happen - # print(f' - Found cave object from id {wcaveid}') + i = i.strip("' []'") + if is_cave(i): + w.caveobj = Gcavelookup[i] # just sets it to the last one found. nasty. bug waiting to happen + elif wcaveid.find(',') != -1: + # it's a list of cave ids as a string + ids = wcaveid.split(',') + for i in ids: + i = i.strip("' []'") + if is_cave(i): + w.caveobj = Gcavelookup[i] # just sets it to the last one found. nasty. bug waiting to happen else: - if wcaveid in Gcavelookup: - w.caveobj = Gcavelookup[wcaveid] - else: - print(f" - Failed to find cave object from id {wcaveid}") + if is_cave(wcaveid): + w.caveobj = Gcavelookup[wcaveid.strip("' []'")] + + def fixsurvextick(w, ticks): @@ -216,7 +237,7 @@ def walletslistyear(request, year): def cavewallets(request, caveid): """Returns all the wallets for just one cave""" - print("-cavewalletsl") + print("-cavewallets") Gcavelookup = GetCaveLookup() if caveid in Gcavelookup: @@ -233,8 +254,23 @@ def cavewallets(request, caveid): for z in zilchwallets: zcaveid = z.cave() if zcaveid: - cleanid = str(zcaveid).strip("'[]'") - if cleanid in Gcavelookup: + cleanid = str(zcaveid).strip("' []'") + + if cleanid.find(',') != -1: + # it's a list of cave ids + wurl = f"/walletedit/{z.walletname.replace('#',':')}" + message = f" ! In {z.walletname} we do not handle lists of cave ids yet '{cleanid}'" + print(message) + DataIssue.objects.update_or_create(parser="scans", message=message, url=wurl) + + # it's a list of cave ids as a string. Identify any orphan caves hidden here + ids = cleanid.split(',') + for i in ids: + i = i.strip("' []'") + if is_cave(i): + fcave = Gcavelookup[i.strip("' []'")] # just sets it to the last one found. nasty. bug waiting to happen + + elif cleanid in Gcavelookup: fcave = Gcavelookup[cleanid] if str(fcave.slug()) == caveid: # print(f' - Found one ! {z.walletname=} {zcaveid=}') @@ -245,9 +281,10 @@ def cavewallets(request, caveid): pass else: wurl = f"/walletedit/{z.walletname.replace('#',':')}" - message = f" ! In {z.walletname} there is an unrecognised cave name '{cleanid}' (out of {len(Gcavelookup):,} cave names and aliases)" + message = f" ! In {z.walletname} there is an unrecognised cave name '{cleanid}', adding to pending list." print(message) DataIssue.objects.update_or_create(parser="scans", message=message, url=wurl) + add_cave_to_pending_list(cleanid) manywallets = list(set(wallets)) for w in manywallets: @@ -277,7 +314,8 @@ def oldwallet(request, path): def scansingle(request, path, file): - """sends a single binary file to the user for display - browser decides how using mimetype""" + """sends a single binary file to the user for display - browser decides how using mimetype + This is very unsafe""" try: wallet = Wallet.objects.get(walletname=urlunquote(path)) singlescan = SingleScan.objects.get(wallet=wallet, name=file) |