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))
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))
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()
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, }
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
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) )
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))
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))
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