summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/models/troggle.py7
-rw-r--r--parsers/users.py10
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():