def get_context_data(self, **kwargs): context = super(MembersView, self).get_context_data(**kwargs) # NOTE: "year" is a field lookup type so must use "year__exact" instead project_members = ProjectMember.objects.filter(project__year__exact=self.kwargs.get('year', settings.CURRENT_YEAR)) member_query = Q(pk__in=project_members.values_list('member')) # active members are shown unconditinoally for current year if int(self.kwargs.get('year', settings.CURRENT_YEAR)) == settings.CURRENT_YEAR: active_query = Q(status=Member.STATUS_ACTIVE) else: active_query = Q() context['members'] = Member.objects.filter(member_query | active_query).order_by('user__first_name', 'user__last_name').distinct() if permissions.is_user_slc_leader(self.request.user): context['archived_members'] = Member.objects.filter(status=Member.STATUS_ARCHIVED).order_by('user__first_name', 'user__last_name') context['project_member_groups'] = [{'group': x[1], 'members': context['members'].filter(group=x[0])} for x in Member.GROUP_CHOICES] context['project_member_groups'] += [{'group': 'Volunteer', 'project_members': project_members.filter(member=None).order_by('volunteer_name')}] context['current_year'] = settings.CURRENT_YEAR context['year'] = self.kwargs.get('year', settings.CURRENT_YEAR) next_year = int(context['year']) + 1 context['year2'] = next_year prev_year = int(context['year']) - 1 if Project.objects.filter(year=next_year).count() > 0: context['next_year'] = next_year context['next_year2'] = next_year + 1 if Project.objects.filter(year=prev_year).count() > 0: context['prev_year'] = prev_year context['prev_year2'] = prev_year + 1 return context
def is_slc_leader(user): return permissions.is_user_slc_leader(user)