Added cached readonly field "address" to traveler to allow search functionally and reduce database lookups

This commit is contained in:
John Mullins
2024-02-16 18:10:08 +11:00
parent 83d5874155
commit cd022fbf54
3 changed files with 10 additions and 39 deletions
+8 -5
View File
@@ -182,6 +182,7 @@ class Traveller(models.Model):
year_level = models.CharField(max_length=2, choices=YEAR)
bus_stops = models.ManyToManyField(BusStop, through='TravellerRoute', blank=True)
distance_to_school = models.PositiveSmallIntegerField(blank=True, null=True)
address = models.CharField(max_length=100, default="")
travel_start_date = models.DateField(blank=True, null=True)
travel_end_date = models.DateField(blank=True, null=True)
@@ -211,6 +212,7 @@ class Traveller(models.Model):
def save(self, *args, **kwargs):
self._update_active_status()
self._repopulate_address()
super(Traveller, self).save(*args, **kwargs)
def _is_active(self):
@@ -259,14 +261,15 @@ class Traveller(models.Model):
stops = 1
return f"${str(cost * stops)}"
def address(self):
def _repopulate_address(self):
families = Family.objects.filter(traveller__id__exact=self.id)
if families.count() == 0:
return ""
if families.count() == 1:
self.address = ""
elif families.count() == 1:
family = families.first()
return f"{family.residential_address} {family.residential_suburb}"
return "Multiple"
self.address = f"{family.residential_address} {family.residential_suburb}"
else:
self.address = "Multiple"
def get_parsed_numbers(self, parents=False, emergency=False):
return [] # Moved to family model. To remove from traveller model