Moved active status to a database entry apposed to a function
Added settings page Cleaned up rollover page
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user