From d74290036e45f2e23e92bee67a25f68d9491804b Mon Sep 17 00:00:00 2001 From: John Mullins Date: Fri, 22 Dec 2023 16:50:30 +1100 Subject: [PATCH] Moved where active status is displayed. Cleaned up logout redirects Added suburbs admin page back. Wasn't able to create new suburbs Made active status check to any traveller save function --- busManager/busManager/settings.py | 3 ++- busManager/busManager/urls.py | 4 +--- busManager/coord/admin.py | 8 +++----- busManager/coord/models.py | 28 ++++++++++------------------ busManager/coord/scheduled_tasks.py | 9 +++++++-- busManager/custom_user/urls.py | 2 +- requirements.txt | Bin 418 -> 446 bytes 7 files changed, 24 insertions(+), 30 deletions(-) diff --git a/busManager/busManager/settings.py b/busManager/busManager/settings.py index 6411703..6fa65aa 100644 --- a/busManager/busManager/settings.py +++ b/busManager/busManager/settings.py @@ -67,7 +67,8 @@ MIDDLEWARE = [ if "AZURE_CLIENT_ID" in os.environ: AUTHENTICATION_BACKENDS = ("custom_user.backends.AzureBackend",) MIDDLEWARE.append('custom_user.middleware.AzureMiddleware') - LOGIN_URL = "/azure_auth/login" + LOGIN_URL = "/auth/login" + LOGOUT_REDIRECT_URL = "/auth/logout" AZURE_AUTH = { "CLIENT_ID": os.environ.get('AZURE_CLIENT_ID'), "CLIENT_SECRET": os.environ.get('AZURE_CLIENT_SECRET'), diff --git a/busManager/busManager/urls.py b/busManager/busManager/urls.py index 4f92ea2..88e850c 100644 --- a/busManager/busManager/urls.py +++ b/busManager/busManager/urls.py @@ -14,7 +14,6 @@ Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ -from azure_auth.views import azure_auth_logout from django.contrib import admin from django.urls import path, include @@ -22,8 +21,7 @@ admin.site.site_header = "Bus Portal Admin" urlpatterns = [ path('report/', include("coord.urls")), - path('logout/', azure_auth_logout), - path('auth/', include("azure_auth.urls"),), + path('auth/', include("custom_user.urls")), path('settings/', include('coord.urls_settings')), path('', admin.site.urls), ] diff --git a/busManager/coord/admin.py b/busManager/coord/admin.py index 316f908..96c881a 100644 --- a/busManager/coord/admin.py +++ b/busManager/coord/admin.py @@ -1,14 +1,12 @@ import csv from datetime import date -from django.contrib.admin import DateFieldListFilter, BooleanFieldListFilter from django.forms import widgets from django.contrib import admin from django.http import HttpResponse from django.urls import reverse from django.utils.html import format_html from django.utils.http import urlencode -from django.utils.translation import gettext_lazy from import_export.admin import ImportExportModelAdmin from rangefilter.filters import DateRangeFilterBuilder @@ -159,7 +157,7 @@ class BusStopAdmin(MyImportExportModelAdmin, admin.ModelAdmin): search_fields = ["bus__route_name", "address"] -# @admin.register(Suburb) +@admin.register(Suburb) class SuburbsAdmin(MyImportExportModelAdmin, admin.ModelAdmin): list_filter = ["state"] @@ -171,7 +169,7 @@ class TravellerRouteInline(admin.TabularInline): @admin.register(Traveller) class TravellerAdmin(MyImportExportModelAdmin, CloneModelAdmin, admin.ModelAdmin, TravellerRollMixin): - list_display = ["first_name", "last_name", "school", "year_level", "residential_address", "residential_suburb", "stop_route", "shuttle", "travel_start_date", "travel_end_date"] + list_display = ["first_name", "last_name", "school", "year_level", "is_active", "residential_address", "residential_suburb", "stop_route", "shuttle", "travel_start_date", "travel_end_date"] list_filter = [ "is_active", "school", "year_level", "eligibility_status", "bus_stops__bus", "shuttle", "residential_suburb", ("travel_start_date", DateRangeFilterBuilder( @@ -195,6 +193,7 @@ class TravellerAdmin(MyImportExportModelAdmin, CloneModelAdmin, admin.ModelAdmin fieldsets = [ (None, { 'fields': [ + "is_active", "school", "first_name", "last_name", @@ -229,7 +228,6 @@ class TravellerAdmin(MyImportExportModelAdmin, CloneModelAdmin, admin.ModelAdmin "seat_number", "created_on", "last_edit", - "is_active", ] }), ('Adult Contacts', { diff --git a/busManager/coord/models.py b/busManager/coord/models.py index ac6d82c..1c16af7 100644 --- a/busManager/coord/models.py +++ b/busManager/coord/models.py @@ -234,7 +234,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') + is_active = models.BooleanField(default=False, 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,6 +244,10 @@ class Traveller(models.Model): def __str__(self): return f"{self.first_name} {self.last_name}" + def save(self, *args, **kwargs): + self._update_active_status() + super(Traveller, self).save(*args, **kwargs) + def _is_active(self): today = datetime.today() today = datetime(today.year, today.month, today.day) @@ -255,7 +259,7 @@ class Traveller(models.Model): end_date = datetime(self.travel_end_date.year, self.travel_end_date.month, self.travel_end_date.day) return end_date >= today - def update_active_status(self): + def _update_active_status(self): new_start_date = None new_end_date = None @@ -270,21 +274,9 @@ class Traveller(models.Model): if new_end_date is None or new_end_date < route_end: new_end_date = route_end - 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() + self.travel_start_date = new_start_date + self.travel_end_date = new_end_date + self.is_active = self._is_active() def fare_paying(self): if self.eligibility_status != "2": @@ -347,7 +339,7 @@ class TravellerRoute(models.Model): def save(self, *args, **kwargs): super(TravellerRoute, self).save(*args, **kwargs) - # self.traveller.update_active_status() + self.traveller.save() def active_stops(self): stops = 0 diff --git a/busManager/coord/scheduled_tasks.py b/busManager/coord/scheduled_tasks.py index a264b3d..d98fe81 100644 --- a/busManager/coord/scheduled_tasks.py +++ b/busManager/coord/scheduled_tasks.py @@ -1,6 +1,11 @@ -from coord.models import Traveller +from .models import Traveller def nightly_check_active_status(): for traveller in Traveller.objects.all(): - traveller.update_active_status() + start_date = traveller.travel_start_date + end_date = traveller.travel_end_date + is_active = traveller.is_active + traveller._update_active_status() + if start_date != traveller.travel_start_date or end_date != traveller.travel_end_date or is_active != traveller.is_active: + traveller.save() diff --git a/busManager/custom_user/urls.py b/busManager/custom_user/urls.py index 6c041aa..9457731 100644 --- a/busManager/custom_user/urls.py +++ b/busManager/custom_user/urls.py @@ -2,7 +2,7 @@ from django.urls import path from .views import azure_auth_callback, azure_auth_login, azure_auth_logout -app_name = "azure_auth" +app_name = "auth" urlpatterns = [ path("login", azure_auth_login, name="login"), path("logout", azure_auth_logout, name="logout"), diff --git a/requirements.txt b/requirements.txt index e7fb18fc17f750719ace40c01652f1a010d42979..a1d589183173d5d81e1d414f35b02ee8a75bfce5 100644 GIT binary patch delta 42 ucmZ3)ypMSU2P32TWKPDJGQ13247m)&42cXm47NaM$e_ny#9#&_4Hy8rX9o=c delta 13 UcmdnTyoh-N2P329WKPDJ02_w`kN^Mx