From a3fa7886239e96d62c37c4f58be9c6be59a0f27e Mon Sep 17 00:00:00 2001 From: Jailson Dias Date: Fri, 7 Oct 2016 13:38:33 -0300 Subject: [PATCH] Teste de deletar enquete #79, #114 --- poll/permissions.py | 10 ++++++++++ poll/tests/poll.py | 15 ++++++++++++++- poll/views.py | 12 ++++++------ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/poll/permissions.py b/poll/permissions.py index a124836..f353dea 100644 --- a/poll/permissions.py +++ b/poll/permissions.py @@ -10,3 +10,13 @@ def edit_poll(role, user, poll): return True return False + +@register_object_checker() +def delete_poll(role, user, poll): + if (role == SystemAdmin): + return True + + if (user in poll.topic.subject.professors.all()): + return True + + return False diff --git a/poll/tests/poll.py b/poll/tests/poll.py index 5ff0faa..eaaf009 100644 --- a/poll/tests/poll.py +++ b/poll/tests/poll.py @@ -113,6 +113,19 @@ class PollTestCase(TestCase): "limit_date":'2016-11-06', "all_students":True, } + self.client.login(username='student', password='testing') self.assertNotEqual(poll_student, self.topic.activities.all()[self.topic.activities.all().count() - 1].name) # old name response = self.client.post(url, data) - self.assertEqual(poll_student, self.topic.activities.all()[self.topic.activities.all().count() - 1].name) # new name + self.assertNotEqual(poll_student, self.topic.activities.all()[self.topic.activities.all().count() - 1].name) # new name + + def test_poll_delete(self): + url = reverse('course:poll:delete_poll',kwargs={'slug':self.poll.slug}) + self.client.login(username='student', password='testing') + poll = self.topic.activities.all().count() + response = self.client.post(url) + self.assertEqual(poll,self.topic.activities.all().count()) + + self.client.login(username='professor', password='testing') + poll = self.topic.activities.all().count() + response = self.client.post(url) + self.assertEqual(poll - 1,self.topic.activities.all().count()) diff --git a/poll/views.py b/poll/views.py index 5722112..269f9d7 100644 --- a/poll/views.py +++ b/poll/views.py @@ -125,7 +125,7 @@ class UpdatePoll(LoginRequiredMixin,HasRoleMixin,generic.UpdateView): return context -class DeletePoll(LoginRequiredMixin, generic.DeleteView): +class DeletePoll(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): allowed_roles = ['professor', 'system_admin'] login_url = reverse_lazy("core:home") @@ -133,11 +133,11 @@ class DeletePoll(LoginRequiredMixin, generic.DeleteView): model = Poll template_name = 'poll/remove.html' - # def dispatch(self, *args, **kwargs): - # poll = get_object_or_404(Poll, slug = self.kwargs.get('slug')) - # if(not has_object_permission('delete_subject', self.request.user, subject)): - # return self.handle_no_permission() - # return super(DeleteSubjectView, self).dispatch(*args, **kwargs) + def dispatch(self, *args, **kwargs): + poll = get_object_or_404(Poll, slug = self.kwargs.get('slug')) + if(not has_object_permission('delete_poll', self.request.user, poll)): + return self.handle_no_permission() + return super(DeletePoll, self).dispatch(*args, **kwargs) def get_context_data(self, **kwargs): -- libgit2 0.21.2