Moved active status to a database entry apposed to a function

Added settings page
Cleaned up rollover page
This commit is contained in:
John Mullins
2023-12-21 16:14:56 +11:00
parent 1240ab2538
commit 25ddf1edfa
12 changed files with 128 additions and 58 deletions
+34 -9
View File
@@ -87,7 +87,7 @@ class Bus(models.Model):
def traveller_count(self):
count = 0
for traveller in Traveller.objects.filter(bus_stops__bus=self):
if traveller.is_active():
if traveller._is_active():
count += 1
return count
@@ -96,6 +96,9 @@ class Shuttle(models.Model):
bus = models.ForeignKey(Bus, on_delete=models.CASCADE)
school = models.ForeignKey(School, on_delete=models.CASCADE)
custom_name = models.CharField(max_length=10, blank=True)
transfer_school = models.ForeignKey(School, related_name='transfer_school', on_delete=models.CASCADE)
am_service = models.BooleanField(default=True)
pm_service = models.BooleanField(default=True)
class Meta:
ordering = ["school__name"]
@@ -111,7 +114,7 @@ class Shuttle(models.Model):
def traveller_count(self):
count = 0
for traveller in Traveller.objects.filter(shuttle=self, is_archived=False):
if traveller.is_active():
if traveller._is_active():
count += 1
return count
@@ -235,6 +238,7 @@ class Traveller(models.Model):
created_on = models.DateTimeField(auto_now_add=True, blank=True, null=True)
last_edit = models.DateTimeField(auto_now=True, blank=True, null=True)
is_archived = models.BooleanField(default=False, verbose_name="Archived")
is_active = models.BooleanField(default=True, verbose_name='Active')
notes = models.TextField(blank=True, verbose_name='Admin Notes')
shuttle = models.ForeignKey(Shuttle, on_delete=models.SET_NULL, blank=True, null=True)
@@ -244,18 +248,33 @@ class Traveller(models.Model):
def __str__(self):
return f"{self.first_name} {self.last_name}"
def is_active(self):
if self.is_archived:
return False
if not self.travel_start_date:
return False
if datetime(self.travel_start_date.year, self.travel_start_date.month, self.travel_start_date.day) > datetime.today():
def _is_active(self):
today = datetime.today()
today = datetime(today.year, today.month, today.day)
if not self.travel_start_date or datetime(self.travel_start_date.year, self.travel_start_date.month, self.travel_start_date.day) > today:
return False
if not self.travel_end_date:
return True
end_date = datetime(self.travel_end_date.year, self.travel_end_date.month, self.travel_end_date.day)
return end_date > datetime.today()
return end_date >= today
def update_active_status(self):
self.travel_start_date = None
self.travel_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 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
self.is_active = self._is_active()
self.save()
def fare_paying(self):
if self.eligibility_status != "2":
@@ -299,6 +318,8 @@ class Traveller(models.Model):
class TravellerRoute(models.Model):
traveller = models.ForeignKey(Traveller, on_delete=models.CASCADE)
busStop = models.ForeignKey(BusStop, on_delete=models.CASCADE)
travel_start_date = models.DateField(blank=True, null=True)
travel_end_date = models.DateField(blank=True, null=True)
mon_am = models.BooleanField(default=True)
mon_pm = models.BooleanField(default=True)
tue_am = models.BooleanField(default=True)
@@ -314,6 +335,10 @@ class TravellerRoute(models.Model):
def __str__(self):
return f"{self.busStop}"
def save(self, *args, **kwargs):
super(TravellerRoute, self).save(*args, **kwargs)
# self.traveller.update_active_status()
def active_stops(self):
stops = 0
if self.mon_am: