Commit 29448ed5630d0d557beac079b1bb32d04f9964fb

Authored by Zambom
1 parent 02e08c20

Adding webpage deletion

topics/views.py
... ... @@ -131,6 +131,18 @@ class DeleteView(LoginRequiredMixin, generic.DeleteView):
131 131  
132 132 return super(DeleteView, self).dispatch(request, *args, **kwargs)
133 133  
  134 + def delete(self, request, *args, **kwargs):
  135 + self.object = self.get_object()
  136 +
  137 + if self.object.resource_topic.count() > 0:
  138 + messages.error(self.request, _('Could not remove this topic. It has on or more resources attached.'))
  139 +
  140 + return redirect(reverse_lazy('subjects:view', kwargs = {'slug': self.object.subject.slug}))
  141 + else:
  142 + self.object.delete()
  143 +
  144 + return redirect(self.get_success_url())
  145 +
134 146 def get_success_url(self):
135 147 messages.success(self.request, _('Topic "%s" was removed from virtual enviroment "%s" successfully!')%(self.object.name, self.object.subject.name))
136 148  
... ...
webpage/templates/webpages/delete.html 0 → 100644
... ... @@ -0,0 +1,22 @@
  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 'webpages:delete' webpage.slug %}" method="post">
  8 + {% csrf_token %}
  9 + <h4>{% trans 'Are you sure you want delete the webpage' %}: {{ webpage }}?</h4>
  10 + </form>
  11 + </div>
  12 + <div class="modal-footer">
  13 + <div class="pull-right">
  14 + <button type="button" class="btn btn-default btn-raised" data-dismiss="modal">{% trans "Close" %}</button>
  15 + </div>
  16 + <div class="pull-left">
  17 + <button type="submit" form="delete_form" class="btn btn-success btn-raised">{% trans "Delete" %}</button>
  18 + </div>
  19 + </div>
  20 + </div>
  21 + </div>
  22 +</div>
0 23 \ No newline at end of file
... ...
webpage/templates/webpages/list.html
... ... @@ -25,8 +25,8 @@
25 25 <i class="fa fa-ellipsis-v" aria-hidden="true"></i>
26 26 </a>
27 27 <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="moreResources">
28   - <li><a href="{% url 'webpages:update' topic.slug resource.slug %}"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>{% trans 'Edit' %}</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>{% trans 'Remove' %}</a></li>
  28 + <li><a href="{% url 'webpages:update' topic.slug resource.slug %}" class="edit"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>{% trans 'Edit' %}</a></li>
  29 + <li><a href="javascript:delete_resource('{% url 'webpages:delete' resource.slug %}')" class="delete"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>{% trans 'Remove' %}</a></li>
30 30 </ul>
31 31 </span>
32 32 </div>
... ... @@ -40,11 +40,24 @@
40 40 {% endfor %}
41 41 </div>
42 42 <script type="text/javascript">
  43 + function delete_resource(url) {
  44 + $('.modal').remove();
  45 +
  46 + $.get(url, function (modal) {
  47 + $("#resource_{{ topic.slug }}").parent().after(modal);
  48 +
  49 + $('.modal').modal('show');
  50 + });
  51 + }
  52 +
43 53 $(".list-group-item").unbind().on('click', function (e) {
44 54 var arrow = $(this).find('i.fa-arrows').is(e.target),
45   - menu = $(this).find('i.fa-ellipsis-v').is(e.target);
  55 + menu = $(this).find('i.fa-ellipsis-v').is(e.target),
  56 + del = $(this).find('a.delete').is(e.target),
  57 + upd = $(this).find('a.edit').is(e.target);
46 58  
47   - if (!arrow && !menu) {
  59 +
  60 + if (!arrow && !menu && !del && !upd) {
48 61 var link = $(this).find('.resource_link').attr('href'),
49 62 target = $(this).find('.resource_link').attr('target');
50 63  
... ...
webpage/urls.py
... ... @@ -6,6 +6,7 @@ from . import views
6 6 urlpatterns = [
7 7 url(r'^create/(?P<slug>[\w_-]+)/$', views.CreateView.as_view(), name = 'create'),
8 8 url(r'^update/(?P<topic_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 10 url(r'^window_view/(?P<slug>[\w_-]+)/$', views.NewWindowView.as_view(), name = 'window_view'),
10 11 url(r'^view/(?P<slug>[\w_-]+)/$', views.InsideView.as_view(), name = 'view'),
11 12 ]
... ...
webpage/views.py
... ... @@ -242,4 +242,26 @@ class UpdateView(LoginRequiredMixin, generic.UpdateView):
242 242  
243 243 success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
244 244  
245   - return success_url
246 245 \ No newline at end of file
  246 + return success_url
  247 +
  248 +class DeleteView(LoginRequiredMixin, generic.DeleteView):
  249 + login_url = reverse_lazy("users:login")
  250 + redirect_field_name = 'next'
  251 +
  252 + template_name = 'webpages/delete.html'
  253 + model = Webpage
  254 + context_object_name = 'webpage'
  255 +
  256 + def dispatch(self, request, *args, **kwargs):
  257 + slug = self.kwargs.get('slug', '')
  258 + webpage = get_object_or_404(Webpage, slug = slug)
  259 +
  260 + if not has_subject_permissions(request.user, webpage.topic.subject):
  261 + return redirect(reverse_lazy('subjects:home'))
  262 +
  263 + return super(DeleteView, self).dispatch(request, *args, **kwargs)
  264 +
  265 + def get_success_url(self):
  266 + messages.success(self.request, _('The webpage "%s" was removed successfully from virtual environment "%s"!')%(self.object.name, self.object.topic.subject.name))
  267 +
  268 + return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
247 269 \ No newline at end of file
... ...