Commit 9bc93f76ebd2ee44111edde23a1f9cadfe94885c

Authored by Gustavo Bernardo
1 parent 3a6a41bd

Search view Finished [Issue:#251]

Showing 1 changed file with 29 additions and 39 deletions   Show diff stats
users/views.py
... ... @@ -176,63 +176,53 @@ class SearchView(LoginRequiredMixin, generic.ListView):
176 176  
177 177 def get_context_data(self, **kwargs):
178 178 context = super(SearchView, self).get_context_data(**kwargs)
179   - #result_list = []
180 179 search = self.request.GET.get('search', None)
181 180 link_list = []
182 181 file_list = []
183 182 poll_list = []
184 183 exam_list = []
185 184 forum_list = []
186   - if has_role(self.request.user,'professor'):
  185 + qtd = 0
  186 +
  187 + if has_role(self.request.user,'system_admin'):
  188 + if search != '':
  189 + link_list = Link.objects.filter( Q(name__icontains=search)).order_by('name')
  190 + file_list = TopicFile.objects.filter(Q(name__icontains=search)).order_by('name')
  191 + poll_list = Poll.objects.filter(Q(name__icontains=search)).order_by('name')
  192 + exam_list = Exam.objects.filter(Q(name__icontains=search)).order_by('name')
  193 + forum_list = Forum.objects.filter(Q(name__icontains=search)).order_by('name')
  194 + qtd = len(link_list) + len(file_list) + len(poll_list) + len(exam_list) + len(forum_list)
  195 +
  196 + elif has_role(self.request.user,'professor'):
187 197 topics = Topic.objects.filter(owner = self.request.user)
188 198 links = Link.objects.all()
189 199 files = TopicFile.objects.all()
190 200 polls = Poll.objects.all()
191 201 exams = Exam.objects.all()
192 202 forums = Forum.objects.all()
193   - link_list = sorted([link for link in links for topic in topics if link.topic == topic],key = lambda x:x.name)
194   - exam_list = sorted([exam for exam in exams for topic in topics if exam.topic == topic],key = lambda x:x.name)
195   - file_list = sorted([arquivo for arquivo in files for topic in topics if arquivo.topic == topic],key = lambda x:x.name)
196   - poll_list = sorted([poll for poll in polls for topic in topics if poll.topic == topic],key = lambda x:x.name)
197   - forum_list = sorted([forum for forum in forums for topic in topics if forum.topic == topic],key = lambda x:x.name)
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')
  203 + if search != '':
  204 + link_list = sorted([link for link in links for topic in topics if (link.topic == topic) and ( search in link.name ) ],key = lambda x:x.name)
  205 + exam_list = sorted([exam for exam in exams for topic in topics if (exam.topic == topic) and ( search in exam.name ) ],key = lambda x:x.name)
  206 + file_list = sorted([arquivo for arquivo in files for topic in topics if (arquivo.topic == topic) and (search in arquivo.name ) ],key = lambda x:x.name)
  207 + poll_list = sorted([poll for poll in polls for topic in topics if (poll.topic == topic) and ( search in poll.name ) ],key = lambda x:x.name)
  208 + forum_list = sorted([forum for forum in forums for topic in topics if (forum.topic == topic) and ( search in forum.name ) ],key = lambda x:x.name)
  209 + qtd = len(link_list) + len(file_list) + len(poll_list) + len(exam_list) + len(forum_list)
  210 +
204 211 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   - result_list = list(chain(link_list,file_list,poll_list,exam_list,forum_list))
213   - for x in result_list:
214   - if isinstance(x,Link):
215   - print(x)
216   - paginator = Paginator(result_list, self.paginate_by)
217   - print(paginator.num_pages)
218   - print(paginator.count)
219   - page = self.request.GET.get('page')
220   - try:
221   - result_list = paginator.page(page)
222   - print (result_list)
223   - except PageNotAnInteger:
224   - result_list = paginator.page(1)
225   - except EmptyPage:
226   - #print ((paginator.num_pages))
227   - result_list = paginator.page(paginator.num_pages)
228   -
229   - '''
  212 + if search != '':
  213 + link_list = Link.objects.filter( Q(name__icontains=search) and Q(students__name = self.request.user.name)).order_by('name')
  214 + file_list = TopicFile.objects.filter(Q(name__icontains=search) and Q(students__name = self.request.user.name)).order_by('name')
  215 + poll_list = Poll.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name')
  216 + exam_list = Exam.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name')
  217 + forum_list = Forum.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name')
  218 + qtd = len(link_list) + len(file_list) + len(poll_list) + len(exam_list) + len(forum_list)
  219 +
230 220  
231 221 context['link_list'] = link_list
232 222 context['file_list'] = file_list
233 223 context['poll_list'] = poll_list
234 224 context['exam_list'] = exam_list
235 225 context['forum_list'] = forum_list
236   - #context['result_list'] = result_list
  226 + context['qtd'] = qtd
237 227  
238 228 return context
... ...