diff --git a/news/views.py b/news/views.py index dcf291f..0a55244 100644 --- a/news/views.py +++ b/news/views.py @@ -6,7 +6,7 @@ from log.mixins import LogMixin from django.core.urlresolvers import reverse, reverse_lazy from django.contrib import messages from django.utils.translation import ugettext_lazy as _ - +from django.db.models import Q, Count from .models import News from .forms import NewsForm @@ -101,3 +101,48 @@ class UpdateNewsView(LoginRequiredMixin,LogMixin,generic.UpdateView): self.object.save() return super(UpdateNewsView, self).form_valid(form) + +class SearchNewsView(LoginRequiredMixin, LogMixin, generic.ListView): + login_url = reverse_lazy("users:login") + redirect_field_name = 'next' + + template_name = 'news/search.html' + context_object_name = 'news' + paginate_by = 10 + + def dispatch(self, request, *args, **kwargs): + search = self.request.GET.get('search', '') + + if search == '': + return redirect(reverse_lazy('news:manage_news')) + + return super(SearchNewsView, self).dispatch(request, *args, **kwargs) + + def get_queryset(self): + inteiro = False + + search = self.request.GET.get('search', '') + print(type(search)) + try: + search = int(search) + inteiro = True + except Exception as e: + inteiro = False + + if inteiro: + 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') + else: + news = News.objects.filter(Q(title__icontains = search) | Q(creator__username__icontains = search) | Q(create_date__icontains = search) ).distinct().order_by('create_date') + + + return news + + def get_context_data (self, **kwargs): + context = super(SearchNewsView, self).get_context_data(**kwargs) + context['title'] = _('Search News') + context['search'] = self.request.GET.get('search') + + return context + +class DeleteNewsView(LoginRequiredMixin,LogMixin,generic.DeleteView): + pass -- libgit2 0.21.2