Commit d6e5638b9f3b5255383df0a06154a54e0aa694e9

Authored by Zambom
1 parent 809705cc

Adding topic deletion

amadeus/static/js/topics.js
@@ -63,4 +63,14 @@ function sendUpdate(data) { @@ -63,4 +63,14 @@ function sendUpdate(data) {
63 console.log(response); 63 console.log(response);
64 } 64 }
65 }); 65 });
  66 +}
  67 +
  68 +function delete_topic(url) {
  69 + $('.modal').remove();
  70 +
  71 + $.get(url, function (modal) {
  72 + $("#topics-accordion").after(modal);
  73 +
  74 + $('.modal').modal('show');
  75 + });
66 } 76 }
67 \ No newline at end of file 77 \ No newline at end of file
topics/templates/topics/delete.html 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +{% load i18n %}
  2 +
  3 +<div class="modal fade" id="topic" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  4 + <div class="modal-dialog" role="document">
  5 + <div class="modal-content">
  6 + <div class="modal-body">
  7 + <form id="delete_form" action="{% url 'topics:delete' topic.slug %}" method="post">
  8 + {% csrf_token %}
  9 + <h4>{% trans 'Are you sure you want delete the topic' %}: {{ topic }}?</h4>
  10 + <p>{% trans 'All data will be lost and havent how recover it.' %}</p>
  11 + </form>
  12 + </div>
  13 + <div class="modal-footer">
  14 + <div class="pull-right">
  15 + <button type="button" class="btn btn-default btn-raised" data-dismiss="modal">{% trans "Close" %}</button>
  16 + </div>
  17 + <div class="pull-left">
  18 + <button type="submit" form="delete_form" class="btn btn-success btn-raised">{% trans "Delete" %}</button>
  19 + </div>
  20 + </div>
  21 + </div>
  22 + </div>
  23 +</div>
0 \ No newline at end of file 24 \ No newline at end of file
topics/templates/topics/list.html
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 <div class="panel-group subject-group" id="topics-accordion" role="tablist" aria-multiselectable="true"> 6 <div class="panel-group subject-group" id="topics-accordion" role="tablist" aria-multiselectable="true">
7 <input type="hidden" class="url_order" value="{% url 'topics:update_order' %}" /> 7 <input type="hidden" class="url_order" value="{% url 'topics:update_order' %}" />
8 <input type="hidden" class="subs_url" value="{% url 'subjects:view' subject.slug %}" /> 8 <input type="hidden" class="subs_url" value="{% url 'subjects:view' subject.slug %}" />
  9 +
9 {% for topic in subject.topic_subject.all %} 10 {% for topic in subject.topic_subject.all %}
10 {% if not topic.repository and topic.visible or has_subject_permissions %} 11 {% if not topic.repository and topic.visible or has_subject_permissions %}
11 <div class="panel panel-info {% if not topic.visible or topic.repository %} topic-panel-invisible {% else %} topic-panel {% endif %} topic-panel"> 12 <div class="panel panel-info {% if not topic.visible or topic.repository %} topic-panel-invisible {% else %} topic-panel {% endif %} topic-panel">
@@ -25,7 +26,7 @@ @@ -25,7 +26,7 @@
25 </a> 26 </a>
26 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions"> 27 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
27 <li><a href="{% url 'topics:update' subject.slug topic.slug %}"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>{% trans 'Edit' %}</a></li> 28 <li><a href="{% url 'topics:update' subject.slug topic.slug %}"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>{% trans 'Edit' %}</a></li>
28 - <li><a href="javascript:delete_subject.get('{% url 'subjects:delete' subject.slug %}?view=index','#subject','#modal_subject')"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp;{% trans 'Remove' %}</a></li> 29 + <li><a href="javascript:delete_topic('{% url 'topics:delete' topic.slug %}')"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp;{% trans 'Remove' %}</a></li>
29 </ul> 30 </ul>
30 <a href="" ><i class="fa fa-arrows" aria-hidden="true"></i></a> 31 <a href="" ><i class="fa fa-arrows" aria-hidden="true"></i></a>
31 </div> 32 </div>
topics/urls.py
@@ -6,5 +6,6 @@ from . import views @@ -6,5 +6,6 @@ from . import views
6 urlpatterns = [ 6 urlpatterns = [
7 url(r'^create/(?P<slug>[\w_-]+)/$', views.CreateView.as_view(), name = 'create'), 7 url(r'^create/(?P<slug>[\w_-]+)/$', views.CreateView.as_view(), name = 'create'),
8 url(r'^update/(?P<sub_slug>[\w_-]+)/(?P<slug>[\w_-]+)/$', views.UpdateView.as_view(), name = 'update'), 8 url(r'^update/(?P<sub_slug>[\w_-]+)/(?P<slug>[\w_-]+)/$', views.UpdateView.as_view(), name = 'update'),
  9 + url(r'^delete/(?P<slug>[\w_-]+)/$', views.DeleteView.as_view(), name = 'delete'),
9 url(r'^update_order/$', views.update_order, name = 'update_order'), 10 url(r'^update_order/$', views.update_order, name = 'update_order'),
10 ] 11 ]
topics/views.py
@@ -114,6 +114,28 @@ class UpdateView(LoginRequiredMixin, generic.UpdateView): @@ -114,6 +114,28 @@ class UpdateView(LoginRequiredMixin, generic.UpdateView):
114 114
115 return reverse_lazy('subjects:view', kwargs = {'slug': self.object.subject.slug}) 115 return reverse_lazy('subjects:view', kwargs = {'slug': self.object.subject.slug})
116 116
  117 +class DeleteView(LoginRequiredMixin, generic.DeleteView):
  118 + login_url = reverse_lazy("users:login")
  119 + redirect_field_name = 'next'
  120 +
  121 + template_name = 'topics/delete.html'
  122 + model = Topic
  123 + context_object_name = 'topic'
  124 +
  125 + def dispatch(self, request, *args, **kwargs):
  126 + slug = self.kwargs.get('slug', '')
  127 + topic = get_object_or_404(Topic, slug = slug)
  128 +
  129 + if not has_subject_permissions(request.user, topic.subject):
  130 + return redirect(reverse_lazy('subjects:home'))
  131 +
  132 + return super(DeleteView, self).dispatch(request, *args, **kwargs)
  133 +
  134 + def get_success_url(self):
  135 + messages.success(self.request, _('Topic "%s" was removed from virtual enviroment "%s" successfully!')%(self.object.name, self.object.subject.name))
  136 +
  137 + return reverse_lazy('subjects:view', kwargs = {'slug': self.object.subject.slug})
  138 +
117 def update_order(request): 139 def update_order(request):
118 data = request.GET.get('data', None) 140 data = request.GET.get('data', None)
119 141