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
This commit is contained in:
John Mullins
2023-12-22 16:50:30 +11:00
parent f73b08e989
commit d74290036e
7 changed files with 24 additions and 30 deletions
+2 -1
View File
@@ -67,7 +67,8 @@ MIDDLEWARE = [
if "AZURE_CLIENT_ID" in os.environ: if "AZURE_CLIENT_ID" in os.environ:
AUTHENTICATION_BACKENDS = ("custom_user.backends.AzureBackend",) AUTHENTICATION_BACKENDS = ("custom_user.backends.AzureBackend",)
MIDDLEWARE.append('custom_user.middleware.AzureMiddleware') MIDDLEWARE.append('custom_user.middleware.AzureMiddleware')
LOGIN_URL = "/azure_auth/login" LOGIN_URL = "/auth/login"
LOGOUT_REDIRECT_URL = "/auth/logout"
AZURE_AUTH = { AZURE_AUTH = {
"CLIENT_ID": os.environ.get('AZURE_CLIENT_ID'), "CLIENT_ID": os.environ.get('AZURE_CLIENT_ID'),
"CLIENT_SECRET": os.environ.get('AZURE_CLIENT_SECRET'), "CLIENT_SECRET": os.environ.get('AZURE_CLIENT_SECRET'),
+1 -3
View File
@@ -14,7 +14,6 @@ Including another URLconf
1. Import the include() function: from django.urls import include, path 1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 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.contrib import admin
from django.urls import path, include from django.urls import path, include
@@ -22,8 +21,7 @@ admin.site.site_header = "Bus Portal Admin"
urlpatterns = [ urlpatterns = [
path('report/', include("coord.urls")), path('report/', include("coord.urls")),
path('logout/', azure_auth_logout), path('auth/', include("custom_user.urls")),
path('auth/', include("azure_auth.urls"),),
path('settings/', include('coord.urls_settings')), path('settings/', include('coord.urls_settings')),
path('', admin.site.urls), path('', admin.site.urls),
] ]
+3 -5
View File
@@ -1,14 +1,12 @@
import csv import csv
from datetime import date from datetime import date
from django.contrib.admin import DateFieldListFilter, BooleanFieldListFilter
from django.forms import widgets from django.forms import widgets
from django.contrib import admin from django.contrib import admin
from django.http import HttpResponse from django.http import HttpResponse
from django.urls import reverse from django.urls import reverse
from django.utils.html import format_html from django.utils.html import format_html
from django.utils.http import urlencode from django.utils.http import urlencode
from django.utils.translation import gettext_lazy
from import_export.admin import ImportExportModelAdmin from import_export.admin import ImportExportModelAdmin
from rangefilter.filters import DateRangeFilterBuilder from rangefilter.filters import DateRangeFilterBuilder
@@ -159,7 +157,7 @@ class BusStopAdmin(MyImportExportModelAdmin, admin.ModelAdmin):
search_fields = ["bus__route_name", "address"] search_fields = ["bus__route_name", "address"]
# @admin.register(Suburb) @admin.register(Suburb)
class SuburbsAdmin(MyImportExportModelAdmin, admin.ModelAdmin): class SuburbsAdmin(MyImportExportModelAdmin, admin.ModelAdmin):
list_filter = ["state"] list_filter = ["state"]
@@ -171,7 +169,7 @@ class TravellerRouteInline(admin.TabularInline):
@admin.register(Traveller) @admin.register(Traveller)
class TravellerAdmin(MyImportExportModelAdmin, CloneModelAdmin, admin.ModelAdmin, TravellerRollMixin): 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 = [ list_filter = [
"is_active", "school", "year_level", "eligibility_status", "bus_stops__bus", "shuttle", "residential_suburb", "is_active", "school", "year_level", "eligibility_status", "bus_stops__bus", "shuttle", "residential_suburb",
("travel_start_date", DateRangeFilterBuilder( ("travel_start_date", DateRangeFilterBuilder(
@@ -195,6 +193,7 @@ class TravellerAdmin(MyImportExportModelAdmin, CloneModelAdmin, admin.ModelAdmin
fieldsets = [ fieldsets = [
(None, { (None, {
'fields': [ 'fields': [
"is_active",
"school", "school",
"first_name", "first_name",
"last_name", "last_name",
@@ -229,7 +228,6 @@ class TravellerAdmin(MyImportExportModelAdmin, CloneModelAdmin, admin.ModelAdmin
"seat_number", "seat_number",
"created_on", "created_on",
"last_edit", "last_edit",
"is_active",
] ]
}), }),
('Adult Contacts', { ('Adult Contacts', {
+10 -18
View File
@@ -234,7 +234,7 @@ class Traveller(models.Model):
created_on = models.DateTimeField(auto_now_add=True, blank=True, null=True) created_on = models.DateTimeField(auto_now_add=True, blank=True, null=True)
last_edit = models.DateTimeField(auto_now=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_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') notes = models.TextField(blank=True, verbose_name='Admin Notes')
shuttle = models.ForeignKey(Shuttle, on_delete=models.SET_NULL, blank=True, null=True) shuttle = models.ForeignKey(Shuttle, on_delete=models.SET_NULL, blank=True, null=True)
@@ -244,6 +244,10 @@ class Traveller(models.Model):
def __str__(self): def __str__(self):
return f"{self.first_name} {self.last_name}" 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): def _is_active(self):
today = datetime.today() today = datetime.today()
today = datetime(today.year, today.month, today.day) 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) end_date = datetime(self.travel_end_date.year, self.travel_end_date.month, self.travel_end_date.day)
return end_date >= today return end_date >= today
def update_active_status(self): def _update_active_status(self):
new_start_date = None new_start_date = None
new_end_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: if new_end_date is None or new_end_date < route_end:
new_end_date = route_end new_end_date = route_end
updated = False self.travel_start_date = new_start_date
if self.travel_start_date != new_start_date: self.travel_end_date = new_end_date
self.travel_start_date = new_start_date self.is_active = self._is_active()
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":
@@ -347,7 +339,7 @@ class TravellerRoute(models.Model):
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
super(TravellerRoute, self).save(*args, **kwargs) super(TravellerRoute, self).save(*args, **kwargs)
# self.traveller.update_active_status() self.traveller.save()
def active_stops(self): def active_stops(self):
stops = 0 stops = 0
+7 -2
View File
@@ -1,6 +1,11 @@
from coord.models import Traveller from .models import Traveller
def nightly_check_active_status(): def nightly_check_active_status():
for traveller in Traveller.objects.all(): 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()
+1 -1
View File
@@ -2,7 +2,7 @@ from django.urls import path
from .views import azure_auth_callback, azure_auth_login, azure_auth_logout from .views import azure_auth_callback, azure_auth_login, azure_auth_logout
app_name = "azure_auth" app_name = "auth"
urlpatterns = [ urlpatterns = [
path("login", azure_auth_login, name="login"), path("login", azure_auth_login, name="login"),
path("logout", azure_auth_logout, name="logout"), path("logout", azure_auth_logout, name="logout"),
BIN
View File
Binary file not shown.