diff --git a/docs/changelog.rst b/docs/changelog.rst index 3381054..dd5830c 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,7 @@ Changelog ========= +* :feature:`-` implement mail address deletion * :feature:`-` implement adding mail address to mail domains * :feature:`-` implement adding options to hosting packages * :bug:`-` fix disk space calculation in diff --git a/gnuviechadmin/managemails/urls.py b/gnuviechadmin/managemails/urls.py index 08bef92..405c6bd 100644 --- a/gnuviechadmin/managemails/urls.py +++ b/gnuviechadmin/managemails/urls.py @@ -11,6 +11,7 @@ from .views import ( AddMailAddress, ChangeMailboxPassword, CreateMailbox, + DeleteMailAddress, ) urlpatterns = patterns( @@ -21,4 +22,7 @@ urlpatterns = patterns( ChangeMailboxPassword.as_view(), name='change_mailbox_password'), url(r'^(?P\d+)/mailaddress/(?P[\w0-9-.]+)/create$', AddMailAddress.as_view(), name='add_mailaddress'), + url(r'^(?P\d+)/mailaddress/(?P[\w0-9-.]+)/(?P\d+)' + r'/delete$', + DeleteMailAddress.as_view(), name='delete_mailaddress'), ) diff --git a/gnuviechadmin/managemails/views.py b/gnuviechadmin/managemails/views.py index 97a74b8..f807c5d 100644 --- a/gnuviechadmin/managemails/views.py +++ b/gnuviechadmin/managemails/views.py @@ -9,6 +9,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, UpdateView, ) from django.contrib import messages @@ -137,6 +138,11 @@ class AddMailAddress( model = MailAddress template_name_suffix = '_create' + def get_context_data(self, **kwargs): + context = super(AddMailAddress, self).get_context_data(**kwargs) + context['customer'] = self.get_customer_object() + return context + def get_maildomain(self): return get_object_or_404(MailDomain, domain=self.kwargs['domain']) @@ -156,3 +162,29 @@ class AddMailAddress( mailaddress=address) ) return redirect(self.get_hosting_package()) + + +class DeleteMailAddress( + HostingPackageAndCustomerMixin, StaffOrSelfLoginRequiredMixin, DeleteView +): + """ + This view is used to delete a mail address. + + """ + context_object_name = 'mailaddress' + model = MailAddress + + def get_maildomain(self): + return get_object_or_404(MailDomain, domain=self.kwargs['domain']) + + def get_context_data(self, **kwargs): + context = super(DeleteMailAddress, self).get_context_data(**kwargs) + context.update({ + 'customer': self.get_customer_object(), + 'hostingpackage': self.get_hosting_package(), + 'maildomain': self.get_maildomain(), + }) + return context + + def get_success_url(self): + return self.get_hosting_package().get_absolute_url() diff --git a/gnuviechadmin/templates/managemails/mailaddress_confirm_delete.html b/gnuviechadmin/templates/managemails/mailaddress_confirm_delete.html new file mode 100644 index 0000000..d520ce1 --- /dev/null +++ b/gnuviechadmin/templates/managemails/mailaddress_confirm_delete.html @@ -0,0 +1,34 @@ +{% extends "managemails/base.html" %} +{% load i18n %} + +{% block title %}{{ block.super }} - {% spaceless %} +{% if user == customer %} +{% blocktrans %}Delete Mail Address {{ mailaddress }}{% endblocktrans %} +{% else %} +{% blocktrans with full_name=customer.get_full_name %}Delete Mail Address {{ mailaddress }} of Customer {{ full_name }}{% endblocktrans %} +{% endif %} +{% endspaceless %}{% endblock title %} + +{% block page_title %}{% spaceless %} +{% if user == customer %} +{% blocktrans %}Delete Mail Address {{ mailaddress }}{% endblocktrans %} +{% else %} +{% blocktrans with full_name=customer.get_full_name %}Delete Mail Address {{ mailaddress }} of Customer {{ full_name }}{% endblocktrans %} +{% endif %} +{% endspaceless %}{% endblock page_title %} + +{% block content %} +
+
+ {% blocktrans %}Do you really want to delete the mail address {{ mailaddress }}?{% endblocktrans %} +
+
+
+ {% csrf_token %} + + {% trans "Cancel" %} +
+
+
+{% endblock content %} +