From 28caafcce24f65987e284c10f86c543c6148e745 Mon Sep 17 00:00:00 2001 From: Ivan_Home_PC Date: Mon, 28 Sep 2015 00:45:31 +0300 Subject: [PATCH] article/blog fixes and improvements --- article/forms.py | 6 ++--- article/urls.py | 8 ++++--- article/views.py | 24 +++++++++++++------- templates/client/article/article.html | 14 +----------- templates/client/article/blog_list.html | 3 ++- templates/client/article/catalog.html | 10 +++++++- templates/client/includes/article_theme.html | 6 +++++ theme/views.py | 9 ++++---- 8 files changed, 47 insertions(+), 33 deletions(-) create mode 100644 templates/client/includes/article_theme.html diff --git a/article/forms.py b/article/forms.py index 2648f96b..54e6477f 100644 --- a/article/forms.py +++ b/article/forms.py @@ -19,7 +19,7 @@ from conference.models import Conference class BlogForm(forms.Form): type = Article.blog - theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.all(), required=False, + theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.exclude(article__id=None), required=False, widget=forms.SelectMultiple(attrs={'style':'width: 550px'})) publish_date = forms.DateField(label=u'Дата публикации', input_formats=['%Y-%m-%d', '%d.%m.%Y'], required=False) tag = forms.CharField(label=u'Теги', widget=forms.HiddenInput(), required=False) @@ -258,7 +258,7 @@ class BlogForm(forms.ModelForm): class ArticleFilterForm(forms.Form): theme = forms.MultipleChoiceField(label=_(u'Тематика:'), required=False, - choices=[(item.id, item.name) for item in Theme.objects.language().all()]) + choices=[(item.id, item.name) for item in Theme.objects.language().exclude(article__id=None)]) tag = forms.CharField(label=_(u'Теги:'), widget=forms.HiddenInput(), required=False) ''' @@ -295,4 +295,4 @@ class NewsFilterForm(forms.Form): super(NewsFilterForm, self).__init__(*args, **kwargs) ids = [item['theme'] for item in list(Article.objects.news().values('theme').distinct())] self.fields['theme'] = forms.MultipleChoiceField(label=_(u'Тематика:'), required=False, - choices=[(item.id, item.name) for item in Theme.objects.language().filter(id__in=ids)]) \ No newline at end of file + choices=[(item.id, item.name) for item in Theme.objects.language().exclude(article__id=None).filter(id__in=ids)]) \ No newline at end of file diff --git a/article/urls.py b/article/urls.py index a0faf232..482a9e76 100644 --- a/article/urls.py +++ b/article/urls.py @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- from django.conf.urls import patterns, url -from views import BlogList, NewsList, BlogDetail, NewsDetail, NewsTagCatalog, BlogsTagCatalog +from views import BlogList, NewsList, BlogDetail, NewsDetail, NewsTagCatalog, BlogsFilterCatalog urlpatterns = patterns('', - url(r'^blogs/tag/(?P.*)/page/(?P\d+)/$', BlogsTagCatalog.as_view(), {'meta_id':75}), + url(r'^blogs/tag/(?P.*)/page/(?P\d+)/$', BlogsFilterCatalog.as_view(), {'meta_id':75, 'filter':'tag'}), + url(r'^blogs/theme/(?P.*)/page/(?P\d+)/$', BlogsFilterCatalog.as_view(), {'filter':'theme'}), url(r'^blogs/page/(?P\d+)/$', BlogList.as_view(), {'meta_id':79}), - url(r'^blogs/tag/(?P.*)/$', BlogsTagCatalog.as_view(), {'meta_id':75}), + url(r'^blogs/tag/(?P.*)/$', BlogsFilterCatalog.as_view(), {'meta_id':75, 'filter':'tag'}), + url(r'^blogs/theme/(?P.*)/$', BlogsFilterCatalog.as_view(), {'filter':'theme'}), url(r'^blogs/$', BlogList.as_view(), {'meta_id':79}), diff --git a/article/views.py b/article/views.py index 952e4193..7b5c68ec 100644 --- a/article/views.py +++ b/article/views.py @@ -5,7 +5,7 @@ from functions.custom_views import ListView from django.http import HttpResponse from models import Article from forms import ArticleFilterForm -from theme.models import Tag +from theme.models import Tag, Theme from meta.views import MetadataMixin @@ -163,7 +163,7 @@ class NewsTagCatalog(MetadataMixin, ListView): -class BlogsTagCatalog(MetadataMixin, ListView): +class BlogsFilterCatalog(MetadataMixin, ListView): model = Article template_name = 'client/article/catalog.html' catalog_url = '/blogs/tag/' @@ -171,12 +171,19 @@ class BlogsTagCatalog(MetadataMixin, ListView): year = None month = None - def get_queryset(self): + def get_queryset(self, **kwargs): slug = self.kwargs.get('slug') - tag = get_object_or_404(Tag, url=slug) - self.kwargs['tag'] = tag - self.filter_object = tag - qs = Article.objects.blogs().filter(tag=tag) + filter = self.kwargs['filter'] + if filter == 'tag': + tag = get_object_or_404(Tag, url=slug) + self.kwargs['tag'] = tag + self.filter_object = tag + qs = Article.objects.blogs().filter(tag=tag) + else: + theme = get_object_or_404(Theme, url=slug) + self.kwargs['theme'] = theme + self.filter_object = theme + qs = Article.objects.blogs().filter(theme = theme) year = self.kwargs.get('year') if year: @@ -201,8 +208,9 @@ class BlogsTagCatalog(MetadataMixin, ListView): def get_context_data(self, **kwargs): - context = super(BlogsTagCatalog, self).get_context_data(**kwargs) + context = super(BlogsFilterCatalog, self).get_context_data(**kwargs) context['filter_object'] = self.filter_object + context['type'] = 'article' context['year'] = self.year context['month'] = self.month context['catalog_url'] = self.catalog_url diff --git a/templates/client/article/article.html b/templates/client/article/article.html index da51969d..71f5d860 100644 --- a/templates/client/article/article.html +++ b/templates/client/article/article.html @@ -19,7 +19,7 @@ {% include 'client/includes/article/article_logo.html' with obj=object %}

{{ object.main_title }}

- {{ object.publish_date|date:"d E Y" }}{{ object.author.get_full_name }} + {{ object.created|date:"d E Y" }}{% if object.theme.all.exists %}{% include 'includes/article_theme.html' with obj=object %}{% endif %} {% if request.user.is_admin %} {% trans 'изменить' %} {% endif %} @@ -30,18 +30,6 @@
- - - - - - -
{% trans 'Автор' %}:{% include 'includes/show_logo.html' with obj=object.author %} -

{{ object.author.get_full_name }}

- {% if object.author.profile.fb %} - - {% endif %} -
{% if object.tag.all.exists %}
{% include 'includes/article_tags.html' with obj=object %} diff --git a/templates/client/article/blog_list.html b/templates/client/article/blog_list.html index de840d8d..17c35b26 100644 --- a/templates/client/article/blog_list.html +++ b/templates/client/article/blog_list.html @@ -45,7 +45,8 @@