summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@gmail.com>2023-08-02 18:23:04 +0300
committerPhilip Sargent <philip.sargent@gmail.com>2023-08-02 18:23:04 +0300
commita0f85454f82698cdb882770ee470e39283ca4b34 (patch)
tree04b24de8a30667743a0f63a8a09807071f049f5b /core
parentc76c09fced6005888b6ab9a8433128ff8a6965ab (diff)
downloadtroggle-a0f85454f82698cdb882770ee470e39283ca4b34.tar.gz
troggle-a0f85454f82698cdb882770ee470e39283ca4b34.tar.bz2
troggle-a0f85454f82698cdb882770ee470e39283ca4b34.zip
detecting orphan cave ids and adding to pending list
Diffstat (limited to 'core')
-rw-r--r--core/views/scans.py62
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)