Jan Dittberner
0fc823a305
- fix unique constraints on CustomerDiskSpaceOption and CustomerUserDatabaseOption to allow multiple options from the same template for hosting packages - fix disk space calculation in CustomerHostingPackage - implement hostingpackages forms AddDiskspaceOptionForm, AddMailboxOptionForm, AddUserDatabaseOptionForm - implement hostingpackages.views.AddHostingOption - add new URL pattern add_hosting_option to hostingpackages.urls - add template hostingpackages/add_hosting_option.html - link items on hostingpackages/customerhostingpackage_option_choices.html to add_hosting_option
151 lines
4.9 KiB
Python
151 lines
4.9 KiB
Python
"""
|
|
This module contains the form classes related to hosting packages.
|
|
|
|
"""
|
|
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 (
|
|
Layout,
|
|
Submit,
|
|
)
|
|
|
|
from .models import (
|
|
CustomerDiskSpaceOption,
|
|
CustomerHostingPackage,
|
|
CustomerMailboxOption,
|
|
CustomerUserDatabaseOption,
|
|
)
|
|
|
|
|
|
class CreateCustomerHostingPackageForm(forms.ModelForm):
|
|
"""
|
|
This form class is used for creating new customer hosting packages with
|
|
a preselected customer.
|
|
|
|
"""
|
|
class Meta:
|
|
model = CustomerHostingPackage
|
|
fields = ['template', 'name', 'description']
|
|
|
|
def __init__(self, instance, *args, **kwargs):
|
|
username = kwargs.pop('user')
|
|
super(CreateCustomerHostingPackageForm, self).__init__(
|
|
*args, **kwargs
|
|
)
|
|
self.fields['description'].widget.attrs['rows'] = 2
|
|
self.helper = FormHelper()
|
|
self.helper.form_action = reverse(
|
|
'create_customer_hosting_package', kwargs={'user': username}
|
|
)
|
|
self.helper.layout = Layout(
|
|
'template',
|
|
'name',
|
|
'description',
|
|
Submit('submit', _('Add Hosting Package')),
|
|
)
|
|
|
|
|
|
class CreateHostingPackageForm(forms.ModelForm):
|
|
"""
|
|
This form class is used for creating new customer hosting packages.
|
|
|
|
"""
|
|
class Meta:
|
|
model = CustomerHostingPackage
|
|
fields = ['customer', 'template', 'name', 'description']
|
|
|
|
def __init__(self, instance, *args, **kwargs):
|
|
super(CreateHostingPackageForm, self).__init__(
|
|
*args, **kwargs
|
|
)
|
|
self.fields['description'].widget.attrs['rows'] = 2
|
|
self.helper = FormHelper()
|
|
self.helper.form_action = reverse('create_hosting_package')
|
|
self.helper.layout = Layout(
|
|
'customer',
|
|
'template',
|
|
'name',
|
|
'description',
|
|
Submit('submit', _('Add Hosting Package')),
|
|
)
|
|
|
|
|
|
class AddDiskspaceOptionForm(forms.ModelForm):
|
|
class Meta:
|
|
model = CustomerDiskSpaceOption
|
|
fields = ['diskspace', 'diskspace_unit']
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
self.hostingpackage = kwargs.pop('hostingpackage')
|
|
self.option_template = kwargs.pop('option_template')
|
|
super(AddDiskspaceOptionForm, self).__init__(*args, **kwargs)
|
|
self.helper = FormHelper()
|
|
self.helper.form_action = reverse(
|
|
'add_hosting_option',
|
|
kwargs={
|
|
'package': self.hostingpackage.id,
|
|
'type': 'diskspace',
|
|
'optionid': self.option_template.id,
|
|
})
|
|
self.helper.add_input(Submit('submit', _('Add disk space option')))
|
|
|
|
def save(self, commit=True):
|
|
self.instance.hosting_package = self.hostingpackage
|
|
self.instance.template = self.option_template
|
|
return super(AddDiskspaceOptionForm, self).save(commit=True)
|
|
|
|
|
|
class AddMailboxOptionForm(forms.ModelForm):
|
|
class Meta:
|
|
model = CustomerMailboxOption
|
|
fields = ['number']
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
self.hostingpackage = kwargs.pop('hostingpackage')
|
|
self.option_template = kwargs.pop('option_template')
|
|
super(AddMailboxOptionForm, self).__init__(*args, **kwargs)
|
|
self.helper = FormHelper()
|
|
self.helper.form_action = reverse(
|
|
'add_hosting_option',
|
|
kwargs={
|
|
'package': self.hostingpackage.id,
|
|
'type': 'mailboxes',
|
|
'optionid': self.option_template.id,
|
|
})
|
|
self.helper.add_input(Submit('submit', _('Add mailbox option')))
|
|
|
|
def save(self, commit=True):
|
|
self.instance.hosting_package = self.hostingpackage
|
|
self.instance.template = self.option_template
|
|
return super(AddMailboxOptionForm, self).save(commit=True)
|
|
|
|
|
|
class AddUserDatabaseOptionForm(forms.ModelForm):
|
|
class Meta:
|
|
model = CustomerUserDatabaseOption
|
|
fields = ['number']
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
self.hostingpackage = kwargs.pop('hostingpackage')
|
|
self.option_template = kwargs.pop('option_template')
|
|
super(AddUserDatabaseOptionForm, self).__init__(*args, **kwargs)
|
|
self.helper = FormHelper()
|
|
self.helper.form_action = reverse(
|
|
'add_hosting_option',
|
|
kwargs={
|
|
'package': self.hostingpackage.id,
|
|
'type': 'databases',
|
|
'optionid': self.option_template.id,
|
|
})
|
|
self.helper.add_input(Submit('submit', _('Add database option')))
|
|
|
|
def save(self, commit=True):
|
|
self.instance.hosting_package = self.hostingpackage
|
|
self.instance.template = self.option_template
|
|
self.instance.db_type = self.option_template.db_type
|
|
return super(AddUserDatabaseOptionForm, self).save(commit=True)
|