mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-15 12:27:05 +00:00
Now creating ARGE caves properly
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user