You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
from django.contrib import admin
|
|
from django.contrib.admin import DateFieldListFilter
|
|
|
|
from .models import Room, Shift, Helper, ShiftRegistration, Message, LoginToken
|
|
|
|
admin.site.register(Room)
|
|
|
|
|
|
@admin.register(Shift)
|
|
class ShiftAdmin(admin.ModelAdmin):
|
|
list_display = ("room_name", "description", "start_at", "free_slots", "deleted")
|
|
|
|
def room_name(self, object):
|
|
return object.room.name
|
|
|
|
# def helpers(self, object):
|
|
# object.helpers.count()
|
|
|
|
def free_slots(self, object):
|
|
return (
|
|
object.required_helpers or object.room.required_helpers
|
|
) - object.registration_count()
|
|
|
|
|
|
def send_login(modeladmin, request, queryset):
|
|
for helper in queryset:
|
|
helper.send_confirmation()
|
|
|
|
|
|
class RegistrationInline(admin.TabularInline):
|
|
model = ShiftRegistration
|
|
|
|
|
|
@admin.register(Helper)
|
|
class HelperAdmin(admin.ModelAdmin):
|
|
readonly_fields = ("phone",)
|
|
fields = ("name", "phone", "number_validated")
|
|
list_display = ("name",)
|
|
inlines = (RegistrationInline,)
|
|
actions = (send_login,)
|
|
|
|
|
|
@admin.register(ShiftRegistration)
|
|
class ShiftRegistrationAdmin(admin.ModelAdmin):
|
|
list_display = ("start_at", "room", "helper_name", "state")
|
|
list_filter = (("shift__start_at", DateFieldListFilter), "shift__room", "state")
|
|
|
|
def room(self, obj):
|
|
return obj.shift.room.name
|
|
|
|
def start_at(self, obj):
|
|
return obj.shift.start_at
|
|
|
|
start_at.admin_order_field = "shift__start_at"
|
|
|
|
def helper_name(self, obj):
|
|
return obj.helper.name
|
|
|
|
|
|
admin.site.register(Message)
|
|
admin.site.register(LoginToken)
|