Ejemplo n.º 1
0
    def post(self, request, course_id, rolename):
        """
        Implement a handler for the POST method.
        """
        kwargs = self._get_request_kwargs(course_id, rolename)
        form = CourseDiscussionRolesForm(kwargs, request_user=request.user)
        if not form.is_valid():
            raise ValidationError(form.errors)

        course_id = form.cleaned_data['course_key']
        rolename = form.cleaned_data['rolename']

        serializer = DiscussionRolesSerializer(data=request.data)
        if not serializer.is_valid():
            raise ValidationError(serializer.errors)

        action = serializer.validated_data['action']
        user = serializer.validated_data['user']
        try:
            update_forum_role(course_id, user, rolename, action)
        except Role.DoesNotExist:
            raise ValidationError(u"Role '{}' does not exist".format(rolename))

        role = form.cleaned_data['role']
        data = {'course_id': course_id, 'users': role.users.all()}
        context = {
            'course_discussion_settings':
            get_course_discussion_settings(course_id)
        }
        serializer = DiscussionRolesListSerializer(data, context=context)
        return Response(serializer.data)
 def test_revoke_badrole(self):
     user = self.moderators[0]
     with pytest.raises(Role.DoesNotExist):
         update_forum_role(self.course.id, user, 'robot-not-a-real-role', 'allow')
 def test_bad_mode(self):
     user = UserFactory()
     with pytest.raises(ValueError):
         update_forum_role(self.course.id, user, FORUM_ROLE_MODERATOR, 'robot-not-a-mode')
 def test_revoke_twice(self):
     user = self.moderators[0]
     update_forum_role(self.course.id, user, FORUM_ROLE_MODERATOR, 'revoke')
     self.assertNotIn(user, self.mod_role.users.all())
     update_forum_role(self.course.id, user, FORUM_ROLE_MODERATOR, 'revoke')
     self.assertNotIn(user, self.mod_role.users.all())
 def test_revoke_notallowed(self):
     user = UserFactory()
     update_forum_role(self.course.id, user, FORUM_ROLE_MODERATOR, 'revoke')
     self.assertNotIn(user, self.mod_role.users.all())
 def test_allow_twice(self):
     user = UserFactory.create()
     update_forum_role(self.course.id, user, FORUM_ROLE_MODERATOR, 'allow')
     self.assertIn(user, self.mod_role.users.all())
     update_forum_role(self.course.id, user, FORUM_ROLE_MODERATOR, 'allow')
     self.assertIn(user, self.mod_role.users.all())
 def test_allow_badrole(self):
     user = UserFactory.create()
     with pytest.raises(Role.DoesNotExist):
         update_forum_role(self.course.id, user, 'robot-not-a-real-role', 'allow')
Ejemplo n.º 8
0
 def test_revoke(self):
     user = self.moderators[0]
     update_forum_role(self.course.id, user, FORUM_ROLE_MODERATOR, 'revoke')
     assert user not in self.mod_role.users.all()
Ejemplo n.º 9
0
 def test_allow(self):
     user = UserFactory.create()
     update_forum_role(self.course.id, user, FORUM_ROLE_MODERATOR, 'allow')
     assert user in self.mod_role.users.all()
Ejemplo n.º 10
0
 def test_bad_mode(self):
     user = UserFactory()
     update_forum_role(self.course.id, user, FORUM_ROLE_MODERATOR, 'robot-not-a-mode')
Ejemplo n.º 11
0
 def test_revoke_badrole(self):
     user = self.moderators[0]
     update_forum_role(self.course.id, user, 'robot-not-a-real-role', 'allow')
Ejemplo n.º 12
0
 def test_allow_badrole(self):
     user = UserFactory.create()
     update_forum_role(self.course.id, user, 'robot-not-a-real-role', 'allow')