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 | 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 | ... | ... |