diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/models/troggle.py | 18 | ||||
-rw-r--r-- | core/views/logbooks.py | 7 | ||||
-rw-r--r-- | core/views/scans.py | 31 |
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() |