mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2026-04-02 10:21:01 +01:00
part-way though converting to slugs for people
This commit is contained in:
@@ -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={
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
p = Person.objects.get(slug=slug)
|
||||
# try:
|
||||
|
||||
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}"'},
|
||||
)
|
||||
# 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()
|
||||
|
||||
Reference in New Issue
Block a user