summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/models/troggle.py18
-rw-r--r--core/views/logbooks.py7
-rw-r--r--core/views/scans.py31
3 files changed, 36 insertions, 20 deletions
diff --git a/core/models/troggle.py b/core/models/troggle.py
index 5db2d10..0977f84 100644
--- a/core/models/troggle.py
+++ b/core/models/troggle.py
@@ -80,14 +80,15 @@ class Person(TroggleModel):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
- fullname = models.CharField(max_length=200)
+ fullname = models.CharField(max_length=200) # display name, but should not be used for lookups
nickname = models.CharField(max_length=200)
- slug = models.SlugField(max_length=50, unique=True)
+ slug = models.SlugField(max_length=50, blank=True, null=True) # unique, enforced in code not in db
is_vfho = models.BooleanField(
help_text="VFHO is the Vereines für Höhlenkunde in Obersteier, a nearby Austrian caving club.",
default=False,
)
+ is_guest = models.BooleanField(default=False) # This is per-Person, not per-PersonExpedition
mug_shot = models.CharField(max_length=100, blank=True, null=True)
blurb = models.TextField(blank=True, null=True)
orderref = models.CharField(max_length=200) # for alphabetic
@@ -101,6 +102,7 @@ class Person(TroggleModel):
ordering = ("orderref",) # "Wookey" makes too complex for: ('last_name', 'first_name')
def __str__(self):
+ return self.slug
if self.last_name:
return f"{self.first_name} {self.last_name}"
return self.first_name
@@ -150,7 +152,7 @@ class PersonExpedition(TroggleModel):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
slugfield = models.SlugField(max_length=50, blank=True, null=True) # 2022 to be used in future
- is_guest = models.BooleanField(default=False)
+ # is_guest = models.BooleanField(default=False) # This is per-Person, not per-PersonExpedition
class Meta:
ordering = ("-expedition",)
@@ -162,6 +164,16 @@ class PersonExpedition(TroggleModel):
def get_absolute_url(self):
# we do not use URL_ROOT any more.
+ return(f"/personexpedition/{self.person.slug}/{self.expedition.year}")
+ # why does this hang the system ?
+ return reverse(
+ "personexpedition",
+ kwargs={
+ "slug": self.slug,
+ "year": self.expedition.year,
+ },
+ )
+ # old style, no longer used
return reverse(
"personexpedition",
kwargs={
diff --git a/core/views/logbooks.py b/core/views/logbooks.py
index d9e2192..10a9bee 100644
--- a/core/views/logbooks.py
+++ b/core/views/logbooks.py
@@ -193,6 +193,9 @@ def person(
this_person = Person.objects.get(first_name=first_name, last_name=last_name)
except:
message = f"Person not found '{first_name} {last_name}' - possibly Scottish? (See our <a href=\"/handbook/troggle/namesredesign.html\">Proposal to fix this</a>)"
+ peeps = Person.objects.filter(first_name=first_name, last_name=last_name)
+ if len(peeps) > 1:
+ message = f"Multiple people ({len(peeps)}) with this name '{first_name} {last_name}' - (See our <a href=\"/handbook/troggle/namesredesign.html\">Proposal to fix this</a>)"
return render(request, "errors/generic.html", {"message": message})
return render(request, "person.html", {"person": this_person})
@@ -232,8 +235,8 @@ def get_person_chronology(personexpedition):
return res2
-def personexpedition(request, first_name="", last_name="", year=""):
- person = Person.objects.get(first_name=first_name, last_name=last_name)
+def personexpedition(request, slug="", year=""):
+ person = Person.objects.get(slug=slug)
this_expedition = Expedition.objects.get(year=year)
personexpedition = person.personexpedition_set.get(expedition=this_expedition)
personchronology = get_person_chronology(personexpedition)
diff --git a/core/views/scans.py b/core/views/scans.py
index 8e334bf..7e25862 100644
--- a/core/views/scans.py
+++ b/core/views/scans.py
@@ -142,7 +142,7 @@ def fixsurvextick(w, ticks):
ticks["S"] = w.fixsurvextick(ticks["S"])
-def walletslistperson(request, first_name, last_name):
+def walletslistperson(request, slug):
"""Page which displays a list of all the wallets for a specific person
HORRIBLE linear search through everything. Index and do SQL query properly
"""
@@ -163,20 +163,21 @@ def walletslistperson(request, first_name, last_name):
return manywallets
# print("-walletslistperson")
-
- try:
- if last_name:
- p = Person.objects.get(fullname=f"{first_name} {last_name}")
- else:
- # special Wookey-hack
- p = Person.objects.get(first_name=f"{first_name}")
- except:
- # raise
- return render(
- request,
- "errors/generic.html",
- {"message": f'Unrecognised name of a expo person: "{first_name} {last_name}"'},
- )
+ p = Person.objects.get(slug=slug)
+ # try:
+
+ # if last_name:
+ # p = Person.objects.get(fullname=f"{first_name} {last_name}")
+ # else:
+ # # special Wookey-hack
+ # p = Person.objects.get(first_name=f"{first_name}")
+ # except:
+ # # raise
+ # return render(
+ # request,
+ # "errors/generic.html",
+ # {"message": f'Unrecognised name of a expo person: "{first_name} {last_name}"'},
+ # )
manywallets = tickspersonwallet(p)
expeditions = Expedition.objects.all()