diff --git a/busManager/coord/admin.py b/busManager/coord/admin.py
index e77d4fe..8a68d14 100644
--- a/busManager/coord/admin.py
+++ b/busManager/coord/admin.py
@@ -60,14 +60,14 @@ class CompanyAdmin(MyImportExportModelAdmin, admin.ModelAdmin):
url = (
reverse("admin:coord_bus_changelist")
+ "?"
- + urlencode({"company__id": f"{obj.id}"})
+ + urlencode({"company__id__exact": f"{obj.id}"})
)
return format_html('{} Buses', url, count)
class DriverInline(admin.StackedInline):
model = Driver
- extra = 1
+ extra = 0
class BusStopInline(admin.TabularInline):
@@ -79,9 +79,24 @@ class BusStopInline(admin.TabularInline):
@admin.register(Bus)
class BusesAdmin(MyImportExportModelAdmin, admin.ModelAdmin, BusRollMixin):
list_filter = ["company"]
- list_display = ["route_name", "company", "contract_number"]
+ list_display = ["route_name", "company", "contract_number", "route_travellers"]
+ readonly_fields = ["traveller_count"]
actions = ["email_company", "bus_roll"]
inlines = [DriverInline, BusStopInline]
+ fieldsets = [
+ (None, {'fields': [
+ "company", "route_name", "contract_number", "registration",
+ "traveller_count", "seating_capacity", "make", "model", "notes"
+ ]})
+ ]
+
+ def route_travellers(self, obj):
+ url = (
+ reverse("admin:coord_traveller_changelist")
+ + "?"
+ + urlencode({"bus_stops__bus__id__exact": f"{obj.id}"})
+ )
+ return format_html('{} Travellers', url, obj.traveller_count())
@admin.register(BusStop)
@@ -205,7 +220,15 @@ class SettingAdmin(MyImportExportModelAdmin, admin.ModelAdmin):
@admin.register(Shuttle)
class ShuttleAdmin(MyImportExportModelAdmin, admin.ModelAdmin):
- list_display = ["__str__", "school", "bus"]
+ list_display = ["__str__", "school", "bus", "shuttle_travellers"]
+
+ def shuttle_travellers(self, obj):
+ url = (
+ reverse("admin:coord_traveller_changelist")
+ + "?"
+ + urlencode({"shuttle__id__exact": f"{obj.id}"})
+ )
+ return format_html('{} Travellers', url, obj.traveller_count())
@admin.register(Driver)
diff --git a/busManager/coord/models.py b/busManager/coord/models.py
index 24d6bc3..3861486 100644
--- a/busManager/coord/models.py
+++ b/busManager/coord/models.py
@@ -84,6 +84,13 @@ class Bus(models.Model):
def __str__(self):
return f"{self.route_name}"
+ def traveller_count(self):
+ count = 0
+ for traveller in Traveller.objects.filter(bus_stops__bus=self):
+ if traveller.is_active():
+ count += 1
+ return count
+
class Shuttle(models.Model):
bus = models.ForeignKey(Bus, on_delete=models.CASCADE)
@@ -95,6 +102,13 @@ class Shuttle(models.Model):
def __str__(self):
return f"{self.school.shortName} <-> {self.bus.route_name}"
+ def traveller_count(self):
+ count = 0
+ for traveller in Traveller.objects.filter(shuttle=self):
+ if traveller.is_active():
+ count += 1
+ return count
+
class Driver(models.Model):
bus = models.ForeignKey(Bus, on_delete=models.CASCADE)