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
|
@ -12,14 +12,35 @@
|
|||
|
||||
|
||||
:py:mod:`apps <managemails.apps>`
|
||||
-----------------------------------
|
||||
---------------------------------
|
||||
|
||||
.. automodule:: managemails.apps
|
||||
:members:
|
||||
|
||||
|
||||
:py:mod:`forms <managemails.forms>`
|
||||
-----------------------------------
|
||||
|
||||
.. automodule:: managemails.forms
|
||||
:members:
|
||||
|
||||
|
||||
:py:mod:`models <managemails.models>`
|
||||
-------------------------------------
|
||||
|
||||
.. automodule:: managemails.models
|
||||
:members:
|
||||
|
||||
|
||||
:py:mod:`urls <managemails.urls>`
|
||||
---------------------------------
|
||||
|
||||
.. automodule:: managemails.urls
|
||||
:members:
|
||||
|
||||
|
||||
:py:mod:`views <managemails.views>`
|
||||
-----------------------------------
|
||||
|
||||
.. automodule:: managemails.views
|
||||
:members:
|
||||
|
|
|
@ -7,8 +7,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: gnuviechadmin\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-25 00:46+0100\n"
|
||||
"PO-Revision-Date: 2015-01-25 00:55+0100\n"
|
||||
"POT-Creation-Date: 2015-01-25 12:04+0100\n"
|
||||
"PO-Revision-Date: 2015-01-25 12:06+0100\n"
|
||||
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
||||
"Language-Team: Jan Dittberner <jan@dittberner.info>\n"
|
||||
"Language: de\n"
|
||||
|
@ -793,6 +793,27 @@ msgstr "Diesem Hostingpaket sind noch keine Datenbanken zugeordnet."
|
|||
msgid "Add database"
|
||||
msgstr "Datenbank hinzufügen"
|
||||
|
||||
#: templates/managemails/mailbox_create.html:6
|
||||
#: templates/managemails/mailbox_create.html:15
|
||||
#, python-format
|
||||
msgid "Add Mailbox to Hosting Package %(package)s"
|
||||
msgstr "Postfach zum Hostingpaket %(package)s hinzufügen"
|
||||
|
||||
#: templates/managemails/mailbox_create.html:8
|
||||
#: templates/managemails/mailbox_create.html:17
|
||||
#, python-format
|
||||
msgid "Add Mailbox to Hosting Package %(package)s of Customer %(full_name)s"
|
||||
msgstr ""
|
||||
"Postfach zum Hostingpaket %(package)s des Kunden %(full_name)s hinzufügen"
|
||||
|
||||
#: templates/managemails/mailbox_create.html:23
|
||||
msgid "Please specify the password for your new mailbox."
|
||||
msgstr "Bitte geben Sie das Passwort für Ihr neues Postfach ein."
|
||||
|
||||
#: templates/managemails/mailbox_create.html:23
|
||||
msgid "Please specify the password for the new mailbox."
|
||||
msgstr "Bitte geben Sie das Passwort für das neue Postfach ein."
|
||||
|
||||
#: templates/osusers/user_setpassword.html:5
|
||||
#: templates/osusers/user_setpassword.html:13
|
||||
#, python-format
|
||||
|
@ -897,5 +918,10 @@ msgstr ""
|
|||
"%(site_name)s zu nutzen. Als letzten Schritt füllen Sie bitte folgendes "
|
||||
"Formular aus:"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "Password Reset"
|
||||
#~ msgid "Password (again)"
|
||||
#~ msgstr "Passwort zurücksetzen"
|
||||
|
||||
#~ msgid "My Profile"
|
||||
#~ msgstr "Mein Profil"
|
||||
|
|
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())
|
1
gnuviechadmin/templates/managemails/base.html
Normal file
1
gnuviechadmin/templates/managemails/base.html
Normal file
|
@ -0,0 +1 @@
|
|||
{% extends "base.html" %}
|
34
gnuviechadmin/templates/managemails/mailbox_create.html
Normal file
34
gnuviechadmin/templates/managemails/mailbox_create.html
Normal file
|
@ -0,0 +1,34 @@
|
|||
{% extends "managemails/base.html" %}
|
||||
{% load i18n crispy_forms_tags %}
|
||||
{% block title %}{{ block.user }} - {% spaceless %}
|
||||
{% with full_name=customer.get_full_name package=hostingpackage.name %}
|
||||
{% if customer == user %}
|
||||
{% blocktrans %}Add Mailbox to Hosting Package {{ package }}{% endblocktrans %}
|
||||
{% else %}
|
||||
{% blocktrans %}Add Mailbox to Hosting Package {{ package }} of Customer {{ full_name }}{% endblocktrans %}
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% endspaceless %}{% endblock title %}
|
||||
{% block page_title %}{% spaceless %}
|
||||
{% with full_name=customer.get_full_name package=hostingpackage.name %}
|
||||
{% if customer == user %}
|
||||
{% blocktrans %}Add Mailbox to Hosting Package {{ package }}{% endblocktrans %}
|
||||
{% else %}
|
||||
{% blocktrans %}Add Mailbox to Hosting Package {{ package }} of Customer {{ full_name }}{% endblocktrans %}
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% endspaceless %}{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
<p>{% if customer == user %}{% trans "Please specify the password for your new mailbox." %}{% else %}{% trans "Please specify the password for the new mailbox." %}{% endif %}</p>
|
||||
{% crispy form %}
|
||||
{% endblock content %}
|
||||
|
||||
{% block extra_js %}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('input[type=password]').val('');
|
||||
$('input[type=password]').first().focus();
|
||||
});
|
||||
</script>
|
||||
{% endblock extra_js %}
|
Loading…
Reference in a new issue