You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

204 lines
8.1 KiB

# -*- coding: utf-8 -*-
from django import forms
from django.utils.translation import ugettext as _
from accounts.models import User
from models import Catalog, Tickets, Remote, Participation, Translation, Visit, CURENCIES, Advertising
from exposition.models import Exposition
from conference.models import Conference
from seminar.models import Seminar
class AbstractOrderForm(forms.ModelForm):
person_inf = forms.CharField(widget=forms.TextInput(attrs={'placeholder': _(u'Контактное лицо')}))
country = forms.CharField(widget=forms.TextInput(attrs={'placeholder': _(u'Страна')}))
city = forms.CharField(widget=forms.TextInput(attrs={'placeholder': _(u'Город')}))
phone = forms.CharField(widget=forms.TextInput(attrs={'placeholder': _(u'Контактный номер телефона')}))
person = forms.EmailField(widget=forms.TextInput(attrs={'placeholder': _(u'Электронная почта')}))
currency = forms.CharField(widget=forms.HiddenInput(), required=False)
exposition = forms.CharField(widget=forms.HiddenInput(), required=False)
conference = forms.CharField(widget=forms.HiddenInput(), required=False)
seminar = forms.CharField(widget=forms.HiddenInput(), required=False)
def clean_exposition(self):
exp_id = self.cleaned_data.get('exposition')
if not exp_id:
return None
try:
return Exposition.objects.get(id=exp_id)
except Exposition.DoesNotExist:
return None
def clean_seminar(self):
sem_id = self.cleaned_data.get('seminar')
if not sem_id:
return None
try:
return Seminar.objects.get(id=sem_id)
except Seminar.DoesNotExist:
return None
def clean_conference(self):
conf_id = self.cleaned_data.get('conference')
if not conf_id:
return None
try:
return Conference.objects.get(id=conf_id)
except Conference.DoesNotExist:
return None
def clean_person(self):
cleaned_data = super(AbstractOrderForm, self).clean()
email = cleaned_data.get('person')
try:
user = User.objects.get(username=email)
except User.DoesNotExist:
fname = ''
lname = ''
person_inf = cleaned_data.get('person_inf')
if person_inf:
person_inf = person_inf.split(' ')
fname = person_inf[0]
lname = ' '.join(person_inf[1:])
user = User.objects.create_user(email, fname, lname)
return user
def clean_phone(self):
cleaned_data = super(AbstractOrderForm, self).clean()
phone = cleaned_data.get('phone')
if not phone:
return
deduct = ('-','(',')','.',' ')
for elem in deduct:
phone = phone.replace(elem, '')
if phone.isdigit():
return phone
else:
raise forms.ValidationError(_(u'Введите правильный телефон'))
class CatalogForm(AbstractOrderForm):
class Meta:
model = Catalog
class TicketsForm(AbstractOrderForm):
class Meta:
model = Tickets
ADDITIONAL_REMOTE_CHOICES = [(_(u'официальный каталог'), _(u'официальный каталог')),
(_(u'фотоотчет'), _(u'фотоотчет')),
(_(u'видеоотчет'), _(u'видеоотчет'))
]
class RemoteForm(AbstractOrderForm):
additional = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), choices=ADDITIONAL_REMOTE_CHOICES)
class Meta:
model = Remote
def clean_additional(self):
additional = self.cleaned_data.get('additional')
if not additional:
return ''
else:
return ', '.join(additional)
AREA_TYPE_CHOICES=[(_(u'оборудованная'), _(u'оборудованная')),
(_(u'не оборудованная'), _(u'не оборудованная'))
]
class ParticipationForm(AbstractOrderForm):
area_type = forms.ChoiceField(choices=AREA_TYPE_CHOICES, required=False)
company_inf = forms.CharField(required=False,
widget=forms.Textarea(attrs={'placeholder': _(u'Краткое описание, вид деятельности компании')}))
class Meta:
model = Participation
LANGS = [(_(u'Русский'), _(u'Русский'))]
from theme.models import Theme
class TranslationForm(AbstractOrderForm):
languages = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=LANGS)
themes = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=[(theme.id, theme.id) for theme in Theme.objects.language().filter()])
fr = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')}))
to = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateTo', 'placeholder': _(u'дд.мм.гггг')}))
class Meta:
model = Translation
HOTEL_ADDITIONAL_CHOICES = [('', _(u'Выберите')),(_(u'Условие1'), _(u'Условие1')),
(_(u'Условие2'), _(u'Условие2')),(_(u'Условие3'), _(u'Условие3'))]
AVIA_TYPE_CHOICES = [(_(u'Прямой'), _(u'Прямой')), (_(u'С пересадкой'), _(u'С пересадкой')),
(_(u'Бизнес-класс'), _(u'Бизнес-класс')), (_(u'Эконом-класс'), _(u'Эконом-класс'))]
HOTEL_LOCATION_CHOICES = [('', _(u'Выберите')), (_(u'Расположение1'), _(u'Расположение1')),
(_(u'Расположение2'), _(u'Расположение2'))]
HOTEL_BUDGET_ADD = [('', _(u'Выберите')), (_(u'В сутки'), _(u'В сутки')), (_(u'В неделю'), _(u'В неделю'))]
class VisitForm(AbstractOrderForm):
fr = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')}))
to = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateTo', 'placeholder': _(u'дд.мм.гггг')}))
hotel_additional = forms.ChoiceField(choices=HOTEL_ADDITIONAL_CHOICES, required=False)
hotel_stars = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=[('1','1'),('2','2'),('3','3'),('4','4'),('5','5')])
hotel_location = forms.ChoiceField(choices=HOTEL_LOCATION_CHOICES, required=False)
hotel_budget_add = forms.ChoiceField(choices=HOTEL_BUDGET_ADD, required=False)
languages = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=LANGS)
themes = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=[(theme.name, theme.name) for theme in Theme.objects.all()])
avia_type = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=AVIA_TYPE_CHOICES)
class Meta:
model = Visit
def clean_hotel_stars(self):
hotel_stars = self.cleaned_data.get('hotel_stars')
if not hotel_stars:
return ''
else:
return ', '.join(hotel_stars)
def clean_languages(self):
languages = self.cleaned_data.get('languages')
if not languages:
return ''
else:
return ', '.join(languages)
def clean_themes(self):
themes = self.cleaned_data.get('themes')
if not themes:
return ''
else:
return ', '.join(themes)
def clean_avia_type(self):
avia_type = self.cleaned_data.get('avia_type')
if not avia_type:
return ''
else:
return ', '.join(avia_type)
class AdvertiseForm(AbstractOrderForm):
action = '/service/advertise/'
class Meta:
model = Advertising