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
@@ -1018,6 +1018,10 @@ li.item .notify_badge { | @@ -1018,6 +1018,10 @@ li.item .notify_badge { | ||
1018 | margin: 0; | 1018 | margin: 0; |
1019 | } | 1019 | } |
1020 | 1020 | ||
1021 | +.post .post-user .btn-group .dropdown-menu a { | ||
1022 | + cursor: pointer; | ||
1023 | +} | ||
1024 | + | ||
1021 | .post .post-user .btn-group .btn_menu i { | 1025 | .post .post-user .btn-group .btn_menu i { |
1022 | font-size: 18px; | 1026 | font-size: 18px; |
1023 | } | 1027 | } |
mural/models.py
@@ -30,18 +30,28 @@ class Mural(KnowsChild): | @@ -30,18 +30,28 @@ class Mural(KnowsChild): | ||
30 | def update_link(self): | 30 | def update_link(self): |
31 | pass | 31 | pass |
32 | 32 | ||
33 | + @always_as_child | ||
34 | + def delete_link(self): | ||
35 | + pass | ||
36 | + | ||
33 | class GeneralPost(Mural): | 37 | class GeneralPost(Mural): |
34 | space = models.IntegerField(_('Space'), default = 0, blank = True) | 38 | space = models.IntegerField(_('Space'), default = 0, blank = True) |
35 | 39 | ||
36 | def update_link(self): | 40 | def update_link(self): |
37 | return "mural:update_general" | 41 | return "mural:update_general" |
38 | 42 | ||
43 | + def delete_link(self): | ||
44 | + return "mural:delete_general" | ||
45 | + | ||
39 | class CategoryPost(Mural): | 46 | class CategoryPost(Mural): |
40 | space = models.ForeignKey(Category, verbose_name = ('Category'), related_name = 'post_category') | 47 | space = models.ForeignKey(Category, verbose_name = ('Category'), related_name = 'post_category') |
41 | 48 | ||
42 | def update_link(self): | 49 | def update_link(self): |
43 | return "" | 50 | return "" |
44 | 51 | ||
52 | + def delete_link(self): | ||
53 | + return "" | ||
54 | + | ||
45 | class SubjectPost(Mural): | 55 | class SubjectPost(Mural): |
46 | space = models.ForeignKey(Subject, verbose_name = _('Subject'), related_name = 'post_subject') | 56 | space = models.ForeignKey(Subject, verbose_name = _('Subject'), related_name = 'post_subject') |
47 | resource = models.ForeignKey(Resource, verbose_name = _('Resource'), related_name = 'post_resource', null = True) | 57 | resource = models.ForeignKey(Resource, verbose_name = _('Resource'), related_name = 'post_resource', null = True) |
@@ -49,6 +59,9 @@ class SubjectPost(Mural): | @@ -49,6 +59,9 @@ class SubjectPost(Mural): | ||
49 | def update_link(self): | 59 | def update_link(self): |
50 | return "" | 60 | return "" |
51 | 61 | ||
62 | + def delete_link(self): | ||
63 | + return "" | ||
64 | + | ||
52 | class Comment(models.Model): | 65 | class Comment(models.Model): |
53 | comment = models.TextField(_('Comment'), blank = True) | 66 | comment = models.TextField(_('Comment'), blank = True) |
54 | image = models.ImageField(verbose_name = _('Image'), null=True, blank = True, upload_to = 'posts/comments/', validators = [validate_img_extension]) | 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,7 +20,7 @@ | ||
20 | <ul class="dropdown-menu pull-right" aria-labelledby="moreActions"> | 20 | <ul class="dropdown-menu pull-right" aria-labelledby="moreActions"> |
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> | 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 | <li> | 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 | </ul> | 24 | </ul> |
25 | </span> | 25 | </span> |
26 | {% endif %} | 26 | {% endif %} |
@@ -0,0 +1,20 @@ | @@ -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 | \ No newline at end of file | 21 | \ No newline at end of file |
mural/templates/mural/list.html
@@ -136,20 +136,57 @@ | @@ -136,20 +136,57 @@ | ||
136 | function editPost(btn) { | 136 | function editPost(btn) { |
137 | var url = btn.data('url'); | 137 | var url = btn.data('url'); |
138 | var post = btn.data('post'); | 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 | $.ajax({ | 156 | $.ajax({ |
144 | url: url, | 157 | url: url, |
145 | success: function (data) { | 158 | success: function (data) { |
146 | $('#post-modal-form').html(data); | 159 | $('#post-modal-form').html(data); |
147 | 160 | ||
148 | - setPostFormSubmit(post); | 161 | + setPostDeleteSubmit(post); |
149 | 162 | ||
150 | $('#post-modal-form').modal('show'); | 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 | </script> | 191 | </script> |
155 | {% endblock %} | 192 | {% endblock %} |
156 | \ No newline at end of file | 193 | \ No newline at end of file |
mural/urls.py
@@ -5,6 +5,8 @@ urlpatterns = [ | @@ -5,6 +5,8 @@ urlpatterns = [ | ||
5 | url(r'^$', views.GeneralIndex.as_view(), name='manage_general'), | 5 | url(r'^$', views.GeneralIndex.as_view(), name='manage_general'), |
6 | url(r'^create_gen/$', views.GeneralCreate.as_view(), name='create_general'), | 6 | url(r'^create_gen/$', views.GeneralCreate.as_view(), name='create_general'), |
7 | url(r'^update_gen/(?P<pk>[\w_-]+)/$', views.GeneralUpdate.as_view(), name='update_general'), | 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 | url(r'^render_post/([\w_-]+)/([\w_-]+)/$', views.render_gen_post, name='render_post_general'), | 9 | url(r'^render_post/([\w_-]+)/([\w_-]+)/$', views.render_gen_post, name='render_post_general'), |
9 | url(r'^favorite/([\w_-]+)/$', views.favorite, name='favorite'), | 10 | url(r'^favorite/([\w_-]+)/$', views.favorite, name='favorite'), |
11 | + url(r'^deleted/$', views.deleted_post, name='deleted_post'), | ||
10 | ] | 12 | ] |
11 | \ No newline at end of file | 13 | \ No newline at end of file |
mural/views.py
@@ -132,6 +132,23 @@ class GeneralUpdate(LoginRequiredMixin, generic.UpdateView): | @@ -132,6 +132,23 @@ class GeneralUpdate(LoginRequiredMixin, generic.UpdateView): | ||
132 | def get_success_url(self): | 132 | def get_success_url(self): |
133 | return reverse_lazy('mural:render_post_general', args = (self.object.id, 'update', )) | 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 | def render_gen_post(request, post, msg): | 152 | def render_gen_post(request, post, msg): |
136 | post = get_object_or_404(GeneralPost, id = post) | 153 | post = get_object_or_404(GeneralPost, id = post) |
137 | 154 | ||
@@ -149,6 +166,9 @@ def render_gen_post(request, post, msg): | @@ -149,6 +166,9 @@ def render_gen_post(request, post, msg): | ||
149 | 166 | ||
150 | return JsonResponse({'message': msg, 'view': html}) | 167 | return JsonResponse({'message': msg, 'view': html}) |
151 | 168 | ||
169 | +def deleted_post(request): | ||
170 | + return JsonResponse({'msg': _('Post deleted successfully!')}) | ||
171 | + | ||
152 | @login_required | 172 | @login_required |
153 | def favorite(request, post): | 173 | def favorite(request, post): |
154 | action = request.GET.get('action', '') | 174 | action = request.GET.get('action', '') |