def test_chair_activities(self): """ The admin qualifies as a chair when allow_superusers is set. """ # This admin is not a chair in the normal context self.assertFalse( perm_utils.chair_activities(self.admin, allow_superusers=False)) self.assertFalse(perm_utils.chair_activities(self.admin)) admin_allowed_activities = perm_utils.chair_activities( self.admin, allow_superusers=True) # Considered the chair for closed activities self.assertCountEqual(admin_allowed_activities, enums.Activity)
def get_context_data(self, **kwargs): # Super calls DetailView's `get_context_data` so we'll manually add form context = super().get_context_data(**kwargs) assigned_rating = self.assigned_rating context['assigned_rating'] = assigned_rating context['recommendations'] = self.get_recommendations(assigned_rating) context['leader_form'] = self.get_form() context['all_feedback'] = self.get_feedback() context['prev_app'], context['next_app'] = self.get_other_apps() participant = self.object.participant context['active_ratings'] = list(participant.ratings(rating_active=True)) participant_chair_activities = set( perm_utils.chair_activities(participant.user) ) context['chair_activities'] = [ label for (activity, label) in models.LeaderRating.ACTIVITY_CHOICES if activity in participant_chair_activities ] context['existing_rating'] = self.existing_rating context['existing_rec'] = self.existing_rec context['hide_recs'] = not (assigned_rating or context['existing_rec']) all_trips_led = self.object.participant.trips_led trips_led = all_trips_led.filter(self.before_rating, activity=self.activity) context['trips_led'] = trips_led.prefetch_related('leaders__leaderrating_set') return context
def get_context_data(self, **kwargs): # Super calls DetailView's `get_context_data` so we'll manually add form context = super().get_context_data(**kwargs) assigned_rating = self.assigned_rating context['assigned_rating'] = assigned_rating context['recommendations'] = self.get_recommendations() context['leader_form'] = self.get_form() context['all_feedback'] = self.get_feedback() context['prev_app'], context['next_app'] = self.get_other_apps() participant = self.object.participant context['active_ratings'] = list( participant.ratings(must_be_active=True)) participant_chair_activities = set( perm_utils.chair_activities(participant.user)) context['chair_activities'] = [ label for (activity, label) in models.LeaderRating.ACTIVITY_CHOICES if activity in participant_chair_activities ] context['existing_rating'] = self.existing_rating() context['existing_rec'] = self.existing_rec() context['hide_recs'] = not (assigned_rating or context['existing_rec']) all_trips_led = self.object.participant.trips_led trips_led = all_trips_led.filter(self.before_rating, activity=self.activity) context['trips_led'] = trips_led.prefetch_related( 'leaders__leaderrating_set') return context
def test_chair_activities(self): """ The admin qualifies as a chair when allow_superusers is set. """ # This admin is not a chair in the normal context self.assertFalse( perm_utils.chair_activities(self.admin, allow_superusers=False) ) self.assertFalse(perm_utils.chair_activities(self.admin)) allowed_activities = set( perm_utils.chair_activities(self.admin, allow_superusers=True) ) # Considered the chair for closed activities self.assertEqual(allowed_activities, set(models.BaseRating.CLOSED_ACTIVITIES)) # No open activities are included in the set self.assertFalse( allowed_activities.intersection(models.BaseRating.OPEN_ACTIVITIES) )
def get_context_data(self, **kwargs): participant = self.object = self.get_object() user_viewing = self.request.participant == participant context = super().get_context_data(**kwargs) can_set_attendance = self.can_set_attendance(participant) context['can_set_attendance'] = can_set_attendance context['show_attendance'] = (is_winter_school() and (ws_lectures_complete() or can_set_attendance)) if can_set_attendance: context[ 'attended_lectures'] = models.LectureAttendance.objects.filter( participant=participant, year=ws_year()).exists() context['user_viewing'] = user_viewing if user_viewing: user = self.request.user else: user = participant.user context['par_user'] = user context['trips'] = trips = self.get_trips() context['stats'] = self.get_stats(trips) self.include_pairing(context) e_info = participant.emergency_info e_contact = e_info.emergency_contact context['emergency_info_form'] = forms.EmergencyInfoForm( instance=e_info) context['emergency_contact_form'] = forms.EmergencyContactForm( instance=e_contact) context['participant'] = participant if not user_viewing: feedback = participant.feedback_set.select_related( 'trip', 'leader') feedback = feedback.prefetch_related('leader__leaderrating_set') context['all_feedback'] = feedback context['ratings'] = participant.ratings(rating_active=True) chair_activities = set(perm_utils.chair_activities(user)) context['chair_activities'] = [ label for (activity, label) in models.LeaderRating.ACTIVITY_CHOICES if activity in chair_activities ] if participant.car: context['car_form'] = forms.CarForm(instance=participant.car) return context
def labeled_chair_activities(user): chair_activities = set(perm_utils.chair_activities(user, True)) return [ choice for choice in models.LeaderRating.CLOSED_ACTIVITY_CHOICES if choice[0] in chair_activities ]
def allowed_activities(self): return perm_utils.chair_activities(self.request.user, True)
def chair_activities(user, allow_superusers=True): return perm_utils.chair_activities(user, allow_superusers)
def get_form_kwargs(self): return { **super().get_form_kwargs(), 'allowed_activities': perm_utils.chair_activities(self.request.user, True), 'hide_activity': True, }