Commit 9adf508cc2433ae831797ae13ac4b6f5af01ef71

Authored by Jailson Dias
1 parent 7adeae94

ajeitar a busca de curso nas telas de my courses e all courses

courses/templates/course/index.html
... ... @@ -10,47 +10,6 @@
10 10  
11 11 {% endblock %}
12 12  
13   -{% block sidebar %}
14   -{{block.super}}
15   - {% if user|has_role:'professor' or user|has_role:'system_admin' %}
16   - <div class="panel panel-primary">
17   - <div class="panel-heading">
18   - <h3 class="panel-title">{% trans 'Category' %}</h3>
19   - </div>
20   - <div class="panel-body">
21   - <ul class="nav nav-pills nav-stacked">
22   - <li><a href="{% url 'course:create_cat' %}">{% trans 'Create Category' %}</a></li>
23   - <li><a href="{% url 'course:manage_cat' %}">{% trans 'List Category' %}</a></li>
24   - </ul>
25   - </div>
26   - </div>
27   - {% endif %}
28   - <div class="panel-group" id="accordion">
29   - <div class="panel panel-primary">
30   - <div class="panel-heading">
31   - <h4 class="panel-title">
32   - <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
33   - </span>{% trans 'Categorys' %}</a>
34   - </h4>
35   - </div>
36   - <div id="collapseOne" class="panel-collapse collapse in">
37   - <div class="panel-body">
38   - <table class="table">
39   - {% for category in categorys_courses %}
40   - <tr>
41   - <td>
42   - <a href="?category={{category.name}}">{{category.name}}</a>
43   - </td>
44   - </tr>
45   - {% endfor %}
46   - </table>
47   - </div>
48   - </div>
49   - </div>
50   - </div>
51   -
52   -{% endblock %}
53   -
54 13 {% block content %}
55 14 {% if messages %}
56 15 {% for message in messages %}
... ... @@ -64,7 +23,7 @@
64 23 {% endif %}
65 24  
66 25 <div class="col-md-12 cards-content">
67   - <form id="searchform" action="{% url 'course:manage' %}" method="get" accept-charset="utf-8">
  26 + <form id="searchform" method="get" accept-charset="utf-8">
68 27 <div class="input-group">
69 28 <div class="form-group is-empty">
70 29 <input type="text" class="form-control" placeholder="Search Courses" name="q"></div>
... ... @@ -92,10 +51,10 @@
92 51 </div>
93 52 </div>
94 53 <div id="{{category.slug}}" class="panel-collapse collapse">
95   - {% for course in category.course_category.all %}
96   - {% if user in course.students.all or user in course.professors.all or user|has_role:'system_admin' %}
  54 + {% for course in category.course_category %}
  55 + {# {% if user in course.students.all or user in course.professors.all or user|has_role:'system_admin' %}#}
97 56 {% include "course/course_card.html" %}
98   - {% endif %}
  57 + {# {% endif %}#}
99 58 {% endfor %}
100 59 </div>
101 60 </div>
... ...
courses/views.py
... ... @@ -31,6 +31,33 @@ import time
31 31 from rest_framework import viewsets, permissions
32 32 from .serializers import *
33 33  
  34 +class Category:
  35 + name = None
  36 + slug = None
  37 + course_category = []
  38 +
  39 +def course_category(list_courses):
  40 +
  41 + list_courses = list_courses.distinct().order_by('category','name')
  42 + categorys_courses = []
  43 + cat_slug = None
  44 + cat = None
  45 + for course in list_courses:
  46 + if (course.category.slug != cat_slug):
  47 + if (cat != None):
  48 + categorys_courses.append(cat)
  49 + cat_slug = course.category.slug
  50 + cat = Category()
  51 + cat.name = course.category.name
  52 + cat.slug = cat_slug
  53 + cat.course_category = []
  54 + cat.course_category.append(course)
  55 +
  56 + if (cat):
  57 + categorys_courses.append(cat)
  58 +
  59 + return categorys_courses
  60 +
34 61 class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
35 62  
36 63 login_url = reverse_lazy("core:home")
... ... @@ -38,8 +65,6 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
38 65 queryset = Course.objects.all()
39 66 template_name = 'course/index.html'
40 67 context_object_name = 'courses'
41   - paginate_by = 10
42   - aparece = True
43 68  
44 69  
45 70 def get_queryset(self):
... ... @@ -48,14 +73,12 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
48 73 course_search = self.request.GET.get('q', None)
49 74 category_search = self.request.GET.get('category', None)
50 75 if course_search:
51   - self.aparece = False
52 76 query_list = course_search.split()
53 77 result = result.filter(
54 78 reduce(operator.and_,
55 79 (Q(name__icontains=q) for q in query_list))
56 80 )
57 81 if category_search:
58   - self.aparece = False
59 82 query_list = category_search.split()
60 83 result = result.filter(
61 84 reduce(operator.and_,
... ... @@ -66,58 +89,40 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
66 89 def get_context_data(self, **kwargs):
67 90 context = super(IndexView, self).get_context_data(**kwargs)
68 91 list_courses = None
69   - categorys_courses = None
70   - if has_role(self.request.user,'professor'):
71   - list_courses = Course.objects.filter(Q(professors = True)|Q(professors__name = self.request.user.name)).order_by('name')
72   - categorys_courses = CourseCategory.objects.filter(course_category__professors__name = self.request.user.name).distinct()
73   - elif has_role(self.request.user,'system_admin'):
74   - list_courses = queryset.order_by('name')
75   - categorys_courses = CourseCategory.objects.all()
  92 + if has_role(self.request.user,'system_admin'):
  93 + list_courses = self.get_queryset().order_by('name')
  94 + # categorys_courses = CourseCategory.objects.all()
  95 + elif has_role(self.request.user,'professor'):
  96 + list_courses = self.get_queryset().filter(professors__in = [self.request.user])
  97 + # categorys_courses = CourseCategory.objects.filter(course_category__professors__name = self.request.user.name).distinct()
76 98 elif has_role(self.request.user, 'student'):
77   - list_courses = Course.objects.filter(Q(students = True)|Q(students__name = self.request.user.name)).order_by('name')
78   - categorys_courses = CourseCategory.objects.filter(course_category__students__name = self.request.user.name).distinct()
79   -
80   - paginator = Paginator(list_courses, self.paginate_by)
81   - page = self.request.GET.get('page')
82   -
83   - try:
84   - list_courses = paginator.page(page)
85   - except PageNotAnInteger:
86   - list_courses = paginator.page(1)
87   - except EmptyPage:
88   - list_courses = paginator.page(paginator.num_pages)
89   -
90   - context['list_courses'] = list_courses
91   - context['categorys_courses'] = categorys_courses
92   - context['aparece'] = self.aparece
  99 + list_courses = self.get_queryset().filter(students__in = [self.request.user])
93 100  
  101 + context['categorys_courses'] = course_category(list_courses)
94 102 return context
95 103  
96 104 class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView):
97 105  
98 106 login_url = reverse_lazy("core:home")
99 107 redirect_field_name = 'next'
100   - queryset = Course.objects.all()
101 108 template_name = 'course/index.html'
102 109 context_object_name = 'courses'
103   - paginate_by = 5
104   - aparece = True
105 110  
106 111  
107 112 def get_queryset(self):
108   - result = super(AllCoursesView, self).get_queryset()
  113 + result = Course.objects.all()
109 114  
110 115 course_search = self.request.GET.get('q', None)
111 116 category_search = self.request.GET.get('category', None)
112 117 if course_search:
113   - self.aparece = False
  118 + # self.aparece = False
114 119 query_list = course_search.split()
115 120 result = result.filter(
116 121 reduce(operator.and_,
117 122 (Q(name__icontains=q) for q in query_list))
118 123 )
119 124 if category_search:
120   - self.aparece = False
  125 + # self.aparece = False
121 126 query_list = category_search.split()
122 127 result = result.filter(
123 128 reduce(operator.and_,
... ... @@ -127,25 +132,10 @@ class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView):
127 132  
128 133 def get_context_data(self, **kwargs):
129 134 context = super(AllCoursesView, self).get_context_data(**kwargs)
130   - list_courses = None
131   - categorys_courses = None
132   - list_courses = Course.objects.all().order_by('name')
133   - #categorys_courses = CourseCategory.objects.all().distinct().order_by('name')
134   - categorys_courses = CourseCategory.objects.all()
135   - paginator = Paginator(list_courses, self.paginate_by)
136   - page = self.request.GET.get('page')
137 135  
138   - try:
139   - list_courses = paginator.page(page)
140   - except PageNotAnInteger:
141   - list_courses = paginator.page(1)
142   - except EmptyPage:
143   - list_courses = paginator.page(paginator.num_pages)
144   -
145   - context['list_courses'] = list_courses
146   - context['categorys_courses'] = categorys_courses
147   - context['aparece'] = self.aparece
  136 + list_courses = self.get_queryset()
148 137  
  138 + context['categorys_courses'] = course_category(list_courses)
149 139 return context
150 140  
151 141 class CreateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin, generic.edit.CreateView):
... ... @@ -1029,4 +1019,3 @@ class TopicViewSet(viewsets.ModelViewSet):
1029 1019 queryset = Topic.objects.all()
1030 1020 serializer_class = TopicSerializer
1031 1021 permissions_class = (permissions.IsAuthenticatedOrReadOnly)
1032   -
... ...