Commit 98c08d3635ef8363fcdd52e33f161b7a648f1ace

Authored by Gustavo
1 parent 55b5b879

Included search view

Showing 1 changed file with 46 additions and 1 deletions   Show diff stats
news/views.py
... ... @@ -6,7 +6,7 @@ from log.mixins import LogMixin
6 6 from django.core.urlresolvers import reverse, reverse_lazy
7 7 from django.contrib import messages
8 8 from django.utils.translation import ugettext_lazy as _
9   -
  9 +from django.db.models import Q, Count
10 10  
11 11 from .models import News
12 12 from .forms import NewsForm
... ... @@ -101,3 +101,48 @@ class UpdateNewsView(LoginRequiredMixin,LogMixin,generic.UpdateView):
101 101 self.object.save()
102 102  
103 103 return super(UpdateNewsView, self).form_valid(form)
  104 +
  105 +class SearchNewsView(LoginRequiredMixin, LogMixin, generic.ListView):
  106 + login_url = reverse_lazy("users:login")
  107 + redirect_field_name = 'next'
  108 +
  109 + template_name = 'news/search.html'
  110 + context_object_name = 'news'
  111 + paginate_by = 10
  112 +
  113 + def dispatch(self, request, *args, **kwargs):
  114 + search = self.request.GET.get('search', '')
  115 +
  116 + if search == '':
  117 + return redirect(reverse_lazy('news:manage_news'))
  118 +
  119 + return super(SearchNewsView, self).dispatch(request, *args, **kwargs)
  120 +
  121 + def get_queryset(self):
  122 + inteiro = False
  123 +
  124 + search = self.request.GET.get('search', '')
  125 + print(type(search))
  126 + try:
  127 + search = int(search)
  128 + inteiro = True
  129 + except Exception as e:
  130 + inteiro = False
  131 +
  132 + if inteiro:
  133 + news = News.objects.filter(Q(title__icontains = search) | Q(creator__username__icontains = search) | Q(create_date__icontains = search) | Q(create_date__year = search) | Q(create_date__month = search) | Q(create_date__day = search) ).distinct().order_by('create_date')
  134 + else:
  135 + news = News.objects.filter(Q(title__icontains = search) | Q(creator__username__icontains = search) | Q(create_date__icontains = search) ).distinct().order_by('create_date')
  136 +
  137 +
  138 + return news
  139 +
  140 + def get_context_data (self, **kwargs):
  141 + context = super(SearchNewsView, self).get_context_data(**kwargs)
  142 + context['title'] = _('Search News')
  143 + context['search'] = self.request.GET.get('search')
  144 +
  145 + return context
  146 +
  147 +class DeleteNewsView(LoginRequiredMixin,LogMixin,generic.DeleteView):
  148 + pass
... ...