Exemplo n.º 1
0
 def test_check_roles_access_with_internal_user(self):
     """ Verify the function returns a boolean indicating if the user
     access role wise.
     """
     self.assertFalse(check_roles_access(self.user))
     self.user.groups.add(self.internal_user_group)
     self.assertTrue(check_roles_access(self.user))
Exemplo n.º 2
0
 def test_check_user_access_with_roles(self):
     """ Verify the function returns a boolean indicating if the user
     organization permission on given course or user is internal or admin user.
     """
     self.assertFalse(check_roles_access(self.user))
     self.user.groups.add(self.admin_group)
     self.assertTrue(check_roles_access(self.user))
     self.user.groups.remove(self.admin_group)
     self.assertFalse(check_roles_access(self.user))
     self.user.groups.add(self.internal_user_group)
     self.assertTrue(check_roles_access(self.user))
Exemplo n.º 3
0
    def __init__(self, *args, **kwargs):
        user = kwargs.pop('user', None)
        edit_mode = kwargs.pop('edit_mode', None)
        organization = kwargs.pop('organization', None)
        if organization:
            org_extension = OrganizationExtension.objects.get(organization=organization)
            self.declared_fields['team_admin'].queryset = User.objects.filter(
                groups__name=org_extension.group
            ).order_by('full_name', 'username')

        if user:
            organizations = Organization.objects.filter(
                organization_extension__organization_id__isnull=False
            ).order_by(Lower('key'))

            if not check_roles_access(user):
                # If not internal user return only those organizations which belongs to user.
                organizations = organizations.filter(
                    organization_extension__group__in=user.groups.all()
                ).order_by(Lower('key'))

            self.declared_fields['organization'].queryset = organizations

        super(CustomCourseForm, self).__init__(*args, **kwargs)
        if edit_mode:
            self.fields['title'].widget = forms.HiddenInput()
            self.fields['number'].widget = forms.HiddenInput()
            self.fields['team_admin'].widget = forms.HiddenInput()
            self.fields['organization'].widget = forms.HiddenInput()
Exemplo n.º 4
0
    def get_context_data(self):
        course_run = self.get_object()
        team_admin_name = course_run.course.course_team_admin
        organization = course_run.course.organizations.first()
        initial = {
            'organization': organization,
            'team_admin': team_admin_name,
        }

        return {
            'initial':
            initial,
            'course_run':
            self.get_object(),
            'team_admin_name':
            team_admin_name.get_full_name(),
            'organization_name':
            organization.name,
            'organization':
            organization,
            'publisher_hide_features_for_pilot':
            waffle.switch_is_active('publisher_hide_features_for_pilot'),
            'publisher_add_instructor_feature':
            waffle.switch_is_active('publisher_add_instructor_feature'),
            'is_internal_user':
            mixins.check_roles_access(self.request.user),
            'edit_mode':
            True,
        }
Exemplo n.º 5
0
    def get_context_data(self, **kwargs):
        context = super(CourseRunDetailView, self).get_context_data(**kwargs)

        user = self.request.user
        course_run = CourseRunWrapper(self.get_object())
        context['object'] = course_run
        context['comment_object'] = course_run
        context['post_back_url'] = reverse(
            'publisher:publisher_course_run_detail',
            kwargs={'pk': course_run.id})

        context['can_edit'] = mixins.check_course_organization_permission(
            user, course_run.course, OrganizationExtension.EDIT_COURSE_RUN)
        context['role_widgets'] = get_course_role_widgets_data(
            user, course_run.course, course_run.course_run_state,
            'publisher:api:change_course_run_state')
        course_run_state = course_run.course_run_state
        if course_run_state.preview_accepted:
            history_object = course_run_state.history.filter(
                preview_accepted=True).order_by('-modified').first()
            if history_object:
                context['preview_accepted_date'] = history_object.modified

        context['breadcrumbs'] = make_bread_crumbs([
            (reverse('publisher:publisher_courses'), 'Courses'),
            (reverse('publisher:publisher_course_detail',
                     kwargs={'pk':
                             course_run.course.id}), course_run.course.title),
            (None, '{type}: {start}'.format(
                type=course_run.get_pacing_type_display(),
                start=course_run.start.strftime("%B %d, %Y")))
        ])

        context['can_view_all_tabs'] = mixins.check_roles_access(user)
        context['publisher_hide_features_for_pilot'] = waffle.switch_is_active(
            'publisher_hide_features_for_pilot')
        context['publisher_comment_widget_feature'] = waffle.switch_is_active(
            'publisher_comment_widget_feature')
        context['publisher_approval_widget_feature'] = waffle.switch_is_active(
            'publisher_approval_widget_feature')

        return context
Exemplo n.º 6
0
 def has_object_permission(self, request, view, obj):
     user = request.user
     return (
         check_roles_access(user) or
         check_course_organization_permission(user, obj.course, OrganizationExtension.VIEW_COURSE)
     )
Exemplo n.º 7
0
 def test_check_roles_access_with_internal_user(self):
     """ Verify the function returns True if user is in an internal group, otherwise False. """
     self.assertFalse(check_roles_access(self.user))
     self.user.groups.add(self.internal_user_group)
     self.assertTrue(check_roles_access(self.user))
Exemplo n.º 8
0
 def test_check_roles_access_with_admin(self):
     """ Verify the function returns True if user is in an admin group, otherwise False. """
     self.assertFalse(check_roles_access(self.user))
     self.user.groups.add(self.admin_group)
     self.assertTrue(check_roles_access(self.user))
Exemplo n.º 9
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