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 Oct 4, 2023
1 parent 6abb9ef commit efb0226
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 3 deletions.
11 changes: 10 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 @@ -134,6 +134,15 @@ 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 @@ -327,6 +327,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 @@ -337,6 +340,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 efb0226

Please sign in to comment.