Commit 98c08d3635ef8363fcdd52e33f161b7a648f1ace
1 parent
55b5b879
Exists in
master
and in
2 other branches
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,7 +6,7 @@ from log.mixins import LogMixin | ||
6 | from django.core.urlresolvers import reverse, reverse_lazy | 6 | from django.core.urlresolvers import reverse, reverse_lazy |
7 | from django.contrib import messages | 7 | from django.contrib import messages |
8 | from django.utils.translation import ugettext_lazy as _ | 8 | from django.utils.translation import ugettext_lazy as _ |
9 | - | 9 | +from django.db.models import Q, Count |
10 | 10 | ||
11 | from .models import News | 11 | from .models import News |
12 | from .forms import NewsForm | 12 | from .forms import NewsForm |
@@ -101,3 +101,48 @@ class UpdateNewsView(LoginRequiredMixin,LogMixin,generic.UpdateView): | @@ -101,3 +101,48 @@ class UpdateNewsView(LoginRequiredMixin,LogMixin,generic.UpdateView): | ||
101 | self.object.save() | 101 | self.object.save() |
102 | 102 | ||
103 | return super(UpdateNewsView, self).form_valid(form) | 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 |