# -*- coding: utf-8 -*- from django import forms from django.utils.translation import ugettext_lazy as _ from ckeditor.widgets import CKEditorWidget from emencia.django.newsletter.models import Contact, ContactSettings, MailingList, Newsletter, Attachment from city.models import City from country.models import Country, Area class ContactSettingsForm(forms.ModelForm): city = forms.CharField(label=u'Город', widget=forms.HiddenInput() ,required=False) periodic = forms.ChoiceField(choices=ContactSettings.PERIODIC_CHOICES, label=_(u'Периодичность отправки')) first_name = forms.CharField(label=_('first name')) subscriber = forms.BooleanField(label=_('subscriber'), required=False) valid = forms.BooleanField(label=_('valid email'), required=False) tester = forms.BooleanField(label=_('contact tester'), required=False) country = forms.MultipleChoiceField(choices=[(c.id,c.name) for c in list(set(Country.objects.language().all()))], required=False) area = forms.MultipleChoiceField(choices=[(a.id, a.name) for a in list(set(Area.objects.language().all()))], required=False) class Meta: model = ContactSettings fields = ('periodic', 'exponent_practicum', 'organiser_practicum', 'theme', 'area', 'country', 'city', ) def save(self, commit=True): contactsettings = super(ContactSettingsForm, self).save(commit=False) if commit: contactsettings.save() contact = contactsettings.contact contact.first_name = self.cleaned_data['first_name'] contact.subscriber = self.cleaned_data['subscriber'] contact.valid = self.cleaned_data['valid'] contact.tester = self.cleaned_data['tester'] contact.save() return contactsettings def clean_periodic(self): return int(self.cleaned_data['periodic']) def clean_city(self): return City.objects.none() class MailingListForm(forms.ModelForm): class Meta: model = MailingList fields = ('name', 'description') class NewsletterForm(forms.ModelForm): test_contacts = forms.ModelMultipleChoiceField(label=u'Тестовые контакты', required=False, queryset=Contact.objects.filter(tester=True)) content = forms.CharField(label=_('content'), widget=CKEditorWidget(config_name='newsletters')) class Meta: model = Newsletter fields = ('title', 'content', 'mailing_list', 'test_contacts', 'header_sender', 'header_reply', 'status', 'sending_date', 'slug') class AttachmentForm(forms.ModelForm): class Meta: model = Attachment fields = ('title', 'file_attachment')