You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
3.4 KiB
109 lines
3.4 KiB
import json
|
|
from django.views.generic import DetailView, ListView
|
|
from django.http import HttpResponse
|
|
from models import Article
|
|
from forms import ArticleFilterForm
|
|
from theme.models import Tag
|
|
from meta.views import MetadataMixin
|
|
|
|
|
|
|
|
class NewsList(ListView):
|
|
model = Article
|
|
template_name = 'article/news_list.html'
|
|
paginate_by = 10
|
|
|
|
def get_queryset(self):
|
|
if self.request.GET:
|
|
qs = self.model.objects.news()
|
|
themes = self.request.GET.getlist('theme')
|
|
if themes:
|
|
qs = qs.filter(theme__id__in=themes)
|
|
|
|
tags = self.request.GET.getlist('tag')
|
|
if u'' in tags:
|
|
tags.remove(u'')
|
|
if tags:
|
|
tags = tags[0].split(',')
|
|
qs = qs.filter(tag__id__in=tags)
|
|
|
|
return qs
|
|
else:
|
|
return self.model.objects.news()
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(NewsList, self).get_context_data(object_list=self.object_list)
|
|
if self.request.GET:
|
|
filter_form = ArticleFilterForm(self.request.GET)
|
|
tags = self.request.GET.getlist('tag')
|
|
if u'' in tags:
|
|
tags.remove(u'')
|
|
if tags:
|
|
tags = tags[0].split(',')
|
|
tag_qs = Tag.objects.filter(id__in=tags)
|
|
tags = [{'id': str(tag.id), 'text': tag.name} for tag in tag_qs]
|
|
filter_form.fields['tag'].widget.attrs['data-predifined'] = json.dumps(tags)
|
|
filter_form.fields['tag'].widget.attrs['value'] = ''
|
|
else:
|
|
filter_form = ArticleFilterForm()
|
|
|
|
context['article_filter_form'] = filter_form
|
|
return context
|
|
|
|
|
|
|
|
class NewsDetail(MetadataMixin, DetailView):
|
|
model = Article
|
|
slug_field = 'slug'
|
|
template_name = 'article/news.html'
|
|
|
|
|
|
class BlogList(ListView):
|
|
model = Article
|
|
template_name = 'article/blog_list.html'
|
|
paginate_by = 10
|
|
|
|
def get_queryset(self):
|
|
if self.request.GET:
|
|
qs = self.model.objects.blogs()
|
|
|
|
themes = self.request.GET.getlist('theme')
|
|
if themes:
|
|
qs = qs.filter(theme__id__in=themes)
|
|
|
|
tags = self.request.GET.getlist('tag')
|
|
if u'' in tags:
|
|
tags.remove(u'')
|
|
if tags:
|
|
tags = tags[0].split(',')
|
|
qs = qs.filter(tag__id__in=tags)
|
|
|
|
return qs
|
|
else:
|
|
return self.model.objects.blogs()
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(BlogList, self).get_context_data(object_list=self.object_list)
|
|
if self.request.GET:
|
|
filter_form = ArticleFilterForm(self.request.GET)
|
|
tags = self.request.GET.getlist('tag')
|
|
if u'' in tags:
|
|
tags.remove(u'')
|
|
if tags:
|
|
tags = tags[0].split(',')
|
|
tag_qs = Tag.objects.filter(id__in=tags)
|
|
tags = [{'id': str(tag.id), 'text': tag.name} for tag in tag_qs]
|
|
filter_form.fields['tag'].widget.attrs['data-predifined'] = json.dumps(tags)
|
|
filter_form.fields['tag'].widget.attrs['value'] = ''
|
|
else:
|
|
filter_form = ArticleFilterForm()
|
|
|
|
context['article_filter_form'] = filter_form
|
|
return context
|
|
|
|
|
|
|
|
class BlogDetail(MetadataMixin, DetailView):
|
|
model = Article
|
|
slug_field = 'slug'
|
|
template_name = 'article/article.html' |