- Added PricingPlan Model
- Implement a complete cycle for buying a Matrix Chat Host - Refactor the Payement cycle and stripe related methods
This commit is contained in:
parent
e205d8d07c
commit
b7aa1c6971
81 changed files with 5079 additions and 810 deletions
48
matrixhosting/forms.py
Normal file
48
matrixhosting/forms.py
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
import tldextract
|
||||
|
||||
from django import forms
|
||||
from django.forms import ModelForm
|
||||
from django.utils.translation import get_language, ugettext_lazy as _
|
||||
from django.core.exceptions import ValidationError
|
||||
from .validators import domain_name_validator
|
||||
from uncloud_pay.models import BillingAddress
|
||||
|
||||
|
||||
class DomainNameField(forms.CharField):
|
||||
description = 'Domain name form field'
|
||||
default_validators = [domain_name_validator, ]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(DomainNameField, self).__init__(*args, **kwargs)
|
||||
|
||||
class RequestHostedVMForm(forms.Form):
|
||||
cores = forms.IntegerField(label='CPU', min_value=1, max_value=48, initial=1)
|
||||
memory = forms.IntegerField(label='RAM', min_value=2, max_value=200, initial=2)
|
||||
storage = forms.IntegerField(label='Storage', min_value=100, max_value=10000, initial=100)
|
||||
matrix_domain = DomainNameField(required=True)
|
||||
homeserver_domain = DomainNameField(required=True)
|
||||
webclient_domain = DomainNameField(required=True)
|
||||
is_open_registration = forms.BooleanField(required=False, initial=False)
|
||||
pricing_name = forms.CharField(required=True)
|
||||
|
||||
def clean(self):
|
||||
homeserver_domain = self.cleaned_data.get('homeserver_domain', False)
|
||||
webclient_domain = self.cleaned_data.get('webclient_domain', False)
|
||||
if homeserver_domain and webclient_domain:
|
||||
# Homserver-Domain and Webclient-Domain cannot be below the same second level domain (i.e. homeserver.abc.ch and webclient.def.cloud are ok,
|
||||
# homeserver.abc.ch and webclient.abc.ch are not ok
|
||||
homeserver_base = tldextract.extract(homeserver_domain).domain
|
||||
webclient_base = tldextract.extract(webclient_domain).domain
|
||||
if homeserver_base == webclient_base:
|
||||
self._errors['webclient_domain'] = self.error_class([
|
||||
'Homserver-Domain and Webclient-Domain cannot be below the same second level domain'])
|
||||
return self.cleaned_data
|
||||
|
||||
|
||||
class BillingAddressForm(ModelForm):
|
||||
class Meta:
|
||||
model = BillingAddress
|
||||
fields = ['full_name', 'street',
|
||||
'city', 'postal_code', 'country', 'vat_number', 'active', 'owner']
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue