From afce7b17780ec3ba98879adbf7507e1dfdaf9efd Mon Sep 17 00:00:00 2001 From: Zambom Date: Thu, 29 Sep 2016 07:45:09 -0300 Subject: [PATCH] Adding post deletion [Issue: #74] --- forum/static/js/forum.js | 32 ++++++++++++++++++++++++++++++++ forum/templates/post/post_list.html | 3 ++- forum/templates/post/post_render.html | 3 ++- forum/urls.py | 4 +++- forum/views.py | 12 ++++++++++++ 5 files changed, 51 insertions(+), 3 deletions(-) diff --git a/forum/static/js/forum.js b/forum/static/js/forum.js index 5fa5148..a95b380 100644 --- a/forum/static/js/forum.js +++ b/forum/static/js/forum.js @@ -1,3 +1,20 @@ +function getCookie(name) { + var cookieValue = null; + if (document.cookie && document.cookie !== '') { + var cookies = document.cookie.split(';'); + for (var i = 0; i < cookies.length; i++) { + var cookie = jQuery.trim(cookies[i]); + // Does this cookie string begin with the name we want? + if (cookie.substring(0, name.length + 1) === (name + '=')) { + cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); + break; + } + } + } + return cookieValue; +} + + /* * * Function to load forum to modal @@ -33,6 +50,21 @@ function showForum(url, forum_id) { $('#forumModal').modal(); } +function delete_post(url, post) { + var csrftoken = getCookie('csrftoken'); + + $.ajax({ + method: 'post', + beforeSend: function (request) { + request.setRequestHeader('X-CSRFToken', csrftoken); + }, + url: url, + success: function(data) { + $("#post_"+post).remove(); + } + }); +} + function answer(id, url) { $.ajax({ url: url, diff --git a/forum/templates/post/post_list.html b/forum/templates/post/post_list.html index d6af5e7..ee4066e 100644 --- a/forum/templates/post/post_list.html +++ b/forum/templates/post/post_list.html @@ -11,13 +11,14 @@ reply {% if request.user|has_role:'system_admin' or request.user|has_role:'professor' and request.user == post.user %} + {% csrf_token %}
{% endif %} diff --git a/forum/templates/post/post_render.html b/forum/templates/post/post_render.html index 3163aac..04c80be 100644 --- a/forum/templates/post/post_render.html +++ b/forum/templates/post/post_render.html @@ -9,13 +9,14 @@ reply {% if request.user|has_role:'system_admin' or request.user|has_role:'professor' and request.user == post.user %} + {% csrf_token %}
{% endif %} diff --git a/forum/urls.py b/forum/urls.py index 3d68afa..9163164 100644 --- a/forum/urls.py +++ b/forum/urls.py @@ -8,7 +8,9 @@ urlpatterns = [ url(r'^create$', views.CreateForumView.as_view(), name='create'), url(r'^posts$', views.PostIndex.as_view(), name='posts'), url(r'^create_post$', views.CreatePostView.as_view(), name='create_post'), - url(r'^render+post/([\w_-]+)/$', views.render_post, name='render_post'), + url(r'^render_post/([\w_-]+)/$', views.render_post, name='render_post'), + url(r'^delete_post/(?P[\w_-]+)/$', views.PostDeleteView.as_view(), name='delete_post'), + url(r'^post_deleted/$', views.post_deleted, name='deleted_post'), url(r'^post_answers$', views.PostAnswerIndex.as_view(), name='post_answers'), url(r'^reply_post$', views.CreatePostAnswerView.as_view(), name='reply_post'), ] diff --git a/forum/views.py b/forum/views.py index a67b771..bf8279f 100644 --- a/forum/views.py +++ b/forum/views.py @@ -1,3 +1,4 @@ +from django.http import HttpResponse from django.shortcuts import render, get_object_or_404 from django.core.urlresolvers import reverse, reverse_lazy from django.utils.translation import ugettext_lazy as _ @@ -76,6 +77,17 @@ def render_post(request, post): return render(request, "post/post_render.html", context) +class PostDeleteView(LoginRequiredMixin, generic.DeleteView): + login_url = reverse_lazy("core:home") + redirect_field_name = 'next' + + model = Post + pk_url_kwarg = 'pk' + success_url = reverse_lazy('forum:deleted_post') + +def post_deleted(request): + return HttpResponse(_("Post deleted successfully.")) + class PostAnswerIndex(LoginRequiredMixin, generic.ListView): login_url = reverse_lazy("core:home") redirect_field_name = 'next' -- libgit2 0.21.2