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 | from django.utils.translation import ugettext_lazy as _ |
9 | 9 | from rolepermissions.shortcuts import assign_role |
10 | 10 | from rolepermissions.verifications import has_role |
11 | +from itertools import chain | |
12 | +from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger | |
13 | + | |
11 | 14 | from .models import User |
12 | 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 | 24 | # ================ ADMIN ======================= |
15 | 25 | class UsersListView(HasRoleMixin, LoginRequiredMixin, generic.ListView): |
... | ... | @@ -155,4 +165,64 @@ class Profile(LoginRequiredMixin, generic.DetailView): |
155 | 165 | |
156 | 166 | def get_object(self): |
157 | 167 | user = get_object_or_404(User, username = self.request.user.username) |
158 | - return user | |
159 | 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 | ... | ... |