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:
+23
-13
@@ -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":
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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'),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
Reference in New Issue
Block a user