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'