@@ -15,8 +15,16 @@ def get_queryset(self):
1515
1616 org_ids = Membership .objects .filter (user = user , pole__isnull = True ).values_list ("organisation_id" , flat = True )
1717 pole_ids = Membership .objects .filter (user = user , pole__isnull = False ).values_list ("pole_id" , flat = True )
18+ # Les RESPONDER rattachés à un pôle voient aussi les enquêtes au niveau organisation
19+ responder_pole_org_ids = Membership .objects .filter (
20+ user = user , pole__isnull = False , membership_type = MembershipType .RESPONDER
21+ ).values_list ("organisation_id" , flat = True )
1822
19- return Survey .objects .filter (Q (organisation_id__in = org_ids ) | Q (pole_id__in = pole_ids ))
23+ return Survey .objects .filter (
24+ Q (organisation_id__in = org_ids )
25+ | Q (pole_id__in = pole_ids )
26+ | Q (organisation_id__in = responder_pole_org_ids , pole__isnull = True )
27+ ).distinct ()
2028
2129
2230class SurveyListCreateAPIView (SurveyQuerySetMixin , ListCreateAPIView ):
@@ -50,11 +58,20 @@ def get_queryset(self):
5058 user = user , membership_type = MembershipType .RESPONDER , pole__isnull = True
5159 ).values_list ("organisation_id" , flat = True )
5260
53- pole_ids = Membership .objects .filter (
54- user = user , membership_type = MembershipType .RESPONDER , pole__isnull = False
55- ).values_list ("pole_id" , flat = True )
61+ pole_memberships = list (
62+ Membership .objects .filter (user = user , membership_type = MembershipType .RESPONDER , pole__isnull = False ).values (
63+ "pole_id" , "organisation_id"
64+ )
65+ )
66+
67+ pole_ids = [m ["pole_id" ] for m in pole_memberships ]
68+ pole_org_ids = [m ["organisation_id" ] for m in pole_memberships ]
5669
57- return Survey .objects .filter (Q (organisation_id__in = org_ids ) | Q (pole_id__in = pole_ids ))
70+ return Survey .objects .filter (
71+ Q (organisation_id__in = org_ids )
72+ | Q (pole_id__in = pole_ids )
73+ | Q (organisation_id__in = pole_org_ids , pole__isnull = True )
74+ ).distinct ()
5875
5976
6077class SurveyRetrieveAPIView (SurveyQuerySetMixin , RetrieveAPIView ):
0 commit comments