Skip to content

Commit

Permalink
Give permission to see Allergies for Event to Responsible Group
Browse files Browse the repository at this point in the history
Signed-off-by: Daniel Yang Hansen <daniel.yang.hansen@gmail.com>
  • Loading branch information
danielyanghansen committed Sep 27, 2023
1 parent 61b47f9 commit 6914518
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 3 deletions.
12 changes: 11 additions & 1 deletion lego/apps/events/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
from lego.apps.followers.models import FollowEvent
from lego.apps.permissions.models import ObjectPermissionsModel
from lego.apps.users.constants import AUTUMN, SPRING
from lego.apps.users.models import AbakusGroup, Penalty, User
from lego.apps.users.models import AbakusGroup, Membership, Penalty, User
from lego.utils.models import BasisModel
from lego.utils.youtube_validator import youtube_validator

Expand Down Expand Up @@ -133,6 +133,16 @@ def user_should_see_regs(self, user: User) -> bool:
or (self.created_by is not None and self.created_by.id == user.id)
)

def user_should_see_allergies(self, user: User) -> bool:
memberships = Membership.objects.filter(user=user)
in_responsible_group = self.responsible_group in [mem.abakus_group for mem in memberships]
created_by_self = user == self.created_by

return (
created_by_self
or in_responsible_group
)

def admin_register(
self,
admin_user: User,
Expand Down
4 changes: 4 additions & 0 deletions lego/apps/events/serializers/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,9 @@ class EventAdministrateSerializer(EventReadSerializer):
pools = PoolAdministrateSerializer(many=True)
unregistered = RegistrationReadDetailedSerializer(many=True)
waiting_registrations = RegistrationReadDetailedSerializer(many=True)
responsible_group = AbakusGroupField(
queryset=AbakusGroup.objects.all(), required=False, allow_null=True
)

class Meta(EventReadSerializer.Meta):
fields = EventReadSerializer.Meta.fields + ( # type: ignore
Expand All @@ -323,6 +326,7 @@ class Meta(EventReadSerializer.Meta):
"use_contact_tracing",
"created_by",
"feedback_required",
"responsible_group",
)


Expand Down
3 changes: 1 addition & 2 deletions lego/apps/events/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,7 @@ def allergies(self, request, *args, **kwargs):
event_id = self.kwargs.get("pk", None)
serializer = EventAdministrateSerializer
event = Event.objects.get(pk=event_id)

if request.user == event.created_by:
if event.user_should_see_allergies(request.user) :
serializer = EventAdministrateAllergiesSerializer

event_data = serializer(event).data
Expand Down

0 comments on commit 6914518

Please sign in to comment.