diff --git a/app/templates/home.html b/app/templates/home.html index e15b5f4..6722f96 100644 --- a/app/templates/home.html +++ b/app/templates/home.html @@ -74,8 +74,9 @@
  • {% trans 'Profile' %}
  • {% if user|has_role:'student' or not user.is_staff %}
  • {% trans 'My courses' %}
  • +
  • {% trans 'All Courses' %}
  • {% endif %} -
  • {% trans 'All Courses' %}
  • +
  • {% trans 'Courses' %}
  • {% if user|has_role:'system_admin' %}
  • {% trans 'Manage Users' %}
  • {% endif %} diff --git a/app/templates/home_student.html b/app/templates/home_student.html index 5d22aae..cda57f4 100644 --- a/app/templates/home_student.html +++ b/app/templates/home_student.html @@ -24,7 +24,7 @@ diff --git a/core/templates/base.html b/core/templates/base.html index bbc7185..c8201a4 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -105,8 +105,9 @@
  • {% trans 'Profile' %}
  • {% if user|has_role:'student' or not user.is_staff %}
  • {% trans 'My courses' %}
  • -
  • {% trans 'All Courses' %}
  • +
  • {% trans 'All Courses' %}
  • {% endif %} +
  • {% trans 'Courses' %}
  • {% if user|has_role:'system_admin' %}
  • {% trans 'Manage Users' %}
  • {% endif %} diff --git a/courses/static/js/course.js b/courses/static/js/course.js index 953fd8d..daa8bd1 100644 --- a/courses/static/js/course.js +++ b/courses/static/js/course.js @@ -70,7 +70,7 @@ function delete_course(url, course, message, return_url) { }); }); } -/* +/* * * Function to load create course's form * diff --git a/courses/templates/course/course_card.html b/courses/templates/course/course_card.html index af3fadd..a9288c6 100644 --- a/courses/templates/course/course_card.html +++ b/courses/templates/course/course_card.html @@ -24,6 +24,10 @@ + {% elif user|has_role:'student' %} + {% if not request.user in course.students.all %} + + {% endif %} {% endif %} diff --git a/courses/templates/course/index.html b/courses/templates/course/index.html index f247659..f0c0b78 100644 --- a/courses/templates/course/index.html +++ b/courses/templates/course/index.html @@ -21,8 +21,9 @@
  • {% trans 'Profile' %}
  • {% if user|has_role:'student' or not user.is_staff %}
  • {% trans 'My courses' %}
  • -
  • {% trans 'All Courses' %}
  • +
  • {% trans 'All Courses' %}
  • {% endif %} +
  • {% trans 'Courses' %}
  • {% if user|has_role:'system_admin' %}
  • {% trans 'Manage Users' %}
  • {% endif %} diff --git a/courses/urls.py b/courses/urls.py index cf6b4df..522b0f0 100644 --- a/courses/urls.py +++ b/courses/urls.py @@ -3,6 +3,7 @@ from django.conf.urls import url, include from . import views urlpatterns = [ url(r'^$', views.IndexView.as_view(), name='manage'), + url(r'^all-courses/$', views.AllCoursesView.as_view(), name='all_courses'), url(r'^create/$', views.CreateCourseView.as_view(), name='create'), url(r'^replicate_course/(?P[\w_-]+)/$', views.ReplicateCourseView.as_view(), name='replicate_course'), url(r'^edit/(?P[\w_-]+)/$', views.UpdateCourseView.as_view(), name='update'), diff --git a/courses/views.py b/courses/views.py index 33e6be2..af0974f 100644 --- a/courses/views.py +++ b/courses/views.py @@ -13,7 +13,6 @@ import operator from functools import reduce from rolepermissions.verifications import has_object_permission from django.http import HttpResponseRedirect, JsonResponse - from .forms import CourseForm, UpdateCourseForm, CategoryCourseForm, SubjectForm,TopicForm,ActivityForm from .models import Course, Subject, CourseCategory,Topic, SubjectCategory,Activity, CategorySubject from core.mixins import NotificationMixin @@ -32,7 +31,7 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): queryset = Course.objects.all() template_name = 'course/index.html' context_object_name = 'courses' - paginate_by = 5 + paginate_by = 2 aparece = True @@ -67,7 +66,7 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): elif has_role(self.request.user,'system_admin'): list_courses = queryset.order_by('name') categorys_courses = CourseCategory.objects.all() - else: + 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() @@ -86,6 +85,61 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): context['aparece'] = self.aparece 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() + + 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_, + (Q(category__name=category) for category in query_list)) + ) + return result + + 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') + + 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 + + return context class CreateCourseView(LoginRequiredMixin, HasRoleMixin, NotificationMixin,generic.edit.CreateView): -- libgit2 0.21.2