|
|
|
|
@ -129,7 +129,7 @@ class MailingSettingsForm(forms.ModelForm): |
|
|
|
|
th = ML_ModelMultipleChoiceField( |
|
|
|
|
label=_(u'Тематики'), required=False, |
|
|
|
|
queryset=Theme.objects.all()) |
|
|
|
|
area = ML_ModelMultipleChoiceField( |
|
|
|
|
area = forms.ModelMultipleChoiceField( |
|
|
|
|
label=_(u'Регион'), required=False, |
|
|
|
|
queryset=Area.objects.all()) |
|
|
|
|
|
|
|
|
|
@ -153,21 +153,29 @@ class MailingSettingsForm(forms.ModelForm): |
|
|
|
|
|
|
|
|
|
def __init__(self, *args, **kwargs): |
|
|
|
|
super(MailingSettingsForm, self).__init__(*args, **kwargs) |
|
|
|
|
for field in ['f_countries', 'r_cities', 'tg', 'th']: |
|
|
|
|
for field in ['f_countries', 'r_cities', 'tg', 'th', 'area']: |
|
|
|
|
self.fields[field].widget.attrs.update({'style': 'display: none;'}) |
|
|
|
|
if self.instance and self.instance.pk: |
|
|
|
|
if self.instance.f_countries: |
|
|
|
|
self.fields['f_countries'].c_queryset = self.instance.f_countries.distinct() |
|
|
|
|
self.fields['f_countries'].widget.choices = self.fields['f_countries'].choices |
|
|
|
|
if self.instance.r_cities: |
|
|
|
|
self.fields['r_cities'].c_queryset = self.instance.r_cities.distinct() |
|
|
|
|
self.fields['r_cities'].widget.choices = self.fields['r_cities'].choices |
|
|
|
|
if self.instance.tags: |
|
|
|
|
self.fields['tg'].c_queryset = self.instance.tags.distinct() |
|
|
|
|
self.fields['tg'].widget.choices = self.fields['tg'].choices |
|
|
|
|
if self.instance.themes: |
|
|
|
|
self.fields['th'].c_queryset = self.instance.themes.distinct() |
|
|
|
|
self.fields['th'].widget.choices = self.fields['th'].choices |
|
|
|
|
# area |
|
|
|
|
self.initial['area'] = set(self.instance.f_countries.values_list('area_id', flat=True)) |
|
|
|
|
|
|
|
|
|
# foreign countries |
|
|
|
|
self.fields['f_countries'].c_queryset = self.instance.f_countries.distinct() |
|
|
|
|
self.fields['f_countries'].widget.choices = self.fields['f_countries'].choices |
|
|
|
|
|
|
|
|
|
# russia cities |
|
|
|
|
self.fields['r_cities'].c_queryset = self.instance.r_cities.distinct() |
|
|
|
|
self.fields['r_cities'].widget.choices = self.fields['r_cities'].choices |
|
|
|
|
|
|
|
|
|
# tag |
|
|
|
|
self.initial['tg'] = set(self.instance.tags.values_list('pk', flat=True)) |
|
|
|
|
self.fields['tg'].c_queryset = self.instance.tags.distinct() |
|
|
|
|
self.fields['tg'].widget.choices = self.fields['tg'].choices |
|
|
|
|
|
|
|
|
|
# theme |
|
|
|
|
self.initial['th'] = set(self.instance.themes.values_list('pk', flat=True)) |
|
|
|
|
self.fields['th'].c_queryset = self.instance.themes.distinct() |
|
|
|
|
self.fields['th'].widget.choices = self.fields['th'].choices |
|
|
|
|
|
|
|
|
|
def save(self): |
|
|
|
|
obj = super(MailingSettingsForm, self).save(commit=False) |
|
|
|
|
@ -194,7 +202,8 @@ class MailingSettingsForm(forms.ModelForm): |
|
|
|
|
countries_add.update(c) |
|
|
|
|
if countries_add: |
|
|
|
|
obj.f_countries.add(*countries_add) |
|
|
|
|
# |
|
|
|
|
|
|
|
|
|
obj.r_cities = self.cleaned_data['r_cities'] or [] |
|
|
|
|
obj.tags = self.cleaned_data.get('tg') or [] |
|
|
|
|
obj.themes = self.cleaned_data.get('th') or [] |
|
|
|
|
obj.save() |
|
|
|
|
|