From 9bc93f76ebd2ee44111edde23a1f9cadfe94885c Mon Sep 17 00:00:00 2001 From: Gustavo Bernardo Date: Mon, 7 Nov 2016 22:38:45 -0300 Subject: [PATCH] Search view Finished [Issue:#251] --- users/views.py | 68 +++++++++++++++++++++++++++++--------------------------------------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/users/views.py b/users/views.py index 85ff744..9ac476c 100644 --- a/users/views.py +++ b/users/views.py @@ -176,63 +176,53 @@ class SearchView(LoginRequiredMixin, generic.ListView): def get_context_data(self, **kwargs): context = super(SearchView, self).get_context_data(**kwargs) - #result_list = [] search = self.request.GET.get('search', None) link_list = [] file_list = [] poll_list = [] exam_list = [] forum_list = [] - if has_role(self.request.user,'professor'): + qtd = 0 + + if has_role(self.request.user,'system_admin'): + if search != '': + link_list = Link.objects.filter( Q(name__icontains=search)).order_by('name') + file_list = TopicFile.objects.filter(Q(name__icontains=search)).order_by('name') + poll_list = Poll.objects.filter(Q(name__icontains=search)).order_by('name') + exam_list = Exam.objects.filter(Q(name__icontains=search)).order_by('name') + forum_list = Forum.objects.filter(Q(name__icontains=search)).order_by('name') + qtd = len(link_list) + len(file_list) + len(poll_list) + len(exam_list) + len(forum_list) + + elif has_role(self.request.user,'professor'): topics = Topic.objects.filter(owner = self.request.user) links = Link.objects.all() files = TopicFile.objects.all() polls = Poll.objects.all() exams = Exam.objects.all() forums = Forum.objects.all() - link_list = sorted([link for link in links for topic in topics if link.topic == topic],key = lambda x:x.name) - exam_list = sorted([exam for exam in exams for topic in topics if exam.topic == topic],key = lambda x:x.name) - file_list = sorted([arquivo for arquivo in files for topic in topics if arquivo.topic == topic],key = lambda x:x.name) - poll_list = sorted([poll for poll in polls for topic in topics if poll.topic == topic],key = lambda x:x.name) - forum_list = sorted([forum for forum in forums for topic in topics if forum.topic == topic],key = lambda x:x.name) - elif has_role(self.request.user,'system_admin'): - link_list = Link.objects.filter( Q(name__icontains=search)).order_by('name') - file_list = TopicFile.objects.filter(Q(name__icontains=search)).order_by('name') - poll_list = Poll.objects.filter(Q(name__icontains=search)).order_by('name') - exam_list = Exam.objects.filter(Q(name__icontains=search)).order_by('name') - forum_list = Forum.objects.filter(Q(name__icontains=search)).order_by('name') + if search != '': + 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) + 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) + 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) + 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) + 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) + qtd = len(link_list) + len(file_list) + len(poll_list) + len(exam_list) + len(forum_list) + elif has_role(self.request.user, 'student'): - link_list = Link.objects.filter( Q(name__icontains=search) and Q(students__name = self.request.user.name)).order_by('name') - file_list = TopicFile.objects.filter(Q(name__icontains=search) and Q(students__name = self.request.user.name)).order_by('name') - poll_list = Poll.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') - exam_list = Exam.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') - forum_list = Forum.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') - - ''' - result_list = list(chain(link_list,file_list,poll_list,exam_list,forum_list)) - for x in result_list: - if isinstance(x,Link): - print(x) - paginator = Paginator(result_list, self.paginate_by) - print(paginator.num_pages) - print(paginator.count) - page = self.request.GET.get('page') - try: - result_list = paginator.page(page) - print (result_list) - except PageNotAnInteger: - result_list = paginator.page(1) - except EmptyPage: - #print ((paginator.num_pages)) - result_list = paginator.page(paginator.num_pages) - - ''' + if search != '': + link_list = Link.objects.filter( Q(name__icontains=search) and Q(students__name = self.request.user.name)).order_by('name') + file_list = TopicFile.objects.filter(Q(name__icontains=search) and Q(students__name = self.request.user.name)).order_by('name') + poll_list = Poll.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') + exam_list = Exam.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') + forum_list = Forum.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') + qtd = len(link_list) + len(file_list) + len(poll_list) + len(exam_list) + len(forum_list) + context['link_list'] = link_list context['file_list'] = file_list context['poll_list'] = poll_list context['exam_list'] = exam_list context['forum_list'] = forum_list - #context['result_list'] = result_list + context['qtd'] = qtd return context -- libgit2 0.21.2