def test_is_project_coordinator_user(self): """ Verify the function returns a boolean indicating if the user is a member of the project coordinator group. """ self.assertFalse(is_project_coordinator_user(self.user)) project_coordinator_group = Group.objects.get(name=PROJECT_COORDINATOR_GROUP_NAME) self.user.groups.add(project_coordinator_group) self.assertTrue(is_project_coordinator_user(self.user))
def get_context_data(self, **kwargs): context = super(Dashboard, self).get_context_data(**kwargs) course_runs = context.get('object_list') published_course_runs = course_runs.filter( course_run_state__name=CourseRunStateChoices.Published, course_run_state__modified__gt=datetime.today() - timedelta(days=self.default_published_days)).select_related( 'course_run_state').order_by('-course_run_state__modified') unpublished_course_runs = course_runs.exclude( course_run_state__name=CourseRunStateChoices.Published) # Studio requests needs to check depending upon the user role with course # Also user should be part of project coordinator group. if is_publisher_admin(self.request.user): studio_request_courses = unpublished_course_runs.filter( lms_course_id__isnull=True) elif is_project_coordinator_user(self.request.user): studio_request_courses = unpublished_course_runs.filter( lms_course_id__isnull=True).filter( course__course_user_roles__role=PublisherUserRole. ProjectCoordinator) else: studio_request_courses = [] context['studio_request_courses'] = [ CourseRunWrapper(course_run) for course_run in studio_request_courses ] context['unpublished_course_runs'] = [ CourseRunWrapper(course_run) for course_run in unpublished_course_runs ] context['published_course_runs'] = [ CourseRunWrapper(course_run) for course_run in published_course_runs ] context['default_published_days'] = self.default_published_days in_progress_course_runs = course_runs.filter( course_run_state__name__in=[ CourseRunStateChoices.Review, CourseRunStateChoices.Draft ]).select_related('course_run_state').order_by( '-course_run_state__modified') preview_course_runs = unpublished_course_runs.filter( course_run_state__name=CourseRunStateChoices.Approved, preview_url__isnull=False).order_by('-course_run_state__modified') context['in_progress_course_runs'] = [ CourseRunWrapper(course_run) for course_run in in_progress_course_runs ] context['preview_course_runs'] = [ CourseRunWrapper(course_run) for course_run in preview_course_runs ] # If user is course team member only show in-progress tab. # shows all tabs to internal-users and publisher admins context['can_view_all_tabs'] = mixins.check_roles_access( self.request.user) return context