Commit a3fa7886239e96d62c37c4f58be9c6be59a0f27e

Authored by Jailson Dias
1 parent 11b3072e

Teste de deletar enquete #79, #114

poll/permissions.py
... ... @@ -10,3 +10,13 @@ def edit_poll(role, user, poll):
10 10 return True
11 11  
12 12 return False
  13 +
  14 +@register_object_checker()
  15 +def delete_poll(role, user, poll):
  16 + if (role == SystemAdmin):
  17 + return True
  18 +
  19 + if (user in poll.topic.subject.professors.all()):
  20 + return True
  21 +
  22 + return False
... ...
poll/tests/poll.py
... ... @@ -113,6 +113,19 @@ class PollTestCase(TestCase):
113 113 "limit_date":'2016-11-06',
114 114 "all_students":True,
115 115 }
  116 + self.client.login(username='student', password='testing')
116 117 self.assertNotEqual(poll_student, self.topic.activities.all()[self.topic.activities.all().count() - 1].name) # old name
117 118 response = self.client.post(url, data)
118   - self.assertEqual(poll_student, self.topic.activities.all()[self.topic.activities.all().count() - 1].name) # new name
  119 + self.assertNotEqual(poll_student, self.topic.activities.all()[self.topic.activities.all().count() - 1].name) # new name
  120 +
  121 + def test_poll_delete(self):
  122 + url = reverse('course:poll:delete_poll',kwargs={'slug':self.poll.slug})
  123 + self.client.login(username='student', password='testing')
  124 + poll = self.topic.activities.all().count()
  125 + response = self.client.post(url)
  126 + self.assertEqual(poll,self.topic.activities.all().count())
  127 +
  128 + self.client.login(username='professor', password='testing')
  129 + poll = self.topic.activities.all().count()
  130 + response = self.client.post(url)
  131 + self.assertEqual(poll - 1,self.topic.activities.all().count())
... ...
poll/views.py
... ... @@ -125,7 +125,7 @@ class UpdatePoll(LoginRequiredMixin,HasRoleMixin,generic.UpdateView):
125 125  
126 126 return context
127 127  
128   -class DeletePoll(LoginRequiredMixin, generic.DeleteView):
  128 +class DeletePoll(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
129 129  
130 130 allowed_roles = ['professor', 'system_admin']
131 131 login_url = reverse_lazy("core:home")
... ... @@ -133,11 +133,11 @@ class DeletePoll(LoginRequiredMixin, generic.DeleteView):
133 133 model = Poll
134 134 template_name = 'poll/remove.html'
135 135  
136   - # def dispatch(self, *args, **kwargs):
137   - # poll = get_object_or_404(Poll, slug = self.kwargs.get('slug'))
138   - # if(not has_object_permission('delete_subject', self.request.user, subject)):
139   - # return self.handle_no_permission()
140   - # return super(DeleteSubjectView, self).dispatch(*args, **kwargs)
  136 + def dispatch(self, *args, **kwargs):
  137 + poll = get_object_or_404(Poll, slug = self.kwargs.get('slug'))
  138 + if(not has_object_permission('delete_poll', self.request.user, poll)):
  139 + return self.handle_no_permission()
  140 + return super(DeletePoll, self).dispatch(*args, **kwargs)
141 141  
142 142  
143 143 def get_context_data(self, **kwargs):
... ...