From 559869876f45981e905512726f89e9501ca00c2b Mon Sep 17 00:00:00 2001 From: Slava Kyrachevsky Date: Fri, 3 Feb 2017 13:36:44 +0200 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D1=84=D0=B8=D0=BB?= =?UTF-8?q?=D1=8C=D1=82=D1=80=D0=B0=20=D1=83=20=D0=BF=D1=83=D0=BD=D0=BA?= =?UTF-8?q?=D1=82=D0=B0=20=D0=9C=D0=B5=D1=82=D0=B0=20=D0=B2=20=D0=B0=D0=B4?= =?UTF-8?q?=D0=BC=D0=B8=D0=BD=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/article/forms.py | 19 +++++++++++++++++++ apps/core/simple_index_view.py | 13 +++++++++++++ apps/meta/admin.py | 1 + apps/meta/forms.py | 25 ++++++++++++++++++++++++- 4 files changed, 57 insertions(+), 1 deletion(-) diff --git a/apps/article/forms.py b/apps/article/forms.py index 1575e005..1ff7478b 100644 --- a/apps/article/forms.py +++ b/apps/article/forms.py @@ -97,6 +97,25 @@ class _BlogForm(forms.Form): return [] +class BlogForm(_BlogForm): + author = forms.ModelChoiceField(label=_(u'Автор'), queryset=Author.objects.all()) + draft = forms.BooleanField(label=_(u'Черновик'), required=False, localize=True) + + def __init__(self, *args, **kwargs): + super(BlogForm, self).__init__(*args, **kwargs) + if len(settings.LANGUAGES) in range(10): + for lid, (code, name) in enumerate(settings.LANGUAGES): + # required = True if lid == 0 else False + self.fields['short_description_%s' % code] = forms.CharField(label=_(u'Краткое содержание'), required=False, widget=CKEditorWidget) + + def save(self, author, article=None, commit=True): + article = super(BlogForm, self).save(author, article=article, commit=False) + article.draft = self.cleaned_data['draft'] + article.author_s = self.cleaned_data['author'] + article.save() + return article + + class NewsForm(_BlogForm): type = Article.news exposition = forms.CharField(label=_(u'Выставка'), widget=forms.HiddenInput(), required=False) diff --git a/apps/core/simple_index_view.py b/apps/core/simple_index_view.py index 9a2c6436..b434d43a 100644 --- a/apps/core/simple_index_view.py +++ b/apps/core/simple_index_view.py @@ -62,3 +62,16 @@ class ParticipationViewLanding(JitterCacheMixin, MetadataMixin, FormView): class AboutView(MetadataMixin, TemplateView): template_name = 'client/simple_pages/about.html' + + +def callback(request): + response = {'success': False} + if request.GET: + form = CallBackForm(request.GET) + if form.is_valid(): + form.save() + response['success'] = True + else: + response['errors'] = form.errors + + return HttpResponse(json.dumps(response), content_type='application/json') diff --git a/apps/meta/admin.py b/apps/meta/admin.py index 20c0f236..bc47f4ef 100644 --- a/apps/meta/admin.py +++ b/apps/meta/admin.py @@ -13,6 +13,7 @@ class MetaListView(AdminListView): form_class = MetaFilterForm model = MetaSetting + class MetaView(AdminView): form_class = MetaForm model = MetaSetting diff --git a/apps/meta/forms.py b/apps/meta/forms.py index 67fb7be2..00b9dcca 100644 --- a/apps/meta/forms.py +++ b/apps/meta/forms.py @@ -48,8 +48,31 @@ class MetaForm(forms.Form): meta.save() -class MetaFilterForm(AdminFilterForm): +class MetaFilterForm(forms.Form): model = MetaSetting + exact_name = forms.CharField(label=_(u'Название'), required=False) + name = forms.CharField(label=_(u'Часть названия'), required=False) + + def filter(self): + """ + + return filtered queryset + form must be cleaned before calling this method + + """ + model = self.model + data = self.cleaned_data + name = data['name'] + exact_name = data['exact_name'] + if exact_name: + qs = model.objects.filter(translations__title=name).distinct() + return qs + + qs = model.objects.all() + if name: + qs = qs.filter(translations__title__icontains=name).distinct() + + return qs class SeoTextForm(TranslatableModelForm):