diff --git a/AKModel/admin.py b/AKModel/admin.py index 815521dfc6e525dd5e94a3b8bd29e1b46adc5458..301b9109c0ae8a0e0c7e1ee73f7a744a9e51e1de 100644 --- a/AKModel/admin.py +++ b/AKModel/admin.py @@ -35,6 +35,13 @@ class AKOwnerAdmin(admin.ModelAdmin): list_editable = [] ordering = ['name'] + def formfield_for_foreignkey(self, db_field, request, **kwargs): + if db_field.name == 'event': + kwargs['initial'] = Event.get_next_active() + return super(AKOwnerAdmin, self).formfield_for_foreignkey( + db_field, request, **kwargs + ) + @admin.register(AKCategory) class AKCategoryAdmin(admin.ModelAdmin): @@ -44,6 +51,13 @@ class AKCategoryAdmin(admin.ModelAdmin): list_editable = ['color'] ordering = ['name'] + def formfield_for_foreignkey(self, db_field, request, **kwargs): + if db_field.name == 'event': + kwargs['initial'] = Event.get_next_active() + return super(AKCategoryAdmin, self).formfield_for_foreignkey( + db_field, request, **kwargs + ) + @admin.register(AKTrack) class AKTrackAdmin(admin.ModelAdmin): @@ -53,6 +67,13 @@ class AKTrackAdmin(admin.ModelAdmin): list_editable = ['color'] ordering = ['name'] + def formfield_for_foreignkey(self, db_field, request, **kwargs): + if db_field.name == 'event': + kwargs['initial'] = Event.get_next_active() + return super(AKTrackAdmin, self).formfield_for_foreignkey( + db_field, request, **kwargs + ) + @admin.register(AKTag) class AKTagAdmin(admin.ModelAdmin): @@ -71,6 +92,13 @@ class AKRequirementAdmin(admin.ModelAdmin): list_editable = [] ordering = ['name'] + def formfield_for_foreignkey(self, db_field, request, **kwargs): + if db_field.name == 'event': + kwargs['initial'] = Event.get_next_active() + return super(AKRequirementAdmin, self).formfield_for_foreignkey( + db_field, request, **kwargs + ) + class WishFilter(SimpleListFilter): title = _("Wish") # a label for our filter @@ -113,6 +141,13 @@ class AKAdmin(admin.ModelAdmin): is_wish.boolean = True + def formfield_for_foreignkey(self, db_field, request, **kwargs): + if db_field.name == 'event': + kwargs['initial'] = Event.get_next_active() + return super(AKAdmin, self).formfield_for_foreignkey( + db_field, request, **kwargs + ) + @admin.register(Room) class RoomAdmin(admin.ModelAdmin): @@ -122,6 +157,13 @@ class RoomAdmin(admin.ModelAdmin): list_editable = [] ordering = ['building', 'name'] + def formfield_for_foreignkey(self, db_field, request, **kwargs): + if db_field.name == 'event': + kwargs['initial'] = Event.get_next_active() + return super(RoomAdmin, self).formfield_for_foreignkey( + db_field, request, **kwargs + ) + @admin.register(AKSlot) class AKSlotAdmin(admin.ModelAdmin): @@ -142,6 +184,13 @@ class AKSlotAdmin(admin.ModelAdmin): timezone.activate("UTC") return super().get_form(request, obj, change, **kwargs) + def formfield_for_foreignkey(self, db_field, request, **kwargs): + if db_field.name == 'event': + kwargs['initial'] = Event.get_next_active() + return super(AKSlotAdmin, self).formfield_for_foreignkey( + db_field, request, **kwargs + ) + @admin.register(Availability) class AvailabilityAdmin(admin.ModelAdmin): diff --git a/AKModel/models.py b/AKModel/models.py index 6040e0e190dae9193d5dcf19bee6daf4395fc1c1..8ca7fba49f51bf28f9f2d5cf7e168e68648e11dd 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -45,6 +45,14 @@ class Event(models.Model): def get_by_slug(slug): return Event.objects.get(slug=slug) + @staticmethod + def get_next_active(): + active_events = Event.objects.filter(active=True).order_by('start') + if not active_events: + return None + else: + return active_events[0] + class AKOwner(models.Model): """ An AKOwner describes the person organizing/holding an AK.