Skip to content

Commit 30181e0

Browse files
committed
Fix visibility check for IFRC and IFRC_NS events
1 parent d481add commit 30181e0

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

api/drf_views.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from deployments.models import Personnel
1919
from databank.serializers import CountryOverviewSerializer
2020

21+
from .utils import is_user_ifrc
2122
from .event_sources import SOURCES
2223
from .exceptions import BadRequest
2324
from .view_filters import ListFilter
@@ -437,10 +438,20 @@ def retrieve(self, request, pk=None, *args, **kwargs):
437438
if pk:
438439
try:
439440
if self.request.user.is_authenticated:
440-
if self.request.user.is_superuser:
441+
if is_user_ifrc(self.request.user):
441442
instance = Event.objects.get(pk=pk)
442443
else:
443-
instance = Event.objects.exclude(visibility=VisibilityChoices.IFRC).exclude(Q(visibility=VisibilityChoices.IFRC_NS) & ~Q(countries__id__in=UserCountry.objects.filter(user=self.request.user.id).values_list('country',flat=True).union(Profile.objects.filter(user=self.request.user.id).values_list('country',flat=True)))).get(pk=pk)
444+
user_countries = UserCountry.objects\
445+
.filter(user=request.user.id).values('country')\
446+
.union(
447+
Profile.objects.filter(user=request.user.id).values('country')
448+
)
449+
instance = Event.objects\
450+
.exclude(
451+
visibility=VisibilityChoices.IFRC)\
452+
.exclude(
453+
Q(visibility=VisibilityChoices.IFRC_NS) & ~Q(countries__id__in=user_countries))\
454+
.get(pk=pk)
444455
else:
445456
instance = Event.objects.filter(visibility=VisibilityChoices.PUBLIC).get(pk=pk)
446457
# instance = Event.get_for(request.user).get(pk=pk)

0 commit comments

Comments
 (0)