From 69fb6f8ca8f20ee8c2c2b33b51af71fa77521709 Mon Sep 17 00:00:00 2001 From: Shreyas Mayya <2022smayya@tjhsst.edu> Date: Wed, 9 Feb 2022 17:14:23 -0500 Subject: [PATCH] fix(destinations): sort properly by preferred name --- .../migrations/0012_user_preferred_name.py | 18 ++++++++++++++++++ tjdests/apps/authentication/models.py | 9 +++++++-- tjdests/apps/destinations/views.py | 4 +++- 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 tjdests/apps/authentication/migrations/0012_user_preferred_name.py 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: