implement create_mailbox functionality
- implement managemails.forms.CreateMailboxForm - implement managemails.views.CreateMailbox - add url pattern 'create_mailbox' to managemails.urls - add templates managemails/base.html and managemails/mailbox_create.html - add german translation - add generated code documentation
This commit is contained in:
parent
6cb61ea105
commit
449af174ec
8 changed files with 231 additions and 5 deletions
48
gnuviechadmin/managemails/forms.py
Normal file
48
gnuviechadmin/managemails/forms.py
Normal file
|
@ -0,0 +1,48 @@
|
|||
"""
|
||||
This module defines form classes for mailbox and mail address editing.
|
||||
|
||||
"""
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django import forms
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Submit
|
||||
|
||||
from .models import Mailbox
|
||||
from gvawebcore.forms import PasswordModelFormMixin
|
||||
|
||||
|
||||
class CreateMailboxForm(PasswordModelFormMixin, forms.ModelForm):
|
||||
"""
|
||||
This form is used to create new Mailbox instances.
|
||||
|
||||
"""
|
||||
class Meta:
|
||||
model = Mailbox
|
||||
fields = []
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.hosting_package = kwargs.pop('hostingpackage')
|
||||
super(CreateMailboxForm, self).__init__(*args, **kwargs)
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_action = reverse(
|
||||
'create_mailbox', kwargs={'package': self.hosting_package.id})
|
||||
self.helper.add_input(Submit('submit', _('Create mailbox')))
|
||||
|
||||
def save(self, commit=True):
|
||||
"""
|
||||
Set the new mailbox's password and osuser.
|
||||
|
||||
:param boolean commit: whether to save the created mailbox
|
||||
:return: mailbox instance
|
||||
:rtype: :py:class:`managemails.models.Mailbox`
|
||||
|
||||
"""
|
||||
osuser = self.hosting_package.osuser
|
||||
self.instance.osuser = osuser
|
||||
self.instance.username = Mailbox.objects.get_next_mailbox_name(osuser)
|
||||
self.instance.set_password(self.cleaned_data['password1'])
|
||||
return super(CreateMailboxForm, self).save(commit=commit)
|
|
@ -7,8 +7,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: managemails\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-25 00:46+0100\n"
|
||||
"PO-Revision-Date: 2015-01-25 00:48+0100\n"
|
||||
"POT-Creation-Date: 2015-01-25 12:04+0100\n"
|
||||
"PO-Revision-Date: 2015-01-25 12:07+0100\n"
|
||||
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
||||
"Language-Team: Jan Dittberner <jan@dittberner.info>\n"
|
||||
"Language: de\n"
|
||||
|
@ -47,6 +47,10 @@ msgstr "Deaktivieren"
|
|||
msgid "Mailboxes and Mail Addresses"
|
||||
msgstr "Postfächer und E-Mailadressen"
|
||||
|
||||
#: managemails/forms.py:33
|
||||
msgid "Create mailbox"
|
||||
msgstr "Postfach anlegen"
|
||||
|
||||
#: managemails/models.py:79
|
||||
msgid "Mailbox"
|
||||
msgstr "Postfach"
|
||||
|
@ -70,3 +74,12 @@ msgstr "E-Mailadresse"
|
|||
#: managemails/models.py:142
|
||||
msgid "mailbox"
|
||||
msgstr "Postfach"
|
||||
|
||||
#: managemails/views.py:35
|
||||
msgid "You are not allowed to add more mailboxes to this hosting package"
|
||||
msgstr "Sie können keine weiteren Postfächer zu diesem Hostingpaket hinzufügen"
|
||||
|
||||
#: managemails/views.py:61
|
||||
#, python-brace-format
|
||||
msgid "Mailbox {mailbox} created successfully."
|
||||
msgstr "Postfach {mailbox} erfolgreich angelegt."
|
||||
|
|
18
gnuviechadmin/managemails/urls.py
Normal file
18
gnuviechadmin/managemails/urls.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
"""
|
||||
This module defines the URL patterns for mailbox and mail address related
|
||||
views.
|
||||
|
||||
"""
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.conf.urls import patterns, url
|
||||
|
||||
from .views import (
|
||||
CreateMailbox,
|
||||
)
|
||||
|
||||
urlpatterns = patterns(
|
||||
'',
|
||||
url(r'^(?P<package>\d+)/mailbox/create$',
|
||||
CreateMailbox.as_view(), name='create_mailbox'),
|
||||
)
|
65
gnuviechadmin/managemails/views.py
Normal file
65
gnuviechadmin/managemails/views.py
Normal file
|
@ -0,0 +1,65 @@
|
|||
"""
|
||||
This module defines views for mailbox and mail address handling.
|
||||
|
||||
"""
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.http import HttpResponseForbidden
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.views.generic.edit import CreateView
|
||||
from django.contrib import messages
|
||||
|
||||
from gvacommon.viewmixins import StaffOrSelfLoginRequiredMixin
|
||||
|
||||
from hostingpackages.models import CustomerHostingPackage
|
||||
|
||||
from .forms import CreateMailboxForm
|
||||
from .models import Mailbox
|
||||
|
||||
|
||||
class CreateMailbox(StaffOrSelfLoginRequiredMixin, CreateView):
|
||||
"""
|
||||
This view is used to setup new mailboxes for a customer hosting package.
|
||||
|
||||
"""
|
||||
model = Mailbox
|
||||
context_object_name = 'mailbox'
|
||||
template_name_suffix = '_create'
|
||||
form_class = CreateMailboxForm
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
resp = super(CreateMailbox, self).dispatch(request, *args, **kwargs)
|
||||
if not self._get_hosting_package().may_add_mailbox():
|
||||
resp = HttpResponseForbidden(
|
||||
_('You are not allowed to add more mailboxes to this'
|
||||
' hosting package'))
|
||||
return resp
|
||||
|
||||
def _get_hosting_package(self):
|
||||
return get_object_or_404(
|
||||
CustomerHostingPackage, pk=int(self.kwargs['package']))
|
||||
|
||||
def get_customer_object(self):
|
||||
return self._get_hosting_package().customer
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(CreateMailbox, self).get_context_data(**kwargs)
|
||||
context['hostingpackage'] = self._get_hosting_package()
|
||||
context['customer'] = self.get_customer_object()
|
||||
return context
|
||||
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super(CreateMailbox, self).get_form_kwargs()
|
||||
kwargs['hostingpackage'] = self._get_hosting_package()
|
||||
return kwargs
|
||||
|
||||
def form_valid(self, form):
|
||||
mailbox = form.save()
|
||||
messages.success(
|
||||
self.request,
|
||||
_('Mailbox {mailbox} created successfully.').format(
|
||||
mailbox=mailbox.username
|
||||
)
|
||||
)
|
||||
return redirect(self._get_hosting_package().get_absolute_url())
|
Loading…
Add table
Add a link
Reference in a new issue