def update_creator_group_callback(sender, **kwargs): """ Callback for when the model's creator status has changed. """ user = kwargs['user'] updated_state = kwargs['state'] update_course_creator_group(kwargs['caller'], user, updated_state == CourseCreator.GRANTED)
def update_creator_group_callback(sender, **kwargs): """ Callback for when the model's creator status has changed. """ user = kwargs['user'] updated_state = kwargs['state'] update_course_creator_group(kwargs['caller'], user, updated_state == CourseCreator.GRANTED) studio_request_email = settings.MITX_FEATURES.get('STUDIO_REQUEST_EMAIL','') context = {'studio_request_email': studio_request_email} subject = render_to_string('emails/course_creator_subject.txt', context) subject = ''.join(subject.splitlines()) if updated_state == CourseCreator.GRANTED: message_template = 'emails/course_creator_granted.txt' elif updated_state == CourseCreator.DENIED: message_template = 'emails/course_creator_denied.txt' else: # changed to unrequested or pending message_template = 'emails/course_creator_revoked.txt' message = render_to_string(message_template, context) try: user.email_user(subject, message, studio_request_email) except: log.warning("Unable to send course creator status e-mail to %s", user.email)
def test_update_creator_group(self): with mock.patch.dict('django.conf.settings.FEATURES', {"ENABLE_CREATOR_GROUP": True}): self.assertFalse(auth.has_access(self.user, CourseCreatorRole())) update_course_creator_group(self.admin, self.user, True) self.assertTrue(auth.has_access(self.user, CourseCreatorRole())) update_course_creator_group(self.admin, self.user, False) self.assertFalse(auth.has_access(self.user, CourseCreatorRole()))
def test_update_creator_group(self): with mock.patch.dict('django.conf.settings.FEATURES', {"ENABLE_CREATOR_GROUP": True}): self.assertFalse(is_user_in_creator_group(self.user)) update_course_creator_group(self.admin, self.user, True) self.assertTrue(is_user_in_creator_group(self.user)) update_course_creator_group(self.admin, self.user, False) self.assertFalse(is_user_in_creator_group(self.user))
def update_course_creator_status(request_user, user, set_creator): """ Updates course creator status of a user. """ from course_creators.models import CourseCreator from course_creators.views import update_course_creator_group course_creator, __ = CourseCreator.objects.get_or_create(user=user) course_creator.state = CourseCreator.GRANTED if set_creator else CourseCreator.UNREQUESTED course_creator.note = 'Course creator user was updated by panel admin {}'.format( request_user.email) course_creator.admin = request_user course_creator.save() if not set_creator: update_course_creator_group(request_user, user, set_creator) instructor_courses = UserBasedRole( user, CourseInstructorRole.ROLE).courses_with_role() staff_courses = UserBasedRole( user, CourseStaffRole.ROLE).courses_with_role() instructor_courses_keys = [ course.course_id for course in instructor_courses ] staff_courses_keys = [course.course_id for course in staff_courses] UserBasedRole( user, CourseInstructorRole.ROLE).remove_courses(*instructor_courses_keys) UserBasedRole(user, CourseStaffRole.ROLE).remove_courses(*staff_courses_keys)
def test_update_creator_group(self): with mock.patch.dict('django.conf.settings.FEATURES', {"ENABLE_CREATOR_GROUP": True}): self.assertFalse(auth.user_has_role(self.user, CourseCreatorRole())) update_course_creator_group(self.admin, self.user, True) self.assertTrue(auth.user_has_role(self.user, CourseCreatorRole())) update_course_creator_group(self.admin, self.user, False) self.assertFalse(auth.user_has_role(self.user, CourseCreatorRole()))
def test_update_creator_group(self): with mock.patch.dict('django.conf.settings.MITX_FEATURES', {"ENABLE_CREATOR_GROUP": True}): self.assertFalse(is_user_in_creator_group(self.user)) update_course_creator_group(self.admin, self.user, True) self.assertTrue(is_user_in_creator_group(self.user)) update_course_creator_group(self.admin, self.user, False) self.assertFalse(is_user_in_creator_group(self.user))
def test_staff_permission_required(self): """ Tests that any method changing the course creator authz group must be called with staff permissions. """ with self.assertRaises(PermissionDenied): add_user_with_status_granted(self.user, self.user) with self.assertRaises(PermissionDenied): update_course_creator_group(self.user, self.user, True)
def test_staff_permission_required(self): """ Tests that add methods and course creator group method must be called with staff permissions. """ with self.assertRaises(PermissionDenied): add_user_with_status_granted(self.user, self.user) with self.assertRaises(PermissionDenied): add_user_with_status_unrequested(self.user, self.user) with self.assertRaises(PermissionDenied): update_course_creator_group(self.user, self.user, True)
def set_global_course_creator_status(request, user, set_global_creator): """ Updates global course creator status of a user. """ from course_creators.models import CourseCreator from course_creators.views import update_course_creator_group request_user = request.user course_creator, __ = CourseCreator.objects.get_or_create(user=user) course_creator.state = CourseCreator.GRANTED if set_global_creator else CourseCreator.UNREQUESTED course_creator.note = 'Global course creator user was updated by panel admin {} on {}'.format( request_user.email, datetime.now()) course_creator.admin = request_user course_creator.save() edly_user_info_cookie = request.COOKIES.get( settings.EDLY_USER_INFO_COOKIE_NAME, None) edx_org = get_edx_org_from_cookie(edly_user_info_cookie) update_course_creator_group(request_user, user, set_global_creator) if set_global_creator: GlobalCourseCreatorRole(edx_org).add_users(user) else: GlobalCourseCreatorRole(edx_org).remove_users(user) instructor_courses = UserBasedRole( user, CourseInstructorRole.ROLE).courses_with_role() staff_courses = UserBasedRole( user, CourseStaffRole.ROLE).courses_with_role() instructor_courses_keys = [ course.course_id for course in instructor_courses ] staff_courses_keys = [course.course_id for course in staff_courses] UserBasedRole( user, CourseInstructorRole.ROLE).remove_courses(*instructor_courses_keys) UserBasedRole(user, CourseStaffRole.ROLE).remove_courses(*staff_courses_keys)
def update_creator_group_callback(sender, **kwargs): """ Callback for when the model's creator status has changed. """ update_course_creator_group(kwargs['caller'], kwargs['user'], kwargs['add'])