Skip to content

Commit

Permalink
Nouvelle vue pour le signalement (#4529)
Browse files Browse the repository at this point in the history
  • Loading branch information
pierre-24 committed Aug 15, 2017
1 parent e9ec329 commit 99662d4
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 9 deletions.
2 changes: 1 addition & 1 deletion templates/forum/topic/index.html
Expand Up @@ -86,7 +86,7 @@

{% captureas hide_link %}{{ post_action_link }}{% endcaptureas %}
{% captureas show_link %}{{ post_action_link }}{% endcaptureas %}
{% captureas alert_link %}{{ post_action_link }}{% endcaptureas %}
{% captureas alert_link %}{% url 'post-create-alert' %}?message={{ message.pk }}{% endcaptureas %}

{% captureas cite_link %}
{% url 'post-new' %}?sujet={{ topic.pk }}&cite={{ message.pk }}
Expand Down
6 changes: 3 additions & 3 deletions zds/forum/tests/tests.py
Expand Up @@ -477,7 +477,7 @@ def test_signal_post(self):
PostFactory(topic=topic1, author=user1, position=3)

result = self.client.post(
reverse('post-edit') + '?message={0}'.format(post2.pk),
reverse('post-create-alert') + '?message={0}'.format(post2.pk),
{
'signal_text': u'Troll',
'signal_message': 'confirmer'
Expand All @@ -490,7 +490,7 @@ def test_signal_post(self):
self.assertEqual(Alert.objects.get(author=self.user, solved=False).text, u'Troll')

result = self.client.post(
reverse('post-edit') + '?message={0}'.format(post1.pk),
reverse('post-create-alert') + '?message={0}'.format(post1.pk),
{
'signal_text': u'Bad title',
'signal_message': 'confirmer'
Expand Down Expand Up @@ -552,7 +552,7 @@ def test_signal_and_solve_alert_empty_message(self):
PostFactory(topic=topic1, author=user1, position=3)

result = self.client.post(
reverse('post-edit') + '?message={0}'.format(post2.pk),
reverse('post-create-alert') + '?message={0}'.format(post2.pk),
{
'signal_text': u'Troll',
'signal_message': 'confirmer'
Expand Down
2 changes: 1 addition & 1 deletion zds/forum/tests/tests_views.py
Expand Up @@ -1398,7 +1398,7 @@ def test_success_edit_post_alert_message(self):
'signal_text': text_expected
}
response = self.client.post(
reverse('post-edit') + '?message={}'.format(topic.last_message.pk), data, follow=False)
reverse('post-create-alert') + '?message={}'.format(topic.last_message.pk), data, follow=False)

self.assertEqual(302, response.status_code)
post = Post.objects.get(pk=topic.last_message.pk)
Expand Down
3 changes: 2 additions & 1 deletion zds/forum/urls.py
Expand Up @@ -4,7 +4,7 @@

from zds.forum import feeds
from zds.forum.views import CategoriesForumsListView, CategoryForumsDetailView, ForumTopicsListView, \
TopicPostsListView, TopicNew, TopicEdit, FindTopic, FindTopicByTag, PostNew, PostEdit, \
TopicPostsListView, TopicNew, TopicEdit, FindTopic, FindTopicByTag, PostNew, PostEdit, PostSignal, \
PostUseful, PostUnread, FindPost, solve_alert, ManageGitHubIssue

urlpatterns = [
Expand Down Expand Up @@ -34,6 +34,7 @@
url(r'^message/nouveau/$', PostNew.as_view(), name='post-new'),
url(r'^message/editer/$', PostEdit.as_view(), name='post-edit'),
url(r'^message/utile/$', PostUseful.as_view(), name='post-useful'),
url(r'^message/signaler/$', PostSignal.as_view(), name='post-create-alert'),
url(r'^message/nonlu/$', PostUnread.as_view(), name='post-unread'),
url(r'^messages/(?P<user_pk>\d+)/$', FindPost.as_view(), name='post-find'),

Expand Down
32 changes: 29 additions & 3 deletions zds/forum/views.py
Expand Up @@ -505,8 +505,7 @@ def dispatch(self, request, *args, **kwargs):
self.object = self.get_object()
if not self.object.topic.forum.can_read(request.user):
raise PermissionDenied
if self.object.author != request.user and not request.user.has_perm(
'forum.change_post') and 'signal_message' not in request.POST:
if self.object.author != request.user and not request.user.has_perm('forum.change_post'):
raise PermissionDenied
if not self.object.is_visible and not request.user.has_perm('forum.change_post'):
raise PermissionDenied
Expand Down Expand Up @@ -554,7 +553,7 @@ def post(self, request, *args, **kwargs):
if 'show_message' in request.POST:
self.perform_show_message(self.request, self.object)
if 'signal_message' in request.POST:
self.perform_alert_message(request, self.object, request.user, request.POST.get('signal_text'))
raise PermissionDenied('Not the good URL anymore!')

self.object.save()
return redirect(self.object.get_absolute_url())
Expand All @@ -574,6 +573,33 @@ def form_valid(self, form):
return redirect(post.get_absolute_url())


class PostSignal(UpdateView, SinglePostObjectMixin, PostEditMixin):

http_method_names = [u'post']

@method_decorator(login_required)
@method_decorator(can_write_and_read_now)
@method_decorator(transaction.atomic)
def dispatch(self, request, *args, **kwargs):
self.object = self.get_object()

if not self.object.topic.forum.can_read(request.user):
raise PermissionDenied
if not self.object.is_visible and not request.user.has_perm('forum.change_post'):
raise PermissionDenied

return super(PostSignal, self).dispatch(request, *args, **kwargs)

def post(self, request, *args, **kwargs):
if 'signal_message' in request.POST:
self.perform_alert_message(request, self.object, request.user, request.POST.get('signal_text'))
else:
raise Http404('no signal_message in POST')

self.object.save()
return redirect(self.object.get_absolute_url())


class PostUseful(UpdateView, SinglePostObjectMixin, PostEditMixin):

@method_decorator(require_POST)
Expand Down

0 comments on commit 99662d4

Please sign in to comment.