Commit 2146f0a66bf5f1cb3a4c82dfc0617c6068cd8dc6
1 parent
e05c0b18
Exists in
master
and in
3 other branches
Adding general post deletion
Showing
7 changed files
with
100 additions
and
4 deletions
Show diff stats
amadeus/static/css/base/amadeus.css
mural/models.py
| ... | ... | @@ -30,18 +30,28 @@ class Mural(KnowsChild): |
| 30 | 30 | def update_link(self): |
| 31 | 31 | pass |
| 32 | 32 | |
| 33 | + @always_as_child | |
| 34 | + def delete_link(self): | |
| 35 | + pass | |
| 36 | + | |
| 33 | 37 | class GeneralPost(Mural): |
| 34 | 38 | space = models.IntegerField(_('Space'), default = 0, blank = True) |
| 35 | 39 | |
| 36 | 40 | def update_link(self): |
| 37 | 41 | return "mural:update_general" |
| 38 | 42 | |
| 43 | + def delete_link(self): | |
| 44 | + return "mural:delete_general" | |
| 45 | + | |
| 39 | 46 | class CategoryPost(Mural): |
| 40 | 47 | space = models.ForeignKey(Category, verbose_name = ('Category'), related_name = 'post_category') |
| 41 | 48 | |
| 42 | 49 | def update_link(self): |
| 43 | 50 | return "" |
| 44 | 51 | |
| 52 | + def delete_link(self): | |
| 53 | + return "" | |
| 54 | + | |
| 45 | 55 | class SubjectPost(Mural): |
| 46 | 56 | space = models.ForeignKey(Subject, verbose_name = _('Subject'), related_name = 'post_subject') |
| 47 | 57 | resource = models.ForeignKey(Resource, verbose_name = _('Resource'), related_name = 'post_resource', null = True) |
| ... | ... | @@ -49,6 +59,9 @@ class SubjectPost(Mural): |
| 49 | 59 | def update_link(self): |
| 50 | 60 | return "" |
| 51 | 61 | |
| 62 | + def delete_link(self): | |
| 63 | + return "" | |
| 64 | + | |
| 52 | 65 | class Comment(models.Model): |
| 53 | 66 | comment = models.TextField(_('Comment'), blank = True) |
| 54 | 67 | image = models.ImageField(verbose_name = _('Image'), null=True, blank = True, upload_to = 'posts/comments/', validators = [validate_img_extension]) | ... | ... |
mural/templates/mural/_view.html
| ... | ... | @@ -20,7 +20,7 @@ |
| 20 | 20 | <ul class="dropdown-menu pull-right" aria-labelledby="moreActions"> |
| 21 | 21 | <li><a onclick="editPost($(this));" data-url="{% url post.update_link post.id %}" data-post="{{ post.id }}"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i> {% trans 'Edit' %}</a></li> |
| 22 | 22 | <li> |
| 23 | - <a href="" aria-hidden="true"><i class="fa fa-trash fa-fw" aria-hidden="true"></i> {% trans 'Remove' %}</a></li> | |
| 23 | + <a onclick="deletePost($(this))" data-url="{% url post.delete_link post.id %}" data-post="{{ post.id }}" aria-hidden="true"><i class="fa fa-trash fa-fw" aria-hidden="true"></i> {% trans 'Remove' %}</a></li> | |
| 24 | 24 | </ul> |
| 25 | 25 | </span> |
| 26 | 26 | {% endif %} | ... | ... |
| ... | ... | @@ -0,0 +1,20 @@ |
| 1 | +{% load i18n %} | |
| 2 | + | |
| 3 | +<div class="modal-dialog" role="document"> | |
| 4 | + <div class="modal-content"> | |
| 5 | + <div class="modal-body"> | |
| 6 | + <form id="delete_form" action="{{ form_url }}" method="post"> | |
| 7 | + {% csrf_token %} | |
| 8 | + <h4>{% trans 'Are you sure you want to delete this post' %}?</h4> | |
| 9 | + </form> | |
| 10 | + </div> | |
| 11 | + <div class="modal-footer"> | |
| 12 | + <div class="pull-right"> | |
| 13 | + <button type="button" class="btn btn-default btn-raised" data-dismiss="modal">{% trans "Close" %}</button> | |
| 14 | + </div> | |
| 15 | + <div class="pull-left"> | |
| 16 | + <button type="submit" form="delete_form" class="btn btn-success btn-raised">{% trans "Delete" %}</button> | |
| 17 | + </div> | |
| 18 | + </div> | |
| 19 | + </div> | |
| 20 | +</div> | |
| 0 | 21 | \ No newline at end of file | ... | ... |
mural/templates/mural/list.html
| ... | ... | @@ -136,20 +136,57 @@ |
| 136 | 136 | function editPost(btn) { |
| 137 | 137 | var url = btn.data('url'); |
| 138 | 138 | var post = btn.data('post'); |
| 139 | + | |
| 140 | + $.ajax({ | |
| 141 | + url: url, | |
| 142 | + success: function (data) { | |
| 143 | + $('#post-modal-form').html(data); | |
| 139 | 144 | |
| 140 | - console.log(url); | |
| 141 | - console.log(post); | |
| 145 | + setPostFormSubmit(post); | |
| 146 | + | |
| 147 | + $('#post-modal-form').modal('show'); | |
| 148 | + } | |
| 149 | + }); | |
| 150 | + } | |
| 151 | + | |
| 152 | + function deletePost(btn) { | |
| 153 | + var url = btn.data('url'); | |
| 154 | + var post = btn.data('post'); | |
| 142 | 155 | |
| 143 | 156 | $.ajax({ |
| 144 | 157 | url: url, |
| 145 | 158 | success: function (data) { |
| 146 | 159 | $('#post-modal-form').html(data); |
| 147 | 160 | |
| 148 | - setPostFormSubmit(post); | |
| 161 | + setPostDeleteSubmit(post); | |
| 149 | 162 | |
| 150 | 163 | $('#post-modal-form').modal('show'); |
| 151 | 164 | } |
| 152 | 165 | }); |
| 153 | 166 | } |
| 167 | + | |
| 168 | + function setPostDeleteSubmit (post) { | |
| 169 | + var frm = $("#delete_form"); | |
| 170 | + | |
| 171 | + frm.submit(function () { | |
| 172 | + $.ajax({ | |
| 173 | + type: frm.attr('method'), | |
| 174 | + url: frm.attr('action'), | |
| 175 | + data: frm.serialize(), | |
| 176 | + success: function (response) { | |
| 177 | + $("#post-" + post).remove(); | |
| 178 | + | |
| 179 | + $('#post-modal-form').modal('hide'); | |
| 180 | + | |
| 181 | + alertify.success(response.msg); | |
| 182 | + }, | |
| 183 | + error: function (data) { | |
| 184 | + console.log(data); | |
| 185 | + } | |
| 186 | + }); | |
| 187 | + | |
| 188 | + return false; | |
| 189 | + }); | |
| 190 | + } | |
| 154 | 191 | </script> |
| 155 | 192 | {% endblock %} |
| 156 | 193 | \ No newline at end of file | ... | ... |
mural/urls.py
| ... | ... | @@ -5,6 +5,8 @@ urlpatterns = [ |
| 5 | 5 | url(r'^$', views.GeneralIndex.as_view(), name='manage_general'), |
| 6 | 6 | url(r'^create_gen/$', views.GeneralCreate.as_view(), name='create_general'), |
| 7 | 7 | url(r'^update_gen/(?P<pk>[\w_-]+)/$', views.GeneralUpdate.as_view(), name='update_general'), |
| 8 | + url(r'^delete_gen/(?P<pk>[\w_-]+)/$', views.GeneralDelete.as_view(), name='delete_general'), | |
| 8 | 9 | url(r'^render_post/([\w_-]+)/([\w_-]+)/$', views.render_gen_post, name='render_post_general'), |
| 9 | 10 | url(r'^favorite/([\w_-]+)/$', views.favorite, name='favorite'), |
| 11 | + url(r'^deleted/$', views.deleted_post, name='deleted_post'), | |
| 10 | 12 | ] |
| 11 | 13 | \ No newline at end of file | ... | ... |
mural/views.py
| ... | ... | @@ -132,6 +132,23 @@ class GeneralUpdate(LoginRequiredMixin, generic.UpdateView): |
| 132 | 132 | def get_success_url(self): |
| 133 | 133 | return reverse_lazy('mural:render_post_general', args = (self.object.id, 'update', )) |
| 134 | 134 | |
| 135 | +class GeneralDelete(LoginRequiredMixin, generic.DeleteView): | |
| 136 | + login_url = reverse_lazy("users:login") | |
| 137 | + redirect_field_name = 'next' | |
| 138 | + | |
| 139 | + template_name = 'mural/delete.html' | |
| 140 | + model = GeneralPost | |
| 141 | + | |
| 142 | + def get_context_data(self, *args, **kwargs): | |
| 143 | + context = super(GeneralDelete, self).get_context_data(*args, **kwargs) | |
| 144 | + | |
| 145 | + context['form_url'] = reverse_lazy("mural:delete_general", args = (), kwargs = {'pk': self.object.id}) | |
| 146 | + | |
| 147 | + return context | |
| 148 | + | |
| 149 | + def get_success_url(self): | |
| 150 | + return reverse_lazy('mural:deleted_post') | |
| 151 | + | |
| 135 | 152 | def render_gen_post(request, post, msg): |
| 136 | 153 | post = get_object_or_404(GeneralPost, id = post) |
| 137 | 154 | |
| ... | ... | @@ -149,6 +166,9 @@ def render_gen_post(request, post, msg): |
| 149 | 166 | |
| 150 | 167 | return JsonResponse({'message': msg, 'view': html}) |
| 151 | 168 | |
| 169 | +def deleted_post(request): | |
| 170 | + return JsonResponse({'msg': _('Post deleted successfully!')}) | |
| 171 | + | |
| 152 | 172 | @login_required |
| 153 | 173 | def favorite(request, post): |
| 154 | 174 | action = request.GET.get('action', '') | ... | ... |