From b3490aa52d0a7f36bb2675ee8fb5825550684e97 Mon Sep 17 00:00:00 2001 From: Philip Sargent Date: Thu, 14 Mar 2024 19:53:01 +0000 Subject: [PATCH] current year auto --- core/utils.py | 16 ++++++++++++++-- core/views/uploads.py | 7 ++++--- parsers/logbooks.py | 2 +- parsers/people.py | 7 +++++++ templates/base.html | 2 +- 5 files changed, 27 insertions(+), 7 deletions(-) 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 }} |