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', '') | ... | ... |