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.
 
 
 
 
 
 

107 lines
3.3 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
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(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:
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(DetailView):
model = Article
slug_field = 'slug'
template_name = 'article/article.html'