diff --git a/busManager/coord/models.py b/busManager/coord/models.py index 22d1dec..ac6d82c 100644 --- a/busManager/coord/models.py +++ b/busManager/coord/models.py @@ -112,11 +112,7 @@ class Shuttle(models.Model): return f"{self.school.shortName} <-> {self.bus.route_name}{custom_name}" def traveller_count(self): - count = 0 - for traveller in Traveller.objects.filter(shuttle=self, is_archived=False): - if traveller._is_active(): - count += 1 - return count + return Traveller.objects.filter(shuttle=self, is_active=True).count() class Driver(models.Model): @@ -260,21 +256,35 @@ class Traveller(models.Model): return end_date >= today def update_active_status(self): - self.travel_start_date = None - self.travel_end_date = None + new_start_date = None + new_end_date = None + for travellerRoute in TravellerRoute.objects.filter(traveller=self): route_start = travellerRoute.travel_start_date print(route_start) route_end = travellerRoute.travel_end_date if route_start is not None: - if self.travel_start_date is None or self.travel_start_date > route_start: - self.travel_start_date = route_start + if new_start_date is None or new_start_date > route_start: + new_start_date = route_start if route_end is not None: - if self.travel_end_date is None or self.travel_end_date < route_end: - self.travel_end_date = route_end + if new_end_date is None or new_end_date < route_end: + new_end_date = route_end - self.is_active = self._is_active() - self.save() + updated = False + if self.travel_start_date != new_start_date: + self.travel_start_date = new_start_date + updated = True + if self.travel_end_date != new_end_date: + self.travel_end_date = new_end_date + updated = True + + is_active = self._is_active() + if self.is_active != is_active: + self.is_active = is_active + updated = True + + if updated: + self.save() def fare_paying(self): if self.eligibility_status != "2": diff --git a/busManager/coord/scheduled_tasks.py b/busManager/coord/scheduled_tasks.py index eadcb90..a264b3d 100644 --- a/busManager/coord/scheduled_tasks.py +++ b/busManager/coord/scheduled_tasks.py @@ -1,8 +1,6 @@ -from coord.models import TravellerRoute +from coord.models import Traveller -def copy_travel_dates(): - for Route in TravellerRoute.objects.all(): - Route.travel_start_date = Route.traveller.travel_start_date - Route.travel_end_date = Route.traveller.travel_end_date - Route.save() +def nightly_check_active_status(): + for traveller in Traveller.objects.all(): + traveller.update_active_status() diff --git a/busManager/coord/templates/admin/settings_index.html b/busManager/coord/templates/admin/settings_index.html index 74395f6..b766ec3 100644 --- a/busManager/coord/templates/admin/settings_index.html +++ b/busManager/coord/templates/admin/settings_index.html @@ -1,7 +1,7 @@ {% extends "admin/base_site.html" %} {% block content %} -
Run nightly task
+
Run nightly task