Added signal for traveller updates
Added contact emails to family inline
This commit is contained in:
@@ -86,11 +86,6 @@ class Traveller(models.Model):
|
||||
def __str__(self):
|
||||
return f"{self.first_name} {self.last_name}"
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
self._update_active_status()
|
||||
self._repopulate_address()
|
||||
super(Traveller, self).save(*args, **kwargs)
|
||||
|
||||
def _is_active(self, date=None):
|
||||
if date is None:
|
||||
today = datetime.today()
|
||||
@@ -104,22 +99,23 @@ class Traveller(models.Model):
|
||||
end_date = datetime(self.travel_end_date.year, self.travel_end_date.month, self.travel_end_date.day)
|
||||
return end_date >= date
|
||||
|
||||
def _update_active_status(self):
|
||||
new_start_date = None
|
||||
new_end_date = None
|
||||
def recalculate_travel_dates(self):
|
||||
routes = TravellerRoute.objects.filter(traveller=self)
|
||||
|
||||
for travellerRoute in TravellerRoute.objects.filter(traveller=self.id):
|
||||
route_start = travellerRoute.travel_start_date
|
||||
route_end = travellerRoute.travel_end_date
|
||||
if route_start is not None:
|
||||
if new_start_date is None or new_start_date > route_start:
|
||||
new_start_date = route_start
|
||||
if route_end is not None:
|
||||
if new_end_date is None or new_end_date < route_end:
|
||||
new_end_date = route_end
|
||||
new_start = None
|
||||
new_end = None
|
||||
|
||||
self.travel_start_date = new_start_date
|
||||
self.travel_end_date = new_end_date
|
||||
for route in routes:
|
||||
if route.travel_start_date:
|
||||
if new_start is None or route.travel_start_date < new_start:
|
||||
new_start = route.travel_start_date
|
||||
|
||||
if route.travel_end_date:
|
||||
if new_end is None or route.travel_end_date > new_end:
|
||||
new_end = route.travel_end_date
|
||||
|
||||
self.travel_start_date = new_start
|
||||
self.travel_end_date = new_end
|
||||
self.is_active = self._is_active()
|
||||
|
||||
def fare_paying(self):
|
||||
@@ -139,15 +135,14 @@ class Traveller(models.Model):
|
||||
stops = 1
|
||||
return f"${round(cost*stops)}"
|
||||
|
||||
def _repopulate_address(self):
|
||||
families = self.get_families()
|
||||
if families.count() == 0:
|
||||
self.address = ""
|
||||
elif families.count() == 1:
|
||||
family = families.first()
|
||||
self.address = f"{family.residential_address} {family.residential_suburb}"
|
||||
else:
|
||||
self.address = "Multiple"
|
||||
def update_address_from_families(self):
|
||||
addresses = {
|
||||
str(f.location)
|
||||
for f in self.get_families()
|
||||
if f.location
|
||||
}
|
||||
|
||||
self.address = " | ".join(sorted(addresses)) if addresses else ""
|
||||
|
||||
def get_families(self):
|
||||
return Family.objects.filter(traveller__id__exact=self.id)
|
||||
|
||||
Reference in New Issue
Block a user