Added save task to traveller routes to update traveller active status and bulk task designed for morning automated task. Can be run manually from settings page

This commit is contained in:
John Mullins
2023-12-21 17:50:35 +11:00
parent 514171c68b
commit f73b08e989
5 changed files with 31 additions and 23 deletions
+23 -13
View File
@@ -112,11 +112,7 @@ class Shuttle(models.Model):
return f"{self.school.shortName} <-> {self.bus.route_name}{custom_name}" return f"{self.school.shortName} <-> {self.bus.route_name}{custom_name}"
def traveller_count(self): def traveller_count(self):
count = 0 return Traveller.objects.filter(shuttle=self, is_active=True).count()
for traveller in Traveller.objects.filter(shuttle=self, is_archived=False):
if traveller._is_active():
count += 1
return count
class Driver(models.Model): class Driver(models.Model):
@@ -260,21 +256,35 @@ class Traveller(models.Model):
return end_date >= today return end_date >= today
def update_active_status(self): def update_active_status(self):
self.travel_start_date = None new_start_date = None
self.travel_end_date = None new_end_date = None
for travellerRoute in TravellerRoute.objects.filter(traveller=self): for travellerRoute in TravellerRoute.objects.filter(traveller=self):
route_start = travellerRoute.travel_start_date route_start = travellerRoute.travel_start_date
print(route_start) print(route_start)
route_end = travellerRoute.travel_end_date route_end = travellerRoute.travel_end_date
if route_start is not None: if route_start is not None:
if self.travel_start_date is None or self.travel_start_date > route_start: if new_start_date is None or new_start_date > route_start:
self.travel_start_date = route_start new_start_date = route_start
if route_end is not None: if route_end is not None:
if self.travel_end_date is None or self.travel_end_date < route_end: if new_end_date is None or new_end_date < route_end:
self.travel_end_date = route_end new_end_date = route_end
self.is_active = self._is_active() updated = False
self.save() 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): def fare_paying(self):
if self.eligibility_status != "2": if self.eligibility_status != "2":
+4 -6
View File
@@ -1,8 +1,6 @@
from coord.models import TravellerRoute from coord.models import Traveller
def copy_travel_dates(): def nightly_check_active_status():
for Route in TravellerRoute.objects.all(): for traveller in Traveller.objects.all():
Route.travel_start_date = Route.traveller.travel_start_date traveller.update_active_status()
Route.travel_end_date = Route.traveller.travel_end_date
Route.save()
@@ -1,7 +1,7 @@
{% extends "admin/base_site.html" %} {% extends "admin/base_site.html" %}
{% block content %} {% block content %}
<div><a href={% url 'settings:index' %}>Run nightly task</a></div> <div><a href={% url 'settings:nightly_task' %}>Run nightly task</a></div>
<div> <div>
<div class="flex-container"> <div class="flex-container">
<label for="id_traveller_term_cost"> <label for="id_traveller_term_cost">
+1 -1
View File
@@ -5,6 +5,6 @@ from . import views_settings
app_name = "settings" app_name = "settings"
urlpatterns = [ urlpatterns = [
path('rollover', views_settings.rollover, name='rollover'), path('rollover', views_settings.rollover, name='rollover'),
path('nightly_task', views_settings.nightly_task, name='nightly-task'), path('nightly_task', views_settings.nightly_task, name='nightly_task'),
path('', views_settings.settings, name='index'), path('', views_settings.settings, name='index'),
] ]
+2 -2
View File
@@ -1,7 +1,7 @@
from django.contrib.admin.views.decorators import staff_member_required from django.contrib.admin.views.decorators import staff_member_required
from django.shortcuts import render, redirect from django.shortcuts import render, redirect
from coord.scheduled_tasks import copy_travel_dates from coord.scheduled_tasks import nightly_check_active_status
from coord.utils.rollover import RolloverForm, execute_rollover from coord.utils.rollover import RolloverForm, execute_rollover
@@ -23,5 +23,5 @@ def rollover(request):
@staff_member_required @staff_member_required
def nightly_task(request): def nightly_task(request):
copy_travel_dates() nightly_check_active_status()
return redirect('settings:index') return redirect('settings:index')