diff --git a/courses/templates/course/index.html b/courses/templates/course/index.html
index 37ceb98..2b25c05 100644
--- a/courses/templates/course/index.html
+++ b/courses/templates/course/index.html
@@ -10,47 +10,6 @@
{% endblock %}
-{% block sidebar %}
-{{block.super}}
- {% if user|has_role:'professor' or user|has_role:'system_admin' %}
-
-
-
{% trans 'Category' %}
-
-
-
- {% endif %}
-
-
-
-
-
-
- {% for category in categorys_courses %}
-
-
- {{category.name}}
- |
-
- {% endfor %}
-
-
-
-
-
-
-{% endblock %}
-
{% block content %}
{% if messages %}
{% for message in messages %}
@@ -64,7 +23,7 @@
{% endif %}
- {% for course in category.course_category.all %}
- {% if user in course.students.all or user in course.professors.all or user|has_role:'system_admin' %}
+ {% for course in category.course_category %}
+ {# {% if user in course.students.all or user in course.professors.all or user|has_role:'system_admin' %}#}
{% include "course/course_card.html" %}
- {% endif %}
+ {# {% endif %}#}
{% endfor %}
diff --git a/courses/views.py b/courses/views.py
index a91ce98..32b2be6 100644
--- a/courses/views.py
+++ b/courses/views.py
@@ -31,6 +31,33 @@ import time
from rest_framework import viewsets, permissions
from .serializers import *
+class Category:
+ name = None
+ slug = None
+ course_category = []
+
+def course_category(list_courses):
+
+ list_courses = list_courses.distinct().order_by('category','name')
+ categorys_courses = []
+ cat_slug = None
+ cat = None
+ for course in list_courses:
+ if (course.category.slug != cat_slug):
+ if (cat != None):
+ categorys_courses.append(cat)
+ cat_slug = course.category.slug
+ cat = Category()
+ cat.name = course.category.name
+ cat.slug = cat_slug
+ cat.course_category = []
+ cat.course_category.append(course)
+
+ if (cat):
+ categorys_courses.append(cat)
+
+ return categorys_courses
+
class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
login_url = reverse_lazy("core:home")
@@ -38,8 +65,6 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
queryset = Course.objects.all()
template_name = 'course/index.html'
context_object_name = 'courses'
- paginate_by = 10
- aparece = True
def get_queryset(self):
@@ -48,14 +73,12 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
course_search = self.request.GET.get('q', None)
category_search = self.request.GET.get('category', None)
if course_search:
- self.aparece = False
query_list = course_search.split()
result = result.filter(
reduce(operator.and_,
(Q(name__icontains=q) for q in query_list))
)
if category_search:
- self.aparece = False
query_list = category_search.split()
result = result.filter(
reduce(operator.and_,
@@ -66,58 +89,40 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
list_courses = None
- categorys_courses = None
- if has_role(self.request.user,'professor'):
- list_courses = Course.objects.filter(Q(professors = True)|Q(professors__name = self.request.user.name)).order_by('name')
- categorys_courses = CourseCategory.objects.filter(course_category__professors__name = self.request.user.name).distinct()
- elif has_role(self.request.user,'system_admin'):
- list_courses = queryset.order_by('name')
- categorys_courses = CourseCategory.objects.all()
+ if has_role(self.request.user,'system_admin'):
+ list_courses = self.get_queryset().order_by('name')
+ # categorys_courses = CourseCategory.objects.all()
+ elif has_role(self.request.user,'professor'):
+ list_courses = self.get_queryset().filter(professors__in = [self.request.user])
+ # categorys_courses = CourseCategory.objects.filter(course_category__professors__name = self.request.user.name).distinct()
elif has_role(self.request.user, 'student'):
- list_courses = Course.objects.filter(Q(students = True)|Q(students__name = self.request.user.name)).order_by('name')
- categorys_courses = CourseCategory.objects.filter(course_category__students__name = self.request.user.name).distinct()
-
- paginator = Paginator(list_courses, self.paginate_by)
- page = self.request.GET.get('page')
-
- try:
- list_courses = paginator.page(page)
- except PageNotAnInteger:
- list_courses = paginator.page(1)
- except EmptyPage:
- list_courses = paginator.page(paginator.num_pages)
-
- context['list_courses'] = list_courses
- context['categorys_courses'] = categorys_courses
- context['aparece'] = self.aparece
+ list_courses = self.get_queryset().filter(students__in = [self.request.user])
+ context['categorys_courses'] = course_category(list_courses)
return context
class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView):
login_url = reverse_lazy("core:home")
redirect_field_name = 'next'
- queryset = Course.objects.all()
template_name = 'course/index.html'
context_object_name = 'courses'
- paginate_by = 5
- aparece = True
def get_queryset(self):
- result = super(AllCoursesView, self).get_queryset()
+ result = Course.objects.all()
course_search = self.request.GET.get('q', None)
category_search = self.request.GET.get('category', None)
if course_search:
- self.aparece = False
+ # self.aparece = False
query_list = course_search.split()
result = result.filter(
reduce(operator.and_,
(Q(name__icontains=q) for q in query_list))
)
if category_search:
- self.aparece = False
+ # self.aparece = False
query_list = category_search.split()
result = result.filter(
reduce(operator.and_,
@@ -127,25 +132,10 @@ class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView):
def get_context_data(self, **kwargs):
context = super(AllCoursesView, self).get_context_data(**kwargs)
- list_courses = None
- categorys_courses = None
- list_courses = Course.objects.all().order_by('name')
- #categorys_courses = CourseCategory.objects.all().distinct().order_by('name')
- categorys_courses = CourseCategory.objects.all()
- paginator = Paginator(list_courses, self.paginate_by)
- page = self.request.GET.get('page')
- try:
- list_courses = paginator.page(page)
- except PageNotAnInteger:
- list_courses = paginator.page(1)
- except EmptyPage:
- list_courses = paginator.page(paginator.num_pages)
-
- context['list_courses'] = list_courses
- context['categorys_courses'] = categorys_courses
- context['aparece'] = self.aparece
+ list_courses = self.get_queryset()
+ context['categorys_courses'] = course_category(list_courses)
return context
class CreateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin, generic.edit.CreateView):
@@ -1029,4 +1019,3 @@ class TopicViewSet(viewsets.ModelViewSet):
queryset = Topic.objects.all()
serializer_class = TopicSerializer
permissions_class = (permissions.IsAuthenticatedOrReadOnly)
-
--
libgit2 0.21.2