Fixed QM report for survex-imported QMs

This commit is contained in:
Philip Sargent
2022-07-05 20:24:51 +03:00
parent 96101252bd
commit 2bd617b543
6 changed files with 65 additions and 21 deletions

View File

@@ -12,7 +12,7 @@ from django.utils.timezone import get_current_timezone
from django.utils.timezone import make_aware
import troggle.settings as settings
from troggle.core.models.caves import Entrance, QM
from troggle.core.models.caves import Entrance, QM, LogbookEntry
from troggle.core.utils import get_process_memory, chaosmonkey
from troggle.parsers.people import GetPersonExpeditionNameLookup
from troggle.parsers.logbooks import GetCaveLookup
@@ -529,13 +529,44 @@ class LoadingSurvex():
# NB none of the SurveyStations are in the DB now, so if we want to link to aSurvexStation
# we would have to create one. But that is not obligatory and no QMs loaded from CSVs have one
# Older troggle/CSV assumes a logbook entry 'found_by' for each QM, with a date.
# We have a date from the survexfile. This is needed for the absolute_url resolution..
# We don't know if the survexfile has an associated logbook entry as there is no direct link
# so we create a dummy one anyway. We should make logbook entry links optional in QMs in future and
# remove this hack.
qmyear = str(survexblock.date)[:4]
logslug = f'DUM_{int(qmyear)}_{int(qm_no):03d}'
if survexblock.survexfile.cave:
caveslug = survexblock.survexfile.cave.slug()
place = survexblock.survexfile.cave
else:
caveslug = "ugh"
place = "oops"
message = f' ! - logbook dummy "{logslug}" {str(survexblock.date)[:11]} for cave "{caveslug}" created.'
placeholder, hadToCreate = LogbookEntry.objects.get_or_create(date__year=qmyear,
place=place,
title="placeholder for survex QM",
text=message,
entry_type="DUMMY",
expedition_id=1,
defaults={"date": survexblock.date,"cave_slug":caveslug, "slug": logslug})
print(insp+message)
DataIssue.objects.create(parser='survex', message=message)
try:
qm = QM.objects.create(number=qm_no,
# nearest_station=a_survex_station_object, # can be null
nearest_station_description=qm_resolve_station,
nearest_station_name=qm_nearest,
grade=qm_grade.upper(),
location_description=qm_notes)
location_description=qm_notes,
found_by = placeholder,
cave = survexblock.survexfile.cave)
qm.save
# message = " ! QM{} '{}' CREATED in DB in '{}'".format(qm_no, qm_nearest,survexblock.survexfile.path)
# print(insp+message)