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,47 +10,6 @@
10 10
11 {% endblock %} 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 {% block content %} 13 {% block content %}
55 {% if messages %} 14 {% if messages %}
56 {% for message in messages %} 15 {% for message in messages %}
@@ -64,7 +23,7 @@ @@ -64,7 +23,7 @@
64 {% endif %} 23 {% endif %}
65 24
66 <div class="col-md-12 cards-content"> 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 <div class="input-group"> 27 <div class="input-group">
69 <div class="form-group is-empty"> 28 <div class="form-group is-empty">
70 <input type="text" class="form-control" placeholder="Search Courses" name="q"></div> 29 <input type="text" class="form-control" placeholder="Search Courses" name="q"></div>
@@ -92,10 +51,10 @@ @@ -92,10 +51,10 @@
92 </div> 51 </div>
93 </div> 52 </div>
94 <div id="{{category.slug}}" class="panel-collapse collapse"> 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 {% include "course/course_card.html" %} 56 {% include "course/course_card.html" %}
98 - {% endif %} 57 + {# {% endif %}#}
99 {% endfor %} 58 {% endfor %}
100 </div> 59 </div>
101 </div> 60 </div>
courses/views.py
@@ -31,6 +31,33 @@ import time @@ -31,6 +31,33 @@ import time
31 from rest_framework import viewsets, permissions 31 from rest_framework import viewsets, permissions
32 from .serializers import * 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 class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): 61 class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
35 62
36 login_url = reverse_lazy("core:home") 63 login_url = reverse_lazy("core:home")
@@ -38,8 +65,6 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -38,8 +65,6 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
38 queryset = Course.objects.all() 65 queryset = Course.objects.all()
39 template_name = 'course/index.html' 66 template_name = 'course/index.html'
40 context_object_name = 'courses' 67 context_object_name = 'courses'
41 - paginate_by = 10  
42 - aparece = True  
43 68
44 69
45 def get_queryset(self): 70 def get_queryset(self):
@@ -48,14 +73,12 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -48,14 +73,12 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
48 course_search = self.request.GET.get('q', None) 73 course_search = self.request.GET.get('q', None)
49 category_search = self.request.GET.get('category', None) 74 category_search = self.request.GET.get('category', None)
50 if course_search: 75 if course_search:
51 - self.aparece = False  
52 query_list = course_search.split() 76 query_list = course_search.split()
53 result = result.filter( 77 result = result.filter(
54 reduce(operator.and_, 78 reduce(operator.and_,
55 (Q(name__icontains=q) for q in query_list)) 79 (Q(name__icontains=q) for q in query_list))
56 ) 80 )
57 if category_search: 81 if category_search:
58 - self.aparece = False  
59 query_list = category_search.split() 82 query_list = category_search.split()
60 result = result.filter( 83 result = result.filter(
61 reduce(operator.and_, 84 reduce(operator.and_,
@@ -66,58 +89,40 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -66,58 +89,40 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
66 def get_context_data(self, **kwargs): 89 def get_context_data(self, **kwargs):
67 context = super(IndexView, self).get_context_data(**kwargs) 90 context = super(IndexView, self).get_context_data(**kwargs)
68 list_courses = None 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 elif has_role(self.request.user, 'student'): 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 return context 102 return context
95 103
96 class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView): 104 class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView):
97 105
98 login_url = reverse_lazy("core:home") 106 login_url = reverse_lazy("core:home")
99 redirect_field_name = 'next' 107 redirect_field_name = 'next'
100 - queryset = Course.objects.all()  
101 template_name = 'course/index.html' 108 template_name = 'course/index.html'
102 context_object_name = 'courses' 109 context_object_name = 'courses'
103 - paginate_by = 5  
104 - aparece = True  
105 110
106 111
107 def get_queryset(self): 112 def get_queryset(self):
108 - result = super(AllCoursesView, self).get_queryset() 113 + result = Course.objects.all()
109 114
110 course_search = self.request.GET.get('q', None) 115 course_search = self.request.GET.get('q', None)
111 category_search = self.request.GET.get('category', None) 116 category_search = self.request.GET.get('category', None)
112 if course_search: 117 if course_search:
113 - self.aparece = False 118 + # self.aparece = False
114 query_list = course_search.split() 119 query_list = course_search.split()
115 result = result.filter( 120 result = result.filter(
116 reduce(operator.and_, 121 reduce(operator.and_,
117 (Q(name__icontains=q) for q in query_list)) 122 (Q(name__icontains=q) for q in query_list))
118 ) 123 )
119 if category_search: 124 if category_search:
120 - self.aparece = False 125 + # self.aparece = False
121 query_list = category_search.split() 126 query_list = category_search.split()
122 result = result.filter( 127 result = result.filter(
123 reduce(operator.and_, 128 reduce(operator.and_,
@@ -127,25 +132,10 @@ class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -127,25 +132,10 @@ class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView):
127 132
128 def get_context_data(self, **kwargs): 133 def get_context_data(self, **kwargs):
129 context = super(AllCoursesView, self).get_context_data(**kwargs) 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 return context 139 return context
150 140
151 class CreateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin, generic.edit.CreateView): 141 class CreateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin, generic.edit.CreateView):
@@ -1029,4 +1019,3 @@ class TopicViewSet(viewsets.ModelViewSet): @@ -1029,4 +1019,3 @@ class TopicViewSet(viewsets.ModelViewSet):
1029 queryset = Topic.objects.all() 1019 queryset = Topic.objects.all()
1030 serializer_class = TopicSerializer 1020 serializer_class = TopicSerializer
1031 permissions_class = (permissions.IsAuthenticatedOrReadOnly) 1021 permissions_class = (permissions.IsAuthenticatedOrReadOnly)
1032 -