gva/gnuviechadmin/hostingpackages/forms.py

149 lines
4.9 KiB
Python
Raw Permalink Normal View History

"""
This module contains the form classes related to hosting packages.
"""
from __future__ import absolute_import
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Submit
from django import forms
from django.urls import reverse
from django.utils.translation import gettext as _
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)