Skip to content
Snippets Groups Projects

Admin config

Merged Nadja Geisler requested to merge admin_config into master
+ 85
28
@@ -6,11 +6,17 @@ from django.utils import timezone
@@ -6,11 +6,17 @@ from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from django.utils.translation import gettext_lazy as _
from AKModel.availability import Availability
from AKModel.availability import Availability
from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, Room, AKSlot
from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, AKSlot, Room
@admin.register(Event)
@admin.register(Event)
class EventAdmin(admin.ModelAdmin):
class EventAdmin(admin.ModelAdmin):
 
model = Event
 
list_display = ['name', 'place', 'start', 'end', 'active']
 
list_filter = ['active']
 
list_editable = ['active']
 
ordering = ['start']
 
def get_form(self, request, obj=None, change=False, **kwargs):
def get_form(self, request, obj=None, change=False, **kwargs):
# Use timezone of event
# Use timezone of event
if obj is not None and obj.timezone:
if obj is not None and obj.timezone:
@@ -20,40 +26,80 @@ class EventAdmin(admin.ModelAdmin):
@@ -20,40 +26,80 @@ class EventAdmin(admin.ModelAdmin):
timezone.activate("UTC")
timezone.activate("UTC")
return super().get_form(request, obj, change, **kwargs)
return super().get_form(request, obj, change, **kwargs)
admin.site.register(AKOwner)
admin.site.register(AKCategory)
@admin.register(AKOwner)
admin.site.register(AKTrack)
class AKOwnerAdmin(admin.ModelAdmin):
admin.site.register(AKTag)
model = AKOwner
admin.site.register(AKRequirement)
list_display = ['name', 'institution', 'event']
 
list_filter = ['institution', 'event']
 
list_editable = []
 
ordering = ['name']
class WishFilter(SimpleListFilter):
@admin.register(AKCategory)
title = _("Wish") # a label for our filter
class AKCategoryAdmin(admin.ModelAdmin):
parameter_name = 'wishes' # you can put anything here
model = AKCategory
 
list_display = ['name', 'color', 'event']
 
list_filter = ['event']
 
list_editable = ['color']
 
ordering = ['name']
 
 
 
@admin.register(AKTrack)
 
class AKTrackAdmin(admin.ModelAdmin):
 
model = AKTrack
 
list_display = ['name', 'color', 'event']
 
list_filter = ['event']
 
list_editable = ['color']
 
ordering = ['name']
 
 
 
@admin.register(AKTag)
 
class AKTagAdmin(admin.ModelAdmin):
 
model = AKTag
 
list_display = ['name']
 
list_filter = []
 
list_editable = []
 
ordering = ['name']
def lookups(self, request, model_admin):
# This is where you create filter options; we have two:
return [
('WISH', _("Is wish")),
('NO_WISH', _("Is not a wish")),
]
def queryset(self, request, queryset):
@admin.register(AKRequirement)
annotated_queryset = queryset.annotate(owner_count=Count(F('owners')))
class AKRequirementAdmin(admin.ModelAdmin):
if self.value() == 'NO_WISH':
model = AKRequirement
return annotated_queryset.filter(owner_count__gt=0)
list_display = ['name', 'event']
if self.value() == 'WISH':
list_filter = ['event']
return annotated_queryset.filter(owner_count=0)
list_editable = []
return queryset
ordering = ['name']
 
class WishFilter(SimpleListFilter):
 
title = _("Wish") # a label for our filter
 
parameter_name = 'wishes' # you can put anything here
 
 
def lookups(self, request, model_admin):
 
# This is where you create filter options; we have two:
 
return [
 
('WISH', _("Is wish")),
 
('NO_WISH', _("Is not a wish")),
 
]
 
 
def queryset(self, request, queryset):
 
annotated_queryset = queryset.annotate(owner_count=Count(F('owners')))
 
if self.value() == 'NO_WISH':
 
return annotated_queryset.filter(owner_count__gt=0)
 
if self.value() == 'WISH':
 
return annotated_queryset.filter(owner_count=0)
 
return queryset
 
 
 
@admin.register(AK)
class AKAdmin(admin.ModelAdmin):
class AKAdmin(admin.ModelAdmin):
model = AK
model = AK
list_display = ['name', 'short_name', 'category', 'is_wish']
list_display = ['name', 'short_name', 'category', 'track', 'is_wish', 'interest', 'event']
actions = ['wiki_export']
list_filter = ['category', WishFilter, 'event']
list_filter = ['category', WishFilter]
list_editable = ['short_name', 'track', 'interest']
ordering = ['pk']
ordering = ['pk']
 
actions = ['wiki_export']
def is_wish(self, obj):
def is_wish(self, obj):
return obj.wish
return obj.wish
@@ -62,18 +108,29 @@ class AKAdmin(admin.ModelAdmin):
@@ -62,18 +108,29 @@ class AKAdmin(admin.ModelAdmin):
return render(request,
return render(request,
'admin/AKModel/wiki_export.html',
'admin/AKModel/wiki_export.html',
context={"AKs": queryset})
context={"AKs": queryset})
 
wiki_export.short_description = _("Export to wiki syntax")
wiki_export.short_description = _("Export to wiki syntax")
is_wish.boolean = True
is_wish.boolean = True
admin.site.register(AK, AKAdmin)
@admin.register(Room)
class RoomAdmin(admin.ModelAdmin):
admin.site.register(Room)
model = Room
 
list_display = ['name', 'building', 'capacity', 'event']
 
list_filter = ['building', 'properties', 'event']
 
list_editable = []
 
ordering = ['building', 'name']
@admin.register(AKSlot)
@admin.register(AKSlot)
class AKSlotAdmin(admin.ModelAdmin):
class AKSlotAdmin(admin.ModelAdmin):
 
model = AKSlot
 
list_display = ['id', 'ak', 'room', 'start', 'duration', 'event']
 
list_filter = ['room', 'event']
 
list_editable = ['ak', 'room', 'start', 'duration']
 
ordering = ['start']
 
readonly_fields = ['updated']
readonly_fields = ['updated']
def get_form(self, request, obj=None, change=False, **kwargs):
def get_form(self, request, obj=None, change=False, **kwargs):
Loading