mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-18 08:27:13 +00:00
First attempts at reforming the FirstnameSurname parsing
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import re
|
||||
|
||||
from django.db.models import Q
|
||||
from django.shortcuts import render
|
||||
from django.views.generic.list import ListView
|
||||
@@ -151,6 +153,35 @@ class QMs_jsonListView(ListView):
|
||||
template_name = "core/QMs_json_list.html"
|
||||
model = QM
|
||||
|
||||
rx_person = re.compile(r"(?i)^(([A-Z]*[a-z\-\'&;]*)[^a-zA-Z]*)([a-z\-\']*[^a-zA-Z]*[\-]*[A-Z]*[a-zA-Z\-&;]*)$")
|
||||
rx_simple_person = re.compile(r"^([A-Z][a-z]*)[ ]*([A-Z][a-z]*)$")
|
||||
|
||||
def better_person(request, name=""):
|
||||
"""Attempting to replace the name parser in urls.py with a more complex but
|
||||
more understandable one in the body of the code.
|
||||
Unfortuantely the get_absolute_url Django funny is making life very difficult.
|
||||
This is in models/troggle.py PersonExpedition and Person
|
||||
We need a defined slug for a person, however complicated their name, before we can progress further, if we
|
||||
insist on using get_absolute_url().
|
||||
|
||||
Probably simpler and clearer to maintainers NOT to use ANY get_absolute_url() in the templates.
|
||||
"""
|
||||
names = rx_simple_person.match(name.strip(" /"))
|
||||
if names:
|
||||
first_name = names.group(1)
|
||||
last_name = names.group(2)
|
||||
else:
|
||||
message = f"Name not recognised '{name}' - possibly French? (See our <a href=\"/handbook/troggle/namesredesign.html\">Proposal to fix this</a>)"
|
||||
return render(request, "errors/generic.html", {"message": message})
|
||||
|
||||
try:
|
||||
this_person = Person.objects.get(first_name=first_name, last_name=last_name)
|
||||
except:
|
||||
message = f"Person not found {name} => '{first_name} {last_name}' - possibly Scottish? (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})
|
||||
|
||||
def person(
|
||||
request,
|
||||
first_name="",
|
||||
|
||||
Reference in New Issue
Block a user