diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/views/logbooks.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/core/views/logbooks.py b/core/views/logbooks.py index 6e207ca..8f7d002 100644 --- a/core/views/logbooks.py +++ b/core/views/logbooks.py @@ -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() |