Added cached readonly field "address" to traveler to allow search functionally and reduce database lookups
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user