From 7da5cfe40695ecf8780f86d4a8747e4999ac349a Mon Sep 17 00:00:00 2001 From: Jan Dittberner <jan@dittberner.info> Date: Tue, 27 Jan 2015 16:26:10 +0100 Subject: [PATCH] implement website deletion - implement websites.views.DeleteWebsite - add URL pattern 'delete_website' to websites.urls - add template website_confirm_delete.html - add link from hostingpackage page to 'delete_website' - add changelog entry --- docs/changelog.rst | 1 + .../customerhostingpackage_detail.html | 2 +- .../websites/website_confirm_delete.html | 34 +++++++++++++++++++ gnuviechadmin/websites/urls.py | 3 ++ gnuviechadmin/websites/views.py | 23 +++++++++++++ 5 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 gnuviechadmin/templates/websites/website_confirm_delete.html diff --git a/docs/changelog.rst b/docs/changelog.rst index 12ea8c1..b98b466 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,7 @@ Changelog ========= +* :feature:`-` implement deletion of websites * :feature:`-` implement setup of websites * :support:`-` add webtasks interface * :support:`-` update to new fileservertasks interface (requires gvafile >= diff --git a/gnuviechadmin/templates/hostingpackages/customerhostingpackage_detail.html b/gnuviechadmin/templates/hostingpackages/customerhostingpackage_detail.html index f3c7634..e66ae9b 100644 --- a/gnuviechadmin/templates/hostingpackages/customerhostingpackage_detail.html +++ b/gnuviechadmin/templates/hostingpackages/customerhostingpackage_detail.html @@ -107,7 +107,7 @@ {% with domain=domain.domain %} {% for website in domain.website_set.all %}{% spaceless %} {{ website }} - <a href="#" titel="{% trans "Delete website" %}"><i class="glyphicon glyphicon-trash"></i><span class="sr-only"> {% trans "Delete website" %}</span></a> + <a href="{% url 'delete_website' package=hostingpackage.id domain=domain.domain pk=website.id %}" titel="{% trans "Delete website" %}"><i class="glyphicon glyphicon-trash"></i><span class="sr-only"> {% trans "Delete website" %}</span></a> {% endspaceless %}{% if not forloop.last %}, {% endif %}{% endfor %} {% endwith %} </td> diff --git a/gnuviechadmin/templates/websites/website_confirm_delete.html b/gnuviechadmin/templates/websites/website_confirm_delete.html new file mode 100644 index 0000000..92cb0e9 --- /dev/null +++ b/gnuviechadmin/templates/websites/website_confirm_delete.html @@ -0,0 +1,34 @@ +{% extends "websites/base.html" %} +{% load i18n %} + +{% block title %}{{ block.super }} - {% spaceless %} +{% if user == customer %} +{% blocktrans %}Delete Website {{ website }}{% endblocktrans %} +{% else %} +{% blocktrans with full_name=customer.get_full_name %}Delete Website {{ website }} of Customer {{ full_name }}{% endblocktrans %} +{% endif %} +{% endspaceless %}{% endblock title %} + +{% block page_title %}{% spaceless %} +{% if user == customer %} +{% blocktrans %}Delete Website <small>{{ website }}</small>{% endblocktrans %} +{% else %} +{% blocktrans with full_name=customer.get_full_name %}Delete Website <small>{{ website }} of Customer {{ full_name }}</small>{% endblocktrans %} +{% endif %} +{% endspaceless %}{% endblock page_title %} + +{% block content %} +<div class="panel panel-warning"> + <div class="panel-heading"> + {% blocktrans %}Do you really want to delete the website {{ website }}?{% endblocktrans %} + </div> + <div class="panel-body"> + <p>{% blocktrans %}Please be aware that the website directory is removed from the webserver and the webserver configuration is changed so that the website will not be reachable anymore. <strong>All data in the website directory will be lost!</strong>{% endblocktrans %}</p> + <form action="{% url 'delete_website' package=hostingpackage.id domain=website.domain.domain pk=website.id %}" method="post" class="form"> + {% csrf_token %} + <input class="btn btn-warning" type="submit" value="{% trans "Yes, do it!" %}" /> + <a class="btn btn-default" href="{{ hostingpackage.get_absolute_url }}">{% trans "Cancel" %}</a> + </form> + </div> +</div> +{% endblock content %} diff --git a/gnuviechadmin/websites/urls.py b/gnuviechadmin/websites/urls.py index c98a252..4bcd5e0 100644 --- a/gnuviechadmin/websites/urls.py +++ b/gnuviechadmin/websites/urls.py @@ -8,6 +8,7 @@ from django.conf.urls import patterns, url from .views import ( AddWebsite, + DeleteWebsite, ) @@ -15,4 +16,6 @@ urlpatterns = patterns( '', url(r'^(?P<package>\d+)/(?P<domain>[\w0-9.-]+)/create$', AddWebsite.as_view(), name='add_website'), + url(r'^(?P<package>\d+)/(?P<domain>[\w0-9.-]+)/(?P<pk>\d+)/delete$', + DeleteWebsite.as_view(), name='delete_website'), ) diff --git a/gnuviechadmin/websites/views.py b/gnuviechadmin/websites/views.py index 64a8fea..803386f 100644 --- a/gnuviechadmin/websites/views.py +++ b/gnuviechadmin/websites/views.py @@ -8,6 +8,7 @@ from django.shortcuts import get_object_or_404, redirect from django.utils.translation import ugettext as _ from django.views.generic.edit import ( CreateView, + DeleteView, ) from django.contrib import messages @@ -58,3 +59,25 @@ class AddWebsite( ) ) return redirect(self.get_hosting_package()) + + +class DeleteWebsite( + HostingPackageAndCustomerMixin, StaffOrSelfLoginRequiredMixin, DeleteView +): + """ + This view is used to delete websites in a customer hosting package. + + """ + context_object_name = 'website' + model = Website + + def get_context_data(self, **kwargs): + context = super(DeleteWebsite, self).get_context_data(**kwargs) + context.update({ + 'customer': self.get_customer_object(), + 'hostingpackage': self.get_hosting_package(), + }) + return context + + def get_success_url(self): + return self.get_hosting_package().get_absolute_url()