@@ -62,11 +62,16 @@ def get_receivertips(session, tid, receiver_id, user_key, language, args={}):
62
62
.group_by (models .ReceiverTip .internaltip_id ):
63
63
receiver_count_by_itip [itip_id ] = count
64
64
65
- # Retrieve all the contexts associated with the current receiver
66
- receiver_contexts = set ()
67
- for context_id in session .query (models .ReceiverContext .context_id ) \
68
- .filter (models .ReceiverContext .receiver_id == receiver_id ):
69
- receiver_contexts .add (context_id [0 ])
65
+ # Retrieve all channels that include this recipient, but only if
66
+ # the recipients of those channels are not selectable.
67
+ receiver_contexts = [
68
+ context_id [0 ] for context_id in session .query (models .Context .id )
69
+ .join (models .ReceiverContext ,
70
+ models .Context .id == models .ReceiverContext .context_id )
71
+ .filter (models .Context .allow_recipients_selection == False ,
72
+ models .ReceiverContext .receiver_id == receiver_id
73
+ ).all ()
74
+ ]
70
75
71
76
dict_ret = dict ()
72
77
# Fetch rtip, internaltip and associated questionnaire schema
@@ -79,7 +84,7 @@ def get_receivertips(session, tid, receiver_id, user_key, language, args={}):
79
84
models .InternalTipData .key == 'whistleblower_identity' ),
80
85
isouter = True ) \
81
86
.filter (or_ (models .InternalTip .context_id .in_ (receiver_contexts ),
82
- models .ReceiverTip .receiver_id == receiver_id ),
87
+ models .ReceiverTip .receiver_id == receiver_id ),
83
88
models .InternalTip .update_date >= updated_after ,
84
89
models .InternalTip .update_date <= updated_before ,
85
90
models .InternalTip .id == models .ReceiverTip .internaltip_id ,
0 commit comments