예제 #1
0
    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))
예제 #2
0
    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