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