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}"
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":
+4 -6
View File
@@ -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()
@@ -1,7 +1,7 @@
{% extends "admin/base_site.html" %}
{% 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 class="flex-container">
<label for="id_traveller_term_cost">
+1 -1
View File
@@ -5,6 +5,6 @@ from . import views_settings
app_name = "settings"
urlpatterns = [
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'),
]
+2 -2
View File
@@ -1,7 +1,7 @@
from django.contrib.admin.views.decorators import staff_member_required
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
@@ -23,5 +23,5 @@ def rollover(request):
@staff_member_required
def nightly_task(request):
copy_travel_dates()
nightly_check_active_status()
return redirect('settings:index')