diff options
-rw-r--r-- | core/models/troggle.py | 7 | ||||
-rw-r--r-- | parsers/users.py | 10 |
2 files changed, 13 insertions, 4 deletions
diff --git a/core/models/troggle.py b/core/models/troggle.py index 237247f..6155347 100644 --- a/core/models/troggle.py +++ b/core/models/troggle.py @@ -5,6 +5,7 @@ getcontext().prec = 2 # use 2 significant figures for decimal calculations from django.db import models from django.urls import reverse +from django.contrib.auth.models import User import settings @@ -82,8 +83,10 @@ class Person(TroggleModel): first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) fullname = models.CharField(max_length=200) # display name, but should not be used for lookups - nickname = models.CharField(max_length=200) + nickname = models.CharField(max_length=200, blank=True) slug = models.SlugField(max_length=50, blank=True, null=True) # unique, enforced in code not in db + # no delete cascade. We have users without Persons, and Persons without users + user = models.OneToOneField(User, models.SET_NULL, blank=True, null=True) is_vfho = models.BooleanField( help_text="VFHO is the Vereines für Höhlenkunde in Obersteier, a nearby Austrian caving club.", @@ -92,7 +95,7 @@ class Person(TroggleModel): 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 + orderref = models.CharField(max_length=200, blank=True) # for alphabetic def get_absolute_url(self): # we do not use URL_ROOT any more. diff --git a/parsers/users.py b/parsers/users.py index 29009cf..fe11bdf 100644 --- a/parsers/users.py +++ b/parsers/users.py @@ -8,7 +8,7 @@ from django.conf import settings from django.contrib.auth.models import User from django.db import models -from troggle.core.models.troggle import DataIssue +from troggle.core.models.troggle import DataIssue, Person """This imports the registered troggle users, who are nearly-all, but not quite, Persons. exceptions are "expo" and "expoadmin" which are created by the databaseReset.py import program. @@ -45,7 +45,13 @@ def register_user(u, email, password=None, pwhash=None): print(f" - receated and reset user '{user}'") except Exception as e: print(f"Exception <{e}>\n{len(User.objects.all())} users now in db:\n{User.objects.all()}") - raise + raise + + expoers = Person.objects.filter(slug=u) + if len(expoers) == 1: + person = expoers[0] + person.user = user + person.save() return user def get_encryptor(): |