From d3a91b4b1996293bce2123ea6dda91ac2ad7642c Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 14 Feb 2022 18:14:26 +0000 Subject: [PATCH] Merged in [19920] from rjsparks@nostrum.com: Make working with session purpose easier in the admin. - Legacy-Id: 19928 Note: SVN reference [19920] has been migrated to Git commit 191d5b134fdab8782280eb9769beec793818975f --- ietf/meeting/admin.py | 11 +++++++---- ietf/meeting/resources.py | 4 +++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ietf/meeting/admin.py b/ietf/meeting/admin.py index f7420637d..5b72c0523 100644 --- a/ietf/meeting/admin.py +++ b/ietf/meeting/admin.py @@ -96,10 +96,10 @@ class SchedulingEventInline(admin.TabularInline): raw_id_fields = ["by"] class SessionAdmin(admin.ModelAdmin): - list_display = ["meeting", "name", "group", "attendees", "requested", "current_status"] - list_filter = ["meeting", ] + list_display = ["meeting", "name", "group_acronym", "purpose", "attendees", "requested", "current_status"] + list_filter = ["purpose", "meeting", ] raw_id_fields = ["meeting", "group", "materials", "joint_with_groups", "tombstone_for"] - search_fields = ["meeting__number", "name", "group__name", "group__acronym", ] + search_fields = ["meeting__number", "name", "group__name", "group__acronym", "purpose__name"] ordering = ["-id"] inlines = [SchedulingEventInline] @@ -108,10 +108,13 @@ class SessionAdmin(admin.ModelAdmin): qs = super(SessionAdmin, self).get_queryset(request) return qs.prefetch_related('schedulingevent_set') + def group_acronym(self, instance): + return instance.group and instance.group.acronym + def current_status(self, instance): events = sorted(instance.schedulingevent_set.all(), key=lambda e: (e.time, e.id)) if events: - return events[-1].time + return f'{events[-1].status} ({events[-1].time:%Y-%m-%d %H:%M})' else: return None diff --git a/ietf/meeting/resources.py b/ietf/meeting/resources.py index c9e3d6d4c..479b5dc4b 100644 --- a/ietf/meeting/resources.py +++ b/ietf/meeting/resources.py @@ -166,11 +166,12 @@ api.meeting.register(ScheduleResource()) from ietf.group.resources import GroupResource from ietf.doc.resources import DocumentResource -from ietf.name.resources import TimeSlotTypeNameResource +from ietf.name.resources import TimeSlotTypeNameResource, SessionPurposeNameResource from ietf.person.resources import PersonResource class SessionResource(ModelResource): meeting = ToOneField(MeetingResource, 'meeting') type = ToOneField(TimeSlotTypeNameResource, 'type') + purpose = ToOneField(SessionPurposeNameResource, 'purpose') group = ToOneField(GroupResource, 'group') materials = ToManyField(DocumentResource, 'materials', null=True) resources = ToManyField(ResourceAssociationResource, 'resources', null=True) @@ -195,6 +196,7 @@ class SessionResource(ModelResource): "modified": ALL, "meeting": ALL_WITH_RELATIONS, "type": ALL_WITH_RELATIONS, + "purpose": ALL_WITH_RELATIONS, "group": ALL_WITH_RELATIONS, "requested_by": ALL_WITH_RELATIONS, "status": ALL_WITH_RELATIONS,