summaryrefslogtreecommitdiffstats
path: root/parsers/caves.py
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@gmail.com>2023-09-10 13:44:06 +0300
committerPhilip Sargent <philip.sargent@gmail.com>2023-09-10 13:44:06 +0300
commitad272fab3b313605f1c9e747a11a1b0d0d5a5473 (patch)
tree84a4849d002fd66831f4da24ff5ab19ea60a18d9 /parsers/caves.py
parent327b1923b06bd4789df7ad0be4976e7d63c3aad5 (diff)
downloadtroggle-ad272fab3b313605f1c9e747a11a1b0d0d5a5473.tar.gz
troggle-ad272fab3b313605f1c9e747a11a1b0d0d5a5473.tar.bz2
troggle-ad272fab3b313605f1c9e747a11a1b0d0d5a5473.zip
Now creating ARGE caves properly
Diffstat (limited to 'parsers/caves.py')
-rw-r--r--parsers/caves.py70
1 files changed, 61 insertions, 9 deletions
diff --git a/parsers/caves.py b/parsers/caves.py
index abeb800..6850a1c 100644
--- a/parsers/caves.py
+++ b/parsers/caves.py
@@ -178,13 +178,67 @@ def create_new_cave(svxpath, msg=None):
cave.save()
return cave
-def do_pending_cave(k, caveid, url, area, msg=None):
+def do_ARGE_cave(slug, caveid, url, area, svxid):
+ """Only called by survex parser.
+ Creates a new Cave object, but with abbreviated data as the survex file (from ARGE) is all we have.
+ We already know the survex file.
+ We already know that it doesn't exist.
+ """
+
+ default_note = "This is an ARGE cave where we only have the survex file and no other information"
+
+ urltest = Cave.objects.filter(url=url)
+ if urltest:
+ message = f" ! Cave {urltest[0]} already exists with this url {url}. Can't create new ARGE cave {slug}"
+ DataIssue.objects.create(parser="caves", message=message, url=url)
+ print(message)
+ return urltest[0]
+
+ numtest = Cave.objects.filter(unofficial_number=caveid.upper())
+ if numtest:
+ message = f" ! Cave {numtest[0]} already exists with this unofficial_number {caveid.upper()}. Can't create new ARGE cave {slug}"
+ DataIssue.objects.create(parser="caves", message=message, url=url)
+ print(message)
+ return numtest[0]
+
+ cave = Cave(
+ unofficial_number=caveid.upper(),
+ underground_description="ARGE cave.",
+ survex_file= f"{svxid}.svx",
+ url=url,
+ notes=default_note,
+ )
+ if cave:
+ cave.save() # must save to have id before foreign keys work. This is also a ManyToMany key.
+ # cave.area.add(area)
+ # cave.save() # crashes entire transaction with foreign key error.
+ # The 'caves' list page uses the area__short_name to select for the area, so these ARGE caves do not appear.
+
+ # message = f" ! {slug:18} ARGE cave url: {url} "
+ # DataIssue.objects.create(parser="caves", message=message, url=url)
+ # print(message)
+
+ try: # Now create a cave slug ID
+ CaveSlug.objects.update_or_create(cave=cave, slug=slug, primary=False)
+ except:
+ message = f" ! {slug:11s} ARGE CaveSLUG create failure {caveid=} {url=} {area=} {svxid=}"
+ DataIssue.objects.create(parser="caves", message=message)
+ print(message)
+ else:
+ message = f" ! {slug:11s} ARGE cave create failure {caveid=} {url=} {area=} {svxid=}"
+ DataIssue.objects.create(parser="caves", message=message)
+ print(message)
+
+ return cave
+
+def do_pending_cave(slug, caveid, url, area, msg=None):
"""
default for a PENDING cave, should be overwritten in the db later if a real cave of the same name exists
in expoweb/cave_data/1623-"k".html
- Note that at this point in importing the data we have not yet seen the survex files, so we can't
+ Note that at this point (parsing caves) in importing the data we have not yet seen the survex files, so we can't
look inside the relevant survex file to find the year and so we con't provide helpful links.
+ This also gets called when parsing survex files, when we do have this info.
"""
def get_survex_file(k):
@@ -222,12 +276,10 @@ def do_pending_cave(k, caveid, url, area, msg=None):
# print(message)
return survex_file
- slug = k
-
g = GetCaveLookup()
with transaction.atomic():
if slug in g:
- message = f" ! {k:18} cave listed in pendingcaves.txt already exists. - {msg}"
+ message = f" ! {slug:18} cave listed in pendingcaves.txt already exists. - {msg}"
DataIssue.objects.create(parser="caves", message=message, url=url)
print(message)
return
@@ -274,7 +326,7 @@ def do_pending_cave(k, caveid, url, area, msg=None):
print(message)
return urltest[0]
- survex_file = get_survex_file(k)
+ survex_file = get_survex_file(slug)
cave = Cave(
unofficial_number=caveid.upper(),
@@ -287,18 +339,18 @@ def do_pending_cave(k, caveid, url, area, msg=None):
cave.save() # must save to have id before foreign keys work. This is also a ManyToMany key.
cave.area.add(area)
cave.save()
- message = f" ! {k:18} Pending cave write-up url: {url} - {msg}"
+ message = f" ! {slug:18} Pending cave write-up url: {url} - {msg}"
DataIssue.objects.create(parser="caves", message=message, url=url)
print(message)
try: # Now create a cave slug ID
CaveSlug.objects.update_or_create(cave=cave, slug=slug, primary=False)
except:
- message = f" ! {k:11s} PENDING CaveSLUG {slug} create failure - {msg}"
+ message = f" ! {slug:11s} PENDING CaveSLUG {slug} create failure - {msg}"
DataIssue.objects.create(parser="caves", message=message)
print(message)
else:
- message = f" ! {k:11s} PENDING cave create failure - {msg}"
+ message = f" ! {slug:11s} PENDING cave create failure - {msg}"
DataIssue.objects.create(parser="caves", message=message)
print(message)