Commit a3fa7886239e96d62c37c4f58be9c6be59a0f27e
1 parent
11b3072e
Exists in
master
and in
5 other branches
Teste de deletar enquete #79, #114
Showing
3 changed files
with
30 additions
and
7 deletions
Show diff stats
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): | ... | ... |