Skip to content

Commit

Permalink
Replace complicated query with two queries and process Python-side
Browse files Browse the repository at this point in the history
Cache member_groups

Make logic in is_organiser more explicit

Do explicit cache invalidation in test

invalidate cache in more places

fix
  • Loading branch information
ColonelPhantom committed Jan 15, 2025
1 parent dfe89ea commit 0dca0d9
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
12 changes: 7 additions & 5 deletions website/events/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -272,11 +272,13 @@ def is_organiser(member, event):
return True

if event:
return (
member.get_member_groups()
.filter(pk__in=event.organisers.values_list("pk"))
.exists()
)
member_groups = set(member.member_groups)

for organiser in event.organisers.all():
if organiser in member_groups:
return True

return False

return False

Expand Down
1 change: 1 addition & 0 deletions website/events/tests/test_services.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ def test_is_organiser(self):
membership = MemberGroupMembership.objects.create(
member=self.member, group=self.committee
)
del self.member.member_groups
self.assertTrue(services.is_organiser(self.member, self.event))
self.assertFalse(services.is_organiser(self.member, None))
self._toggle_event_change_perm(False)
Expand Down
4 changes: 4 additions & 0 deletions website/members/models/member.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,5 +215,9 @@ def get_member_groups(self):
active=True,
)

@cached_property
def member_groups(self):
return self.get_member_groups()

def get_absolute_url(self):
return reverse("members:profile", args=[str(self.pk)])

0 comments on commit 0dca0d9

Please sign in to comment.