diff --git a/tjdests/apps/authentication/migrations/0012_user_preferred_name.py b/tjdests/apps/authentication/migrations/0012_user_preferred_name.py new file mode 100644 index 0000000..3e6fb55 --- /dev/null +++ b/tjdests/apps/authentication/migrations/0012_user_preferred_name.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-02-09 22:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentication", "0011_user_use_nickname"), + ] + + operations = [ + migrations.AddField( + model_name="user", + name="preferred_name", + field=models.CharField(blank=True, max_length=30), + ), + ] diff --git a/tjdests/apps/authentication/models.py b/tjdests/apps/authentication/models.py index 7d98f64..a7bcd4d 100644 --- a/tjdests/apps/authentication/models.py +++ b/tjdests/apps/authentication/models.py @@ -40,9 +40,14 @@ class User(AbstractUser): last_modified = models.DateTimeField(auto_now=True) - @property - def preferred_name(self): + preferred_name = models.CharField(max_length=30, blank=True) + + def get_preferred_name(self): return self.nickname if self.nickname and self.use_nickname else self.first_name def __str__(self): return f"{self.preferred_name} {self.last_name}" + + def save(self, *args, **kwargs): + self.preferred_name = self.get_preferred_name() + super().save(*args, **kwargs) diff --git a/tjdests/apps/destinations/views.py b/tjdests/apps/destinations/views.py index 629b3ac..3669737 100644 --- a/tjdests/apps/destinations/views.py +++ b/tjdests/apps/destinations/views.py @@ -27,7 +27,9 @@ class StudentDestinationListView( else: queryset = User.objects.filter(publish_data=True) - queryset = queryset.filter(is_senior=True).order_by("last_name", "first_name") + queryset = queryset.filter(is_senior=True).order_by( + "last_name", "preferred_name" + ) college_id: Optional[str] = self.request.GET.get("college", None) if college_id is not None: