diff --git a/core/utils.py b/core/utils.py
index daf48b3..fd85af6 100644
--- a/core/utils.py
+++ b/core/utils.py
@@ -6,11 +6,14 @@ import random
import resource
import string
import subprocess
+from datetime import datetime, timezone
from decimal import getcontext
from pathlib import Path
+from django.contrib.auth.models import User
+
from troggle.core.models.troggle import Expedition
getcontext().prec = 2 # use 2 significant figures for decimal calculations
@@ -89,9 +92,18 @@ def alphabet_suffix(n):
def current_expo():
expos = Expedition.objects.all().order_by('-year')
if expos:
- return expos[0].year
+ year = str(datetime.now(timezone.utc).year)
+ last_expo = expos[0].year
+ if last_expo != year: # create the expo object for the coming year, after Dec.31st
+ coUniqueAttribs = {"year": year}
+ otherAttribs = {"name": f"CUCC expo {year}"}
+ e = Expedition.objects.create(**otherAttribs, **coUniqueAttribs)
+ u = User.objects.get(username='expo')
+ u.current_year = year
+ u.save()
+ return year
else:
- return settings.EPOCH.year
+ return settings.EPOCH.year # this is 1970
def only_commit(fname, message):
"""Only used to commit a survex file edited and saved in view/survex.py"""
diff --git a/core/views/uploads.py b/core/views/uploads.py
index dd5d25d..7265fff 100644
--- a/core/views/uploads.py
+++ b/core/views/uploads.py
@@ -1,5 +1,5 @@
import subprocess
-from datetime import datetime
+from datetime import datetime, timezone
from pathlib import Path
from django import forms
@@ -166,7 +166,7 @@ def logbookedit(request, year=None, slug=None):
try:
expo = Expedition.objects.get(year=year)
except:
- year = current_expo()
+ year = current_expo() # creates new Expedition object if needed
return year
def new_entry_form():
@@ -608,7 +608,8 @@ def photoupload(request, folder=None):
Pending generic file renaming capability more generally.
"""
- year = settings.PHOTOS_YEAR
+ year = current_expo()
+ # year = settings.PHOTOS_YEAR
filesaved = False
actual_saved = []
diff --git a/parsers/logbooks.py b/parsers/logbooks.py
index 892066b..fd03816 100644
--- a/parsers/logbooks.py
+++ b/parsers/logbooks.py
@@ -672,7 +672,7 @@ def LoadLogbooks():
message = " ! - No expeditions found. Attempting to 'people' first"
DataIssue.objects.create(parser="logbooks", message=message)
print(message)
- load_people_expos()
+ load_people_expos() # by loading the folk list
expos = Expedition.objects.all()
if len(expos) <= 1:
message = " ! - No expeditions found, even after attempting to load 'people'. Abort."
diff --git a/parsers/people.py b/parsers/people.py
index fc83be2..dd4d896 100644
--- a/parsers/people.py
+++ b/parsers/people.py
@@ -89,6 +89,13 @@ def load_people_expos():
"""This is where the folk.csv file is parsed to read people's names.
Which it gets wrong for people like Lydia-Clare Leather and various 'von' and 'de' middle 'names'
and McLean and Mclean and McAdam - interaction with the url parser in urls.py too
+
+ This is ALSO where all the Expedition objects get created. So this is the point at which troggle
+ gets told what expeditions exist.
+
+ Given that we need to do stuff for the coming expo, well before we update the folk list,
+ the Expedition object for the coming expo is created elsewhere - in addition to
+ those created here, if it does not exist.
"""
DataIssue.objects.filter(parser="people").delete()
diff --git a/templates/base.html b/templates/base.html
index 636afa4..113b240 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -54,7 +54,7 @@
Wild Survex(2023) |
Wallets(2023) |
Expo(2023) |
- Control panel |
+ Control panel | {{ user.current_year }} |