From 2146f0a66bf5f1cb3a4c82dfc0617c6068cd8dc6 Mon Sep 17 00:00:00 2001 From: Zambom Date: Mon, 6 Feb 2017 19:46:51 -0200 Subject: [PATCH] Adding general post deletion --- amadeus/static/css/base/amadeus.css | 4 ++++ mural/models.py | 13 +++++++++++++ mural/templates/mural/_view.html | 2 +- mural/templates/mural/delete.html | 20 ++++++++++++++++++++ mural/templates/mural/list.html | 43 ++++++++++++++++++++++++++++++++++++++++--- mural/urls.py | 2 ++ mural/views.py | 20 ++++++++++++++++++++ 7 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 mural/templates/mural/delete.html diff --git a/amadeus/static/css/base/amadeus.css b/amadeus/static/css/base/amadeus.css index 1394306..33b1f49 100755 --- a/amadeus/static/css/base/amadeus.css +++ b/amadeus/static/css/base/amadeus.css @@ -1018,6 +1018,10 @@ li.item .notify_badge { margin: 0; } +.post .post-user .btn-group .dropdown-menu a { + cursor: pointer; +} + .post .post-user .btn-group .btn_menu i { font-size: 18px; } diff --git a/mural/models.py b/mural/models.py index c803c91..3754a7e 100644 --- a/mural/models.py +++ b/mural/models.py @@ -30,18 +30,28 @@ class Mural(KnowsChild): def update_link(self): pass + @always_as_child + def delete_link(self): + pass + class GeneralPost(Mural): space = models.IntegerField(_('Space'), default = 0, blank = True) def update_link(self): return "mural:update_general" + def delete_link(self): + return "mural:delete_general" + class CategoryPost(Mural): space = models.ForeignKey(Category, verbose_name = ('Category'), related_name = 'post_category') def update_link(self): return "" + def delete_link(self): + return "" + class SubjectPost(Mural): space = models.ForeignKey(Subject, verbose_name = _('Subject'), related_name = 'post_subject') resource = models.ForeignKey(Resource, verbose_name = _('Resource'), related_name = 'post_resource', null = True) @@ -49,6 +59,9 @@ class SubjectPost(Mural): def update_link(self): return "" + def delete_link(self): + return "" + class Comment(models.Model): comment = models.TextField(_('Comment'), blank = True) image = models.ImageField(verbose_name = _('Image'), null=True, blank = True, upload_to = 'posts/comments/', validators = [validate_img_extension]) diff --git a/mural/templates/mural/_view.html b/mural/templates/mural/_view.html index 2b0008c..2876dba 100644 --- a/mural/templates/mural/_view.html +++ b/mural/templates/mural/_view.html @@ -20,7 +20,7 @@ {% endif %} diff --git a/mural/templates/mural/delete.html b/mural/templates/mural/delete.html new file mode 100644 index 0000000..28ac6c0 --- /dev/null +++ b/mural/templates/mural/delete.html @@ -0,0 +1,20 @@ +{% load i18n %} + + \ No newline at end of file diff --git a/mural/templates/mural/list.html b/mural/templates/mural/list.html index e169203..dd334fe 100644 --- a/mural/templates/mural/list.html +++ b/mural/templates/mural/list.html @@ -136,20 +136,57 @@ function editPost(btn) { var url = btn.data('url'); var post = btn.data('post'); + + $.ajax({ + url: url, + success: function (data) { + $('#post-modal-form').html(data); - console.log(url); - console.log(post); + setPostFormSubmit(post); + + $('#post-modal-form').modal('show'); + } + }); + } + + function deletePost(btn) { + var url = btn.data('url'); + var post = btn.data('post'); $.ajax({ url: url, success: function (data) { $('#post-modal-form').html(data); - setPostFormSubmit(post); + setPostDeleteSubmit(post); $('#post-modal-form').modal('show'); } }); } + + function setPostDeleteSubmit (post) { + var frm = $("#delete_form"); + + frm.submit(function () { + $.ajax({ + type: frm.attr('method'), + url: frm.attr('action'), + data: frm.serialize(), + success: function (response) { + $("#post-" + post).remove(); + + $('#post-modal-form').modal('hide'); + + alertify.success(response.msg); + }, + error: function (data) { + console.log(data); + } + }); + + return false; + }); + } {% endblock %} \ No newline at end of file diff --git a/mural/urls.py b/mural/urls.py index 625f347..6366492 100644 --- a/mural/urls.py +++ b/mural/urls.py @@ -5,6 +5,8 @@ urlpatterns = [ url(r'^$', views.GeneralIndex.as_view(), name='manage_general'), url(r'^create_gen/$', views.GeneralCreate.as_view(), name='create_general'), url(r'^update_gen/(?P[\w_-]+)/$', views.GeneralUpdate.as_view(), name='update_general'), + url(r'^delete_gen/(?P[\w_-]+)/$', views.GeneralDelete.as_view(), name='delete_general'), url(r'^render_post/([\w_-]+)/([\w_-]+)/$', views.render_gen_post, name='render_post_general'), url(r'^favorite/([\w_-]+)/$', views.favorite, name='favorite'), + url(r'^deleted/$', views.deleted_post, name='deleted_post'), ] \ No newline at end of file diff --git a/mural/views.py b/mural/views.py index 4fb73fc..9ac23d5 100644 --- a/mural/views.py +++ b/mural/views.py @@ -132,6 +132,23 @@ class GeneralUpdate(LoginRequiredMixin, generic.UpdateView): def get_success_url(self): return reverse_lazy('mural:render_post_general', args = (self.object.id, 'update', )) +class GeneralDelete(LoginRequiredMixin, generic.DeleteView): + login_url = reverse_lazy("users:login") + redirect_field_name = 'next' + + template_name = 'mural/delete.html' + model = GeneralPost + + def get_context_data(self, *args, **kwargs): + context = super(GeneralDelete, self).get_context_data(*args, **kwargs) + + context['form_url'] = reverse_lazy("mural:delete_general", args = (), kwargs = {'pk': self.object.id}) + + return context + + def get_success_url(self): + return reverse_lazy('mural:deleted_post') + def render_gen_post(request, post, msg): post = get_object_or_404(GeneralPost, id = post) @@ -149,6 +166,9 @@ def render_gen_post(request, post, msg): return JsonResponse({'message': msg, 'view': html}) +def deleted_post(request): + return JsonResponse({'msg': _('Post deleted successfully!')}) + @login_required def favorite(request, post): action = request.GET.get('action', '') -- libgit2 0.21.2