Advertisement
Guest User

views.py

a guest
Jun 7th, 2015
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.62 KB | None | 0 0
  1. from django.contrib.auth.decorators import login_required
  2. from django.shortcuts import render, get_object_or_404, redirect
  3. from articles.models import Article, Category
  4. from articles.forms import ArticleFilterForm, ArticleSearchForm
  5. from django.views import generic
  6. from articles.disqus import get_disqus_sso
  7. from taggit.models import Tag
  8. from django.contrib.auth.models import User
  9.  
  10.  
  11. def _get_disqus_sso(user):
  12.     if user.is_authenticated():
  13.         disqus_sso = get_disqus_sso(user)
  14.     else:
  15.         disqus_sso = get_disqus_sso()
  16.     return disqus_sso
  17.  
  18.  
  19. class ArticleListView(generic.TemplateView):
  20.     template_name = 'articles/list.html'
  21.  
  22.     def dispatch(self, request, tag=None, *args, **kwargs):
  23.         self.articles = Article.objects.filter(public=True)
  24.         print request.GET
  25.         self.filter_form = ArticleFilterForm(request.GET)
  26.         self.search_form = ArticleSearchForm(request.GET)
  27.         tags = Tag.objects.all()
  28.  
  29.         # Tagi
  30.         for tag in tags:
  31.             if tag.name in request.GET:
  32.                 self.articles = self.articles.filter(tags__name=tag.name)
  33.  
  34.         # Filtrowanie po kategorii
  35.         category_filter = request.GET.get('category')
  36.         if category_filter:
  37.             self.articles = self.articles.filter(category=category_filter)
  38.  
  39.         # Filtrowanie po dacie
  40.         date_filter = request.GET.get('date')
  41.         if date_filter:
  42.             self.articles = self.articles.filter(pub_date=date_filter)
  43.  
  44.         # Szukanie
  45.         query_filter = request.GET.get('query')
  46.         if query_filter:
  47.             self.articles = self.articles.filter(title__icontains=query_filter)
  48.  
  49.         return super(ArticleListView, self).dispatch(request, tag, *args, **kwargs)
  50.  
  51.     def get_context_data(self, **kwargs):
  52.         context = super(ArticleListView, self).get_context_data(**kwargs)
  53.         context['articles'] = self.articles
  54.         context['categories'] = Category.objects.all()
  55.         context['filter_form'] = self.filter_form
  56.         context['search_form'] = self.search_form
  57.         return context
  58.  
  59.  
  60. class ArticleView(generic.DetailView):
  61.     model = Article
  62.     template_name = 'articles/index.html'
  63.  
  64.     def dispatch(self, request, *args, **kwargs):
  65.         article = get_object_or_404(Article, pk=kwargs.get('pk'))
  66.         tags = article.tags.all()
  67.         for tag in tags:
  68.             if tag.name in request.GET:
  69.                 response = redirect('articles:list')
  70.                 response['Location'] += '?%s=' % tag.name
  71.                 return response
  72.         return super(ArticleView, self).dispatch(request, *args, **kwargs)
  73.  
  74.     def get_context_data(self, **kwargs):
  75.         context = super(ArticleView, self).get_context_data(**kwargs)
  76.         context['disqus_sso'] = _get_disqus_sso(self.request.user)
  77.         return context
  78.    
  79.  
  80. class CompanyListView(generic.TemplateView):
  81.     template_name = 'articles/companies_list.html'
  82.  
  83.     def get_context_data(self, **kwargs):
  84.         context = super(CompanyListView, self).get_context_data(**kwargs)
  85.         context['companies'] = User.objects.all()
  86.         return context
  87.  
  88.  
  89. class CompanyDetailView(generic.DetailView):
  90.  
  91.     model = User
  92.  
  93.     template_name = 'articles/companies_detail.html'
  94.  
  95.     def dispatch(self, request, *args, pk=None, **kwargs):
  96.         company = get_object_or_404(User, pk=pk)
  97.         articles = Article.objects.filter(author__id=company.id)
  98.         return super(CompanyDetailView, self).dispatch(request, *args, **kwargs)
  99.  
  100.     def get_context_data(self, **kwargs):
  101.         context = super(CompanyDetailView, self).get_context_data(**kwargs)
  102.         return context
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement