diff --git a/.gitignore b/.gitignore index 4a661b6a..1f6beb1a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ Thumbs.db /proj/local.py .DS_Store locale +proj/settings.py # gulp node_modules diff --git a/accounts/views.py b/accounts/views.py index ff4b0119..7914738d 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -103,18 +103,22 @@ class MailingSettings(ContextMixin, AjaxableResponseMixin, CreateUpdateView): self.extra_ctx.update({ 'r_cities': City.used.russia(), }) - try: - instance = Contact.objects.get(user=self.request.user) - except Contact.DoesNotExist: - instance = None + instance = None + if self.request.user.is_authenticated(): + try: + instance = Contact.objects.get(user=self.request.user) + except Contact.DoesNotExist: + try: + instance = Contact.objects.get(email=self.request.user.email) + except Contact.DoesNotExist: + pass if instance is not None: self.extra_ctx.update({ - 'checked_f_countries': instance.f_countries.values_list('pk', flat=True), - 'checked_r_cities': instance.r_cities.values_list('pk', flat=True), - 'checked_tg': instance.tags.values_list('pk', flat=True), - 'checked_th': instance.themes.values_list('pk', flat=True), + 'checked_f_countries': list(instance.f_countries.values_list('pk', flat=True)), + 'checked_r_cities': list(instance.r_cities.values_list('pk', flat=True)), + 'checked_tg': list(instance.tags.values_list('pk', flat=True)), + 'checked_th': list(instance.themes.values_list('pk', flat=True)), }) - return instance def form_valid(self, form): diff --git a/emencia/django/newsletter/forms.py b/emencia/django/newsletter/forms.py index 05a15b4e..7bf64bef 100644 --- a/emencia/django/newsletter/forms.py +++ b/emencia/django/newsletter/forms.py @@ -119,7 +119,7 @@ class ML_ModelMultipleChoiceField(forms.ModelMultipleChoiceField): class MailingSettingsForm(forms.ModelForm): r_cities = ML_ModelMultipleChoiceField( label=_(u'Города России'), required=False, - queryset=City.objects.all().distinct()) + queryset=City.objects.all()) f_countries = ML_ModelMultipleChoiceField( label=_(u'Зарубежные страны'), required=False, queryset=Country.objects.all()) @@ -153,22 +153,21 @@ class MailingSettingsForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(MailingSettingsForm, self).__init__(*args, **kwargs) - # self.fields['f_countries'].queryset = Country.objects.none() - # self.fields['r_cities'].queryset = City.objects.none() - # self.fields['tg'].queryset = Tag.objects.none() - # self.fields['th'].queryset = Theme.objects.none() - + for field in ['f_countries', 'r_cities', 'tg', 'th']: + 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() - # import pdb; - # pdb.set_trace(); + self.fields['th'].widget.choices = self.fields['th'].choices def save(self): obj = super(MailingSettingsForm, self).save(commit=False)