2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2025-12-17 08:07:18 +00:00

New log report by title

This commit is contained in:
2024-07-14 16:01:44 +02:00
parent f4c25ba163
commit 35b04d096e
4 changed files with 130 additions and 1 deletions

View File

@@ -218,6 +218,61 @@ def personexpedition(request, slug="", year=""):
print(msg)
return render(request, "errors/generic.html", {"message": msg})
def logreport(request, year=1999):
"""
Remember that 'personexpedition__expedition' is interpreted by Django to mean the
'expedition' object which is connected by a foreign key to the 'personexpedition'
object, which is a field of the PersonLogEntry object:
PersonLogEntry.objects.filter(personexpedition__expedition=expo)
"""
print(f"logreport(): begun")
expeditions = Expedition.objects.all() # top menu only, evaluated only when template renders
dates = None
dateditems = None
try:
expo = Expedition.objects.get(year=int(year))
except:
message = (
"Expedition not found - database apparently empty, you probably need to do a full re-import of all data."
)
return render(request, "errors/generic.html", {"message": message})
entries = expo.logbookentry_set.all() # lazy list
dateditems = list(entries) # evaluates the Django query and hits db
dates = sorted(set([item.date for item in dateditems]))
try:
for entry in dateditems:
people = PersonLogEntry.objects.filter(logbook_entry=entry)
entry.who = []
for p in people:
if p.is_logbook_entry_author:
entry.author = p
else:
entry.who.append(p)
print(f"logreport(): trying..")
context = {
"year": year,
"expedition": expo,
"expeditions": expeditions,
"settings": settings,
"dateditems": dateditems,
"dates": dates,
}
print(f"logreport(): rendering..")
return render(request, "logreport.html", context)
except Exception as e:
msg = f' Logbook report for year:"{year}" not implemented yet\n{e}\n {context}'
print(msg)
return render(request, "errors/generic.html", {"message": msg})
def logbookentry(request, date, slug):
# start = time.time()