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:
@@ -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'),
|
||||
|
||||
@@ -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),
|
||||
]
|
||||
|
||||
@@ -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', {
|
||||
|
||||
+10
-18
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"),
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user