mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-17 14:07:07 +00:00
Signup adds person to current expedition
This commit is contained in:
@@ -8,7 +8,8 @@ from django.shortcuts import redirect, render
|
|||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
import troggle.settings as settings
|
import troggle.settings as settings
|
||||||
from troggle.core.models.troggle import DataIssue, Person
|
from troggle.core.models.troggle import DataIssue, Person, PersonExpedition
|
||||||
|
from troggle.core.models.logbooks import Expedition
|
||||||
from troggle.core.views.editor_helpers import HTMLarea
|
from troggle.core.views.editor_helpers import HTMLarea
|
||||||
from troggle.core.utils import (
|
from troggle.core.utils import (
|
||||||
COOKIE_MAX_AGE,
|
COOKIE_MAX_AGE,
|
||||||
@@ -51,7 +52,7 @@ def signupok(request):
|
|||||||
|
|
||||||
|
|
||||||
def signup(request):
|
def signup(request):
|
||||||
"""Display and processes the applicant signup form for the forthcoming expo
|
"""Displays and processes the applicant signup form for the forthcoming expo
|
||||||
The user must be logged-on as a personal login and that is
|
The user must be logged-on as a personal login and that is
|
||||||
who is being signed up. You can't signup someone else.
|
who is being signed up. You can't signup someone else.
|
||||||
"""
|
"""
|
||||||
@@ -85,6 +86,7 @@ def signup(request):
|
|||||||
if pageform.is_valid():
|
if pageform.is_valid():
|
||||||
clean = pageform.cleaned_data
|
clean = pageform.cleaned_data
|
||||||
print(f" # Signup form OK {clean['name']}")
|
print(f" # Signup form OK {clean['name']}")
|
||||||
|
register_on_expo(signup_person)
|
||||||
save_signups(editor, signup_person.slug, clean)
|
save_signups(editor, signup_person.slug, clean)
|
||||||
return HttpResponseRedirect("/signupok")
|
return HttpResponseRedirect("/signupok")
|
||||||
|
|
||||||
@@ -123,8 +125,14 @@ def signup(request):
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def register_on_expo(signup_person):
|
||||||
|
signup = PersonExpedition(person=signup_person, expedition=Expedition.objects.get(year=SIGNUP_YEAR))
|
||||||
|
signup.save()
|
||||||
|
|
||||||
def read_signups():
|
def read_signups():
|
||||||
# print(f" + READ signups")
|
# print(f" + READ signups")
|
||||||
|
# This has a big BUG. when it works, it returns a dict with keys such as "philip-sargent"
|
||||||
|
# but the error conditions are returning a dict of dicts
|
||||||
f = get_encryptor()
|
f = get_encryptor()
|
||||||
signups_dir = settings.EXPOWEB / ENCRYPTED_DIR / current_expo()
|
signups_dir = settings.EXPOWEB / ENCRYPTED_DIR / current_expo()
|
||||||
if not signups_dir.is_dir():
|
if not signups_dir.is_dir():
|
||||||
@@ -132,7 +140,7 @@ def read_signups():
|
|||||||
|
|
||||||
signupsfile = signups_dir / SIGNUPS_FILE
|
signupsfile = signups_dir / SIGNUPS_FILE
|
||||||
if not signupsfile.is_file():
|
if not signupsfile.is_file():
|
||||||
return { SIGNEDUP: {} } # dict where e.g. {"philip-sargent": encrypted_form_data, more users etc.}
|
return { "SIGNEDUP": {} } # dict where e.g. {"philip-sargent": encrypted_form_data, more users etc.}
|
||||||
|
|
||||||
with open(signupsfile, 'r', encoding='utf-8') as json_f:
|
with open(signupsfile, 'r', encoding='utf-8') as json_f:
|
||||||
message = ""
|
message = ""
|
||||||
@@ -147,7 +155,7 @@ def read_signups():
|
|||||||
if message:
|
if message:
|
||||||
print(message)
|
print(message)
|
||||||
DataIssue.objects.update_or_create(parser="_signups", message=message, url="") ###########################
|
DataIssue.objects.update_or_create(parser="_signups", message=message, url="") ###########################
|
||||||
return { SIGNEDUP: {} }
|
return { "SIGNEDUP": {} }
|
||||||
signups_dict = signups_single_dict[SIGNEDUP]
|
signups_dict = signups_single_dict[SIGNEDUP]
|
||||||
# print("ALL:",signups_dict)
|
# print("ALL:",signups_dict)
|
||||||
signups_clear ={}
|
signups_clear ={}
|
||||||
@@ -158,6 +166,13 @@ def read_signups():
|
|||||||
|
|
||||||
return signups_clear
|
return signups_clear
|
||||||
|
|
||||||
|
# def is_signedup(person):
|
||||||
|
# signups_clear = read_signups()
|
||||||
|
# print(signups_clear)
|
||||||
|
# if person.slug in signups_clear:
|
||||||
|
# return True
|
||||||
|
# return False
|
||||||
|
|
||||||
|
|
||||||
def save_signups(editor, person_slug, clean):
|
def save_signups(editor, person_slug, clean):
|
||||||
# print(f" + SAVE: Saving all signups")
|
# print(f" + SAVE: Saving all signups")
|
||||||
|
|||||||
@@ -58,11 +58,6 @@ LOGBOOK_PARSER_SETTINGS = {
|
|||||||
LOGBOOKS_DIR = "years" # subfolder of settings.EXPOWEB
|
LOGBOOKS_DIR = "years" # subfolder of settings.EXPOWEB
|
||||||
|
|
||||||
ENTRIES = {
|
ENTRIES = {
|
||||||
"2029": 0,
|
|
||||||
"2028": 0,
|
|
||||||
"2027": 0,
|
|
||||||
"2026": 0,
|
|
||||||
"2025": 0,
|
|
||||||
"2024": 125,
|
"2024": 125,
|
||||||
"2023": 131,
|
"2023": 131,
|
||||||
"2022": 94,
|
"2022": 94,
|
||||||
@@ -106,6 +101,10 @@ ENTRIES = {
|
|||||||
"1979": 30,
|
"1979": 30,
|
||||||
"1978": 38,
|
"1978": 38,
|
||||||
}
|
}
|
||||||
|
for y in range(2025, 2050):
|
||||||
|
y_str = str(y)
|
||||||
|
if y_str not in ENTRIES:
|
||||||
|
ENTRIES[y_str] = 0
|
||||||
# What about 1970s ! Yes, 80 and 81 are missing, so are 1976 and 1977.
|
# What about 1970s ! Yes, 80 and 81 are missing, so are 1976 and 1977.
|
||||||
|
|
||||||
logentries = [] # the entire logbook for one year is a single object: a list of entries
|
logentries = [] # the entire logbook for one year is a single object: a list of entries
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from django.db import models
|
|||||||
from unidecode import unidecode
|
from unidecode import unidecode
|
||||||
|
|
||||||
from troggle.core.models.troggle import DataIssue, Expedition, Person, PersonExpedition
|
from troggle.core.models.troggle import DataIssue, Expedition, Person, PersonExpedition
|
||||||
|
from troggle.core.views.signup import read_signups
|
||||||
|
|
||||||
"""These functions do not match how the stand-alone folk script works. So the script produces an HTML file which has
|
"""These functions do not match how the stand-alone folk script works. So the script produces an HTML file which has
|
||||||
href links to pages in troggle which troggle does not think are right.
|
href links to pages in troggle which troggle does not think are right.
|
||||||
@@ -94,8 +95,6 @@ def troggle_slugify(longname):
|
|||||||
|
|
||||||
def load_people_expos():
|
def load_people_expos():
|
||||||
"""This is where the folk.csv file is parsed to read people's names.
|
"""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
|
This is ALSO where all the Expedition objects get created. So this is the point at which troggle
|
||||||
gets told what expeditions exist.
|
gets told what expeditions exist.
|
||||||
@@ -116,6 +115,7 @@ def load_people_expos():
|
|||||||
if nexpos <= 0:
|
if nexpos <= 0:
|
||||||
print(" - Creating expeditions")
|
print(" - Creating expeditions")
|
||||||
for year in years:
|
for year in years:
|
||||||
|
year = year.strip()
|
||||||
coUniqueAttribs = {"year": year}
|
coUniqueAttribs = {"year": year}
|
||||||
otherAttribs = {"name": f"CUCC expo {year}"}
|
otherAttribs = {"name": f"CUCC expo {year}"}
|
||||||
e = Expedition.objects.create(**otherAttribs, **coUniqueAttribs)
|
e = Expedition.objects.create(**otherAttribs, **coUniqueAttribs)
|
||||||
@@ -176,10 +176,22 @@ def load_people_expos():
|
|||||||
pe = PersonExpedition.objects.create(**coUniqueAttribs)
|
pe = PersonExpedition.objects.create(**coUniqueAttribs)
|
||||||
print("", flush=True)
|
print("", flush=True)
|
||||||
ensure_users_are_persons()
|
ensure_users_are_persons()
|
||||||
|
most_recent = Expedition.objects.all().first()
|
||||||
|
check_new_signups(most_recent)
|
||||||
|
|
||||||
|
def check_new_signups(expedition):
|
||||||
|
signups_clear = read_signups()
|
||||||
|
# print(signups_clear)
|
||||||
|
for slug in signups_clear:
|
||||||
|
print(slug)
|
||||||
|
p = Person.objects.get(slug=slug)
|
||||||
|
pe = PersonExpedition.objects.update_or_create(person=p, expedition=expedition)
|
||||||
|
# print("ADDING ",pe, expedition)
|
||||||
|
|
||||||
|
|
||||||
def ensure_users_are_persons():
|
def ensure_users_are_persons():
|
||||||
# Just ensure this is up to date.
|
# Just ensure this is up to date.
|
||||||
print(f"# ensure_users_are_persons()")
|
print(f"# ensure_users_are_persons() - except for expo and expoadmin of course")
|
||||||
users = User.objects.all()
|
users = User.objects.all()
|
||||||
for u in users:
|
for u in users:
|
||||||
ps = Person.objects.filter(slug=u.username)
|
ps = Person.objects.filter(slug=u.username)
|
||||||
@@ -197,7 +209,6 @@ def who_is_this(year, possibleid):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def when_on_expo(name):
|
def when_on_expo(name):
|
||||||
"""Returns a list of PersonExpedition objects for the string, if recognised as a name
|
"""Returns a list of PersonExpedition objects for the string, if recognised as a name
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user