diff --git a/apps/emencia/django/newsletter/forms.py b/apps/emencia/django/newsletter/forms.py index 6ca24976..0978e52a 100644 --- a/apps/emencia/django/newsletter/forms.py +++ b/apps/emencia/django/newsletter/forms.py @@ -84,7 +84,8 @@ class MailingSettingsForm(forms.ModelForm): email = forms.EmailField( error_messages={ 'required': _(u'Поле e-mail обязательно для заполнения') - } + }, + widget=forms.TextInput(attrs={'placeholder': _(u'Ваш e-mail')}) ) r_cities = ML_ModelMultipleChoiceField( label=_(u'Города России'), required=False, @@ -110,7 +111,6 @@ class MailingSettingsForm(forms.ModelForm): 'content_articles', ] widgets = { - 'email': forms.TextInput(attrs={'placeholder': _(u'Ваш e-mail')}), 'first_name': forms.TextInput(attrs={'placeholder': _(u'Ваше имя')}), 'moscow': forms.CheckboxInput(), 'foreign': forms.CheckboxInput(), @@ -126,6 +126,10 @@ class MailingSettingsForm(forms.ModelForm): for field in ['co', 'r_cities', 'tg', 'th', 'area']: self.fields[field].widget.attrs.update({'style': 'display: none;'}) if self.instance and self.instance.pk: + # если пользовать авторизован, у нас есть инстанс + # и там не нужно выводить для редактирования его личные данные + del self.fields['email'] + del self.fields['first_name'] # area self.initial['area'] = set(self.instance.area.values_list('pk', flat=True)) area_q = Area.objects.language().all().order_by('name') @@ -199,7 +203,7 @@ class MailingSettingsForm(forms.ModelForm): u'вам интересны. На основе этих ' u'настроек мы включим в ваше письмо ' u'релевантные события!')) - if not cleaned_data.get('moscow') or not cleaned_data.get('russia'): + if not cleaned_data.get('moscow') and not cleaned_data.get('russia') and not cleaned_data.get('foreign'): raise forms.ValidationError(_(u'Необходимо выбрать минимум ' u'1 вариант в гео-фильтрах')) return cleaned_data diff --git a/apps/emencia/django/newsletter/views/expo_views.py b/apps/emencia/django/newsletter/views/expo_views.py index 5fb65276..45d16142 100644 --- a/apps/emencia/django/newsletter/views/expo_views.py +++ b/apps/emencia/django/newsletter/views/expo_views.py @@ -65,6 +65,12 @@ class SubscribeView(GetUserMixin, FormView): data['first_name'] = self.request.GET['first_name'] return data + def get_form_kwargs(self): + kwargs = super(SubscribeView, self).get_form_kwargs() + if self.request.user.is_authenticated(): + kwargs.update({'instance': self.object}) + return kwargs + def get_success_url(self): if not self.request.user.is_authenticated(): return reverse_lazy('subscription_activation_send')