summaryrefslogtreecommitdiffstats
path: root/core/views/logbooks.py
diff options
context:
space:
mode:
Diffstat (limited to 'core/views/logbooks.py')
-rw-r--r--core/views/logbooks.py35
1 files changed, 34 insertions, 1 deletions
diff --git a/core/views/logbooks.py b/core/views/logbooks.py
index b3f3176..2c15a1e 100644
--- a/core/views/logbooks.py
+++ b/core/views/logbooks.py
@@ -3,9 +3,11 @@ import re
from django.db.models import Q
from django.shortcuts import render
from django.views.generic.list import ListView
+from django.shortcuts import render, redirect
+
import troggle.settings as settings
-from troggle.core.models.logbooks import LogbookEntry, PersonLogEntry, QM
+from troggle.core.models.logbooks import LogbookEntry, PersonLogEntry, QM, writelogbook
from troggle.core.models.survex import SurvexBlock, SurvexFile
from troggle.core.models.troggle import Expedition, Person
from troggle.core.models.wallets import Wallet
@@ -218,6 +220,31 @@ def personexpedition(request, slug="", year=""):
print(msg)
return render(request, "errors/generic.html", {"message": msg})
+def logentrydelete(request, year):
+ """This only gets called by a POST from the logreport page
+
+ The function in memory of James Waite who managed to make so many duplicate logbook entries
+ that we needed a sopecial mechanism to delete them.
+ """
+ eslug = request.POST["entry_slug"]
+ entry = LogbookEntry.objects.get(slug=eslug)
+ # OK we delete it formt he db and then re-save logbook.html file
+ # to ensure that the permanent record also has the entry deleted.
+ entry.delete()
+
+ print(f"- Rewriting the entire {year} logbook to disc ")
+ filename= "logbook.html"
+ try:
+ writelogbook(year, filename) # uses a template
+ except:
+ message = f'! - Logbook saving failed - \n!! Permissions failure ?! on attempting to save file "logbook.html"'
+ print(message)
+ return render(request, "errors/generic.html", {"message": message})
+
+
+ return redirect(f"/logreport/{year}")
+
+
def logreport(request, year=1999):
"""
Remember that 'personexpedition__expedition' is interpreted by Django to mean the
@@ -231,7 +258,12 @@ def logreport(request, year=1999):
expeditions = Expedition.objects.all() # top menu only, evaluated only when template renders
dates = None
dateditems = None
+ logged_in = False
+
+ if request.user.is_superuser: # expoadmin is both .is_staff and ._is_superuser
+ logged_in = True
+
try:
expo = Expedition.objects.get(year=int(year))
@@ -265,6 +297,7 @@ def logreport(request, year=1999):
"settings": settings,
"dateditems": dateditems,
"dates": dates,
+ "logged_in": logged_in,
}
# print(f"logreport(): rendering..")
return render(request, "logreport.html", context)