Commit 2146f0a66bf5f1cb3a4c82dfc0617c6068cd8dc6

Authored by Zambom
1 parent e05c0b18

Adding general post deletion

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 %}
mural/templates/mural/delete.html 0 → 100644
@@ -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
@@ -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', '')