From 83329ca9bfd7f4b67e019ea6de4d8bdfaf927f1a Mon Sep 17 00:00:00 2001 From: Victoria Earl Date: Wed, 15 Jan 2025 18:07:58 -0500 Subject: [PATCH] Update viewable_groups for guest admins They could view the right attendees, but not the right groups, whoops. --- uber/models/__init__.py | 15 +++++++++------ uber/site_sections/group_admin.py | 9 +++++---- uber/templates/group_admin/dealers.html | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/uber/models/__init__.py b/uber/models/__init__.py index 6b5f4d677..513346bbf 100644 --- a/uber/models/__init__.py +++ b/uber/models/__init__.py @@ -853,12 +853,15 @@ def viewable_groups(self): if group_id: subqueries.append(self.query(Group).filter(Group.id == group_id)) - for key, val in c.GROUP_TYPE_OPTS: - if val.lower() + '_admin' in admin.read_or_write_access_set: - subqueries.append( - self.query(Group).join( - GuestGroup, Group.id == GuestGroup.group_id).filter( - GuestGroup.group_type == key)) + if 'guest_admin' in admin.read_or_write_access_set: + subqueries.append(self.query(Group).join( + GuestGroup, Group.id == GuestGroup.group_id).filter( + ~GuestGroup.group_type.in_([c.BAND, c.MIVS]))) + + if 'band_admin' in admin.read_or_write_access_set: + subqueries.append(self.query(Group).join( + GuestGroup, Group.id == GuestGroup.group_id).filter( + GuestGroup.group_type == c.BAND)) if 'dealer_admin' in admin.read_or_write_access_set: subqueries.append(self.query(Group).filter(Group.is_dealer)) diff --git a/uber/site_sections/group_admin.py b/uber/site_sections/group_admin.py index 4e9becb0f..64ed3b886 100644 --- a/uber/site_sections/group_admin.py +++ b/uber/site_sections/group_admin.py @@ -30,7 +30,7 @@ def _required_message(self, params, fields): return '' def index(self, session, message='', show_all=None): - groups = session.viewable_groups() + groups = session.viewable_groups().options(joinedload(Group.attendees)) dealer_counts = defaultdict(int) if not show_all: @@ -51,13 +51,14 @@ def index(self, session, message='', show_all=None): case c.SHARED: dealer_counts['approved'] += group.tables - guest_groups = groups.join(Group.guest) + guest_groups = groups.filter(Group.guest != None) return { 'message': message, 'show_all': show_all, - 'all_groups': groups.options(joinedload(Group.attendees), joinedload(Group.active_receipt)).all(), - 'guest_groups': guest_groups.options(joinedload(Group.attendees)), + 'all_groups': groups, + 'guest_groups': guest_groups, + 'dealer_groups': dealer_groups.options(joinedload(Group.active_receipt)), 'guest_checklist_items': GuestGroup(group_type=c.GUEST).sorted_checklist_items, 'band_checklist_items': GuestGroup(group_type=c.BAND).sorted_checklist_items, 'num_dealer_groups': dealer_counts['total'], diff --git a/uber/templates/group_admin/dealers.html b/uber/templates/group_admin/dealers.html index b4f6cea83..989471779 100644 --- a/uber/templates/group_admin/dealers.html +++ b/uber/templates/group_admin/dealers.html @@ -38,7 +38,7 @@ -{% for group in all_groups|selectattr("is_dealer") %} +{% for group in dealer_groups %} {{ group.name|default('?????', boolean=True) }}