# -*- coding: utf-8 -*- from django import forms from django.utils.translation import ugettext as _, get_language from country.models import Country from city.models import City from company.models import Company from theme.models import Theme class BaseForm(forms.ModelForm): translation = False class LogoForm(BaseForm): logo = forms.ImageField(label=_(u'Выберите файл (GIF, JPG, PNG. Размер 100 × 100 пикселей)'), required=False, widget=forms.FileInput(attrs={'class': 'input'})) class Meta: model = Company fields = ('logo',) class NameForm(BaseForm): name = forms.CharField(label=_(u'Введите название компании')) translation = True class Meta: model = Company._meta.translations_model fields = ('name',) class SpecializationForm(BaseForm): translation = True specialization = forms.CharField(label=_(u'Описание компании'), widget=forms.TextInput(), required=False) class Meta: model = Company._meta.translations_model fields = ('specialization',) class HomeForm(BaseForm): city = forms.CharField(label='Город', required=False, widget=forms.HiddenInput(attrs={'class': 'select2'})) country = forms.ChoiceField(label=_(u'Страна'), choices=[('', '')]+[(c.id, c.name) for c in list(Country.objects.all())], required=False, widget=forms.Select(attrs={'class': 'select2'})) def __init__(self, *args, **kwargs): super(HomeForm, self).__init__(*args, **kwargs) if self.instance.city: self.fields['city'].widget = forms.HiddenInput(attrs={'class': 'select2', 'data-init-text': self.instance.city.name}) class Meta: model = Company fields = ('country', 'city') def current_country(self): return self.instance.country def clean_city(self): try: return City.objects.get(id=self.cleaned_data['city']) except City.DoesNotExist: return None def clean_country(self): try: return Country.objects.get(id=self.cleaned_data['country']) except City.DoesNotExist: return None class PhoneForm(BaseForm): phone = forms.CharField(label=_(u'Контактный телефон'), required=False) class Meta: model = Company fields = ('phone',) def clean_phone(self): phone = self.cleaned_data['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 EmailForm(BaseForm): email = forms.EmailField(label=_(u'Ваш e-mail'), required=False) class Meta: model = Company fields = ('email',) class WebPageForm(BaseForm): web_page = forms.CharField(label=_(u'Адрес вашего сайта'), required=False) class Meta: model = Company fields = ('web_page',) class SocialForm(BaseForm): facebook = forms.CharField(label=_(u'Facebook'), required=False) twitter = forms.CharField(label=_(u'Twitter'), required=False) vk = forms.CharField(label=_(u'В контакте'), required=False) linkedin = forms.CharField(label=_(u'LinkedIn'), required=False) class Meta: model = Company fields = ('facebook', 'twitter', 'vk', 'linkedin') class ThemeForm(BaseForm): theme = forms.ModelMultipleChoiceField(queryset=Theme.objects.all()) class Meta: model = Company fields = ('theme',) class TagForm(BaseForm): tag = forms.CharField(required=False, widget=forms.HiddenInput(attrs={'class': 'select2'})) class Meta: model = Company fields = ('tag',) def clean_tag(self): tags = self.cleaned_data.get('tag') if tags: res = [] for id in tags.split(','): try: res.append(int(id)) except: continue return res else: return [] class FoundationForm(BaseForm): class Meta: model = Company fields = ('foundation',) class StaffForm(BaseForm): class Meta: model = Company fields = ('staff_number',) class DescriptionForm(BaseForm): translation = True description = forms.CharField(label=_(u'Подробное описание компании'), widget=forms.Textarea(attrs={'cols':'30'}), required=False) class Meta: model = Company._meta.translations_model fields = ('description',) class AddressForm(BaseForm): translation = True address_inf = forms.CharField(label=_(u'Адрес компании'), widget=forms.TextInput(), required=False) class Meta: model = Company._meta.translations_model fields = ('address_inf',)