You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

51 lines
1.7 KiB

from django.contrib import admin
from unfold.admin import ModelAdmin
from unfold.decorators import display
from apps.meetings.models import MeetingRequest, MeetingStatus
@admin.register(MeetingRequest)
class MeetingRequestAdmin(ModelAdmin):
list_display = (
'title',
'requester_institution',
'recipient_institution',
'meeting_date',
'meeting_time',
'duration_minutes',
'display_status',
'created_by',
'created_at',
)
list_filter = ('status', 'meeting_date', 'requester_institution', 'recipient_institution')
search_fields = (
'title',
'agenda',
'requester_institution__name',
'recipient_institution__name',
'created_by__email',
)
actions = ['mark_as_scheduled', 'mark_as_completed', 'mark_as_cancelled']
@display(description="Status", label=True)
def display_status(self, obj):
color_map = {
MeetingStatus.PENDING: "amber",
MeetingStatus.SCHEDULED: "blue",
MeetingStatus.COMPLETED: "green",
MeetingStatus.CANCELLED: "gray",
MeetingStatus.DECLINED: "red",
}
return obj.get_status_display(), color_map.get(obj.status, "gray")
@admin.action(description="Mark selected meetings as Scheduled")
def mark_as_scheduled(self, request, queryset):
queryset.update(status=MeetingStatus.SCHEDULED)
@admin.action(description="Mark selected meetings as Completed")
def mark_as_completed(self, request, queryset):
queryset.update(status=MeetingStatus.COMPLETED)
@admin.action(description="Mark selected meetings as Cancelled")
def mark_as_cancelled(self, request, queryset):
queryset.update(status=MeetingStatus.CANCELLED)