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 %} - - - - {% endfor %} -
- {{category.name}} -
-
-
-
-
- -{% endblock %} - {% block content %} {% if messages %} {% for message in messages %} @@ -64,7 +23,7 @@ {% endif %}
-
+
@@ -92,10 +51,10 @@
- {% 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