Commit f224994a8297e6e03a67f39b3da0995ebfd6c7fe
1 parent
de419e4c
Exists in
master
and in
5 other branches
Search view included in users/views.py [Issue:#251]
Showing
1 changed file
with
71 additions
and
1 deletions
Show diff stats
users/views.py
@@ -8,8 +8,18 @@ from django.core.urlresolvers import reverse_lazy | @@ -8,8 +8,18 @@ from django.core.urlresolvers import reverse_lazy | ||
8 | from django.utils.translation import ugettext_lazy as _ | 8 | from django.utils.translation import ugettext_lazy as _ |
9 | from rolepermissions.shortcuts import assign_role | 9 | from rolepermissions.shortcuts import assign_role |
10 | from rolepermissions.verifications import has_role | 10 | from rolepermissions.verifications import has_role |
11 | +from itertools import chain | ||
12 | +from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger | ||
13 | + | ||
11 | from .models import User | 14 | from .models import User |
12 | from .forms import UserForm, UpdateProfileForm, UpdateUserForm, UpdateProfileFormAdmin | 15 | from .forms import UserForm, UpdateProfileForm, UpdateUserForm, UpdateProfileFormAdmin |
16 | +from links.models import Link | ||
17 | +from poll.models import * | ||
18 | +from forum.models import * | ||
19 | +from files.models import * | ||
20 | +from exam.models import * | ||
21 | +from courses.models import * | ||
22 | + | ||
13 | 23 | ||
14 | # ================ ADMIN ======================= | 24 | # ================ ADMIN ======================= |
15 | class UsersListView(HasRoleMixin, LoginRequiredMixin, generic.ListView): | 25 | class UsersListView(HasRoleMixin, LoginRequiredMixin, generic.ListView): |
@@ -155,4 +165,64 @@ class Profile(LoginRequiredMixin, generic.DetailView): | @@ -155,4 +165,64 @@ class Profile(LoginRequiredMixin, generic.DetailView): | ||
155 | 165 | ||
156 | def get_object(self): | 166 | def get_object(self): |
157 | user = get_object_or_404(User, username = self.request.user.username) | 167 | user = get_object_or_404(User, username = self.request.user.username) |
158 | - return user | ||
159 | \ No newline at end of file | 168 | \ No newline at end of file |
169 | + return user | ||
170 | +class SearchView(LoginRequiredMixin, generic.ListView): | ||
171 | + | ||
172 | + login_url = reverse_lazy("core:home") | ||
173 | + redirect_field_name = 'next' | ||
174 | + queryset = Material.objects.all() | ||
175 | + template_name = 'users/search.html' | ||
176 | + paginate_by = 10 | ||
177 | + | ||
178 | + def get_context_data(self, **kwargs): | ||
179 | + context = super(SearchView, self).get_context_data(**kwargs) | ||
180 | + search = self.request.GET.get('search', None) | ||
181 | + link_list = [] | ||
182 | + file_list = [] | ||
183 | + poll_list = [] | ||
184 | + exam_list = [] | ||
185 | + forum_list = [] | ||
186 | + if has_role(self.request.user,'professor'): | ||
187 | + topics = Topic.objects.filter(owner = self.request.user) | ||
188 | + links = Link.objects.all() | ||
189 | + files = TopicFile.objects.all() | ||
190 | + polls = Poll.objects.all() | ||
191 | + exams = Exam.objects.all() | ||
192 | + forums = Forum.objects.all() | ||
193 | + link_list = sorted([link for link in links for topic in topics if link.topic == topic]) | ||
194 | + exam_list = sorted([exam for exam in exams for topic in topics if exam.topic == topic]) | ||
195 | + file_list = sorted([arquivo for arquivo in files for topic in topics if arquivo.topic == topic]) | ||
196 | + poll_list = sorted([poll for poll in polls for topic in topics if poll.topic == topic]) | ||
197 | + forum_list = sorted([forum for forum in forums for topic in topics if forum.topic == topic]) | ||
198 | + elif has_role(self.request.user,'system_admin'): | ||
199 | + link_list = Link.objects.filter( Q(name__icontains=search)).order_by('name') | ||
200 | + file_list = TopicFile.objects.filter(Q(name__icontains=search)).order_by('name') | ||
201 | + poll_list = Poll.objects.filter(Q(name__icontains=search)).order_by('name') | ||
202 | + exam_list = Exam.objects.filter(Q(name__icontains=search)).order_by('name') | ||
203 | + forum_list = Forum.objects.filter(Q(name__icontains=search)).order_by('name') | ||
204 | + elif has_role(self.request.user, 'student'): | ||
205 | + link_list = Link.objects.filter( Q(name__icontains=search) and Q(students__name = self.request.user.name)).order_by('name') | ||
206 | + file_list = TopicFile.objects.filter(Q(name__icontains=search) and Q(students__name = self.request.user.name)).order_by('name') | ||
207 | + poll_list = Poll.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') | ||
208 | + exam_list = Exam.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') | ||
209 | + forum_list = Forum.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') | ||
210 | + | ||
211 | + ''' | ||
212 | + paginator = Paginator(list_links, self.paginate_by) | ||
213 | + page = self.request.GET.get('page') | ||
214 | + | ||
215 | + try: | ||
216 | + list_links = paginator.page(page) | ||
217 | + except PageNotAnInteger: | ||
218 | + list_links = paginator.page(1) | ||
219 | + except EmptyPage: | ||
220 | + list_links = paginator.page(paginator.num_pages) | ||
221 | + ''' | ||
222 | + | ||
223 | + context['link_list'] = link_list | ||
224 | + context['file_list'] = file_list | ||
225 | + context['poll_list'] = poll_list | ||
226 | + context['exam_list'] = exam_list | ||
227 | + context['forum_list'] = forum_list | ||
228 | + | ||
229 | + return context |