diff --git a/core/templates/guest.html b/core/templates/guest.html
index d76d4f6..cd3e203 100644
--- a/core/templates/guest.html
+++ b/core/templates/guest.html
@@ -1,9 +1,7 @@
-{% load i18n custom_filters %}
-{% load static i18n %}
-{% load pagination %}
+{% load static i18n custom_filters %}
@@ -98,56 +96,33 @@
{% block content %}
- {% for category in categorys_courses %}
-
-
-
-
- {% for course in category.course_category.all %}
- {%if course.public == True %}
- {% include "course/course_card.html" %}
- {% endif %}
- {% endfor %}
-
-
+ {% for category in categorys_courses %}
+
+
+
+
+ {% for course in category.course_category %}
+ {% include "course/course_card.html" %}
+ {% endfor %}
+
+
+
+ {% endfor %}
-
-
-
{% endblock %}
- {% block script_file %}
-
- {% endblock script_file %}
diff --git a/core/views.py b/core/views.py
index da247ca..3271b29 100644
--- a/core/views.py
+++ b/core/views.py
@@ -28,6 +28,8 @@ from .decorators import log_decorator, notification_decorator
from users.models import User
from courses.models import Course, CourseCategory
+from courses.views import course_category
+
def index(request):
context = {
'subscribed_courses': 'testando'
@@ -106,23 +108,22 @@ class GuestView (ListView):
template_name = 'guest.html'
context_object_name = 'courses'
queryset = CourseCategory.objects.all()
- paginate_by = 3
def get_context_data (self, **kwargs):
context = super(GuestView, self).get_context_data(**kwargs)
context['title'] = _("Guest")
- queryset_list = CourseCategory.objects.all()
-
- paginator = Paginator(queryset_list, 3)
- page = self.request.GET.get('page')
- try:
- queryset_list = paginator.page(page)
- except PageNotAnInteger:
- queryset_list = paginator.page(1)
- except EmptyPage:
- queryset_list = paginator.page(paginator.num_pages)
-
- context['categorys_courses'] = queryset_list
+ queryset_list = Course.objects.filter(public=True)
+
+ # paginator = Paginator(queryset_list, 3)
+ # page = self.request.GET.get('page')
+ # try:
+ # queryset_list = paginator.page(page)
+ # except PageNotAnInteger:
+ # queryset_list = paginator.page(1)
+ # except EmptyPage:
+ # queryset_list = paginator.page(paginator.num_pages)
+
+ context['categorys_courses'] = course_category(queryset_list)
return context
diff --git a/courses/templates/course/view.html b/courses/templates/course/view.html
index 829cf9c..cee97a0 100644
--- a/courses/templates/course/view.html
+++ b/courses/templates/course/view.html
@@ -1,4 +1,4 @@
-{% extends 'course/index.html' %}
+{% extends extend|default:"course/index.html"%}
{% load static i18n permission_tags custom_filters %}
{% load django_bootstrap_breadcrumbs %}
diff --git a/courses/templates/subject/index.html b/courses/templates/subject/index.html
index e19176c..328418f 100644
--- a/courses/templates/subject/index.html
+++ b/courses/templates/subject/index.html
@@ -66,12 +66,6 @@
{% for topic in topics %}
{% include "topic/index.html" %}
- {# {% professor_subject topic.subject user as topic_professor%}#}
- {# {% if topic_professor %}#}
- {# {% include "subject/form_view_teacher.html" %}#}
- {# {% else %}#}
- {# {% include "subject/form_view_student.html" %}#}
- {# {% endif %}#}
{% endfor %}
diff --git a/courses/templates/topic/view.html b/courses/templates/topic/view.html
index 8208e8b..21e258b 100644
--- a/courses/templates/topic/view.html
+++ b/courses/templates/topic/view.html
@@ -15,7 +15,7 @@
{% trans 'Activities' %}
{% professor_subject topic.subject user as dropdown_topic %}
- {% if dropdown_topic %}
+ {% if dropdown_topic %}
{# dropdown de avaliações #}
@@ -63,4 +64,5 @@
{% list_topic_exercise request topic %}
+ {% endif %}
diff --git a/courses/views.py b/courses/views.py
index ad63441..ef35c6e 100644
--- a/courses/views.py
+++ b/courses/views.py
@@ -7,7 +7,7 @@ from courses.models import Material
from datetime import date, datetime
from django.contrib import messages
from django.contrib.auth.decorators import login_required
-from django.contrib.auth.mixins import LoginRequiredMixin
+from django.contrib.auth.mixins import LoginRequiredMixin,AccessMixin
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.core.urlresolvers import reverse_lazy
from django.db.models import Q
@@ -320,18 +320,24 @@ class DeleteCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.Delet
return reverse_lazy('course:manage')
-class CourseView(LoginRequiredMixin, LogMixin, NotificationMixin, generic.DetailView):
+class CourseView(AccessMixin, LogMixin, NotificationMixin, generic.DetailView):
log_component = "courses"
log_action = "viewed"
log_resource = "course"
log_context = {}
+
login_url = reverse_lazy("core:home")
redirect_field_name = 'next'
model = Course
context_object_name = 'course'
template_name = 'course/view.html'
+ def dispatch(self, *args, **kwargs):
+ course = get_object_or_404(Course, slug = self.kwargs.get('slug'))
+ if(not self.request.user.is_authenticated and not course.public):
+ return self.handle_no_permission()
+ return super(CourseView, self).dispatch(*args, **kwargs)
def get_context_data(self, **kwargs):
subjects = None
@@ -339,16 +345,17 @@ class CourseView(LoginRequiredMixin, LogMixin, NotificationMixin, generic.Detail
context = super(CourseView, self).get_context_data(**kwargs)
course = get_object_or_404(Course, slug = self.kwargs.get('slug'))
- self.log_context['course_id'] = course.id
- self.log_context['course_name'] = course.name
- self.log_context['course_slug'] = course.slug
- self.log_context['course_category_id'] = course.category.id
- self.log_context['course_category_name'] = course.category.name
- self.log_context['timestamp_start'] = str(int(time.time()))
+ if (self.request.user.is_authenticated):
+ self.log_context['course_id'] = course.id
+ self.log_context['course_name'] = course.name
+ self.log_context['course_slug'] = course.slug
+ self.log_context['course_category_id'] = course.category.id
+ self.log_context['course_category_name'] = course.category.name
+ self.log_context['timestamp_start'] = str(int(time.time()))
- super(CourseView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
+ super(CourseView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
- self.request.session['log_id'] = Log.objects.latest('id').id
+ self.request.session['log_id'] = Log.objects.latest('id').id
category_sub = self.kwargs.get('category', None)
@@ -356,7 +363,7 @@ class CourseView(LoginRequiredMixin, LogMixin, NotificationMixin, generic.Detail
subjects = course.subjects.all()
elif has_role(self.request.user,'professor'):
subjects = course.subjects.filter(professors__in=[self.request.user])
- elif has_role(self.request.user, 'student') or self.request.user is None:
+ elif has_role(self.request.user, 'student') or course.public:
subjects = course.subjects.filter(visible=True)
if not category_sub is None:
@@ -389,6 +396,10 @@ class CourseView(LoginRequiredMixin, LogMixin, NotificationMixin, generic.Detail
context['courses'] = courses
context['course'] = course
context['title'] = course.name
+ if (self.request.user.is_authenticated):
+ context['extend'] = 'course/index.html'
+ else:
+ context['extend'] = 'guest.html'
return context
@@ -558,7 +569,7 @@ class DeleteCatView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
messages.success(self.request, _('Category deleted successfully!'))
return reverse_lazy('course:manage_cat')
-class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView):
+class SubjectsView(AccessMixin, LogMixin, generic.ListView):
log_component = "course"
log_resource = "subject"
log_action = "viewed"
@@ -573,22 +584,23 @@ class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView):
def dispatch(self, *args, **kwargs):
subject = get_object_or_404(Subject, slug = self.kwargs.get('slug'))
- if(not has_object_permission('view_subject', self.request.user, subject)):
+ if(not has_object_permission('view_subject', self.request.user, subject) and not subject.course.public):
return self.handle_no_permission()
- self.log_context['subject_id'] = subject.id
- self.log_context['subject_name'] = subject.name
- self.log_context['subject_slug'] = subject.slug
- self.log_context['course_id'] = subject.course.id
- self.log_context['course_name'] = subject.course.name
- self.log_context['course_slug'] = subject.course.slug
- self.log_context['course_category_id'] = subject.course.category.id
- self.log_context['course_category_name'] = subject.course.category.name
- self.log_context['timestamp_start'] = str(int(time.time()))
+ if (self.request.user.is_authenticated):
+ self.log_context['subject_id'] = subject.id
+ self.log_context['subject_name'] = subject.name
+ self.log_context['subject_slug'] = subject.slug
+ self.log_context['course_id'] = subject.course.id
+ self.log_context['course_name'] = subject.course.name
+ self.log_context['course_slug'] = subject.course.slug
+ self.log_context['course_category_id'] = subject.course.category.id
+ self.log_context['course_category_name'] = subject.course.category.name
+ self.log_context['timestamp_start'] = str(int(time.time()))
- super(SubjectsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
+ super(SubjectsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
- self.request.session['log_id'] = Log.objects.latest('id').id
+ self.request.session['log_id'] = Log.objects.latest('id').id
return super(SubjectsView, self).dispatch(*args, **kwargs)
@@ -610,8 +622,14 @@ class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView):
context['title'] = subject.name
if has_role(self.request.user,'professor') or has_role(self.request.user,'system_admin'):
context['files'] = TopicFile.objects.filter(professor__name = self.request.user.name)
- else:
+ elif has_role(self.request.user,'student'):
context['files'] = TopicFile.objects.filter(students__name = self.request.user.name)
+
+ if (self.request.user.is_authenticated):
+ context['extend'] = 'course/index.html'
+ else:
+ context['extend'] = 'guest.html'
+
return context
@@ -633,7 +651,7 @@ class UploadMaterialView(LoginRequiredMixin, generic.edit.CreateView):
return self.success_url
-class TopicsView(LoginRequiredMixin, LogMixin, generic.TemplateView):
+class TopicsView(AccessMixin,LogMixin, generic.TemplateView):
log_component = "course"
log_resource = "topic"
log_action = "viewed"
@@ -647,7 +665,7 @@ class TopicsView(LoginRequiredMixin, LogMixin, generic.TemplateView):
def dispatch(self, *args, **kwargs):
topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
- if(not has_object_permission('view_topic', self.request.user, topic)):
+ if(not has_object_permission('view_topic', self.request.user, topic) and not topic.subject.course.public):
return self.handle_no_permission()
return super(TopicsView, self).dispatch(*args, **kwargs)
@@ -660,25 +678,23 @@ class TopicsView(LoginRequiredMixin, LogMixin, generic.TemplateView):
context = super(TopicsView, self).get_context_data(**kwargs)
context['topic'] = topic
- if(not has_object_permission('view_topic', self.request.user, topic)):
- return self.handle_no_permission()
-
- self.log_context['topic_id'] = topic.id
- self.log_context['topic_name'] = topic.name
- self.log_context['topic_slug'] = topic.slug
- self.log_context['subject_id'] = topic.subject.id
- self.log_context['subject_name'] = topic.subject.name
- self.log_context['subject_slug'] = topic.subject.slug
- self.log_context['course_id'] = topic.subject.course.id
- self.log_context['course_name'] = topic.subject.course.name
- self.log_context['course_slug'] = topic.subject.course.slug
- self.log_context['course_category_id'] = topic.subject.course.category.id
- self.log_context['course_category_name'] = topic.subject.course.category.name
- self.log_context['timestamp_start'] = str(int(time.time()))
-
- super(TopicsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
-
- context['topic_log_id'] = Log.objects.latest('id').id
+ if (self.request.user.is_authenticated):
+ self.log_context['topic_id'] = topic.id
+ self.log_context['topic_name'] = topic.name
+ self.log_context['topic_slug'] = topic.slug
+ self.log_context['subject_id'] = topic.subject.id
+ self.log_context['subject_name'] = topic.subject.name
+ self.log_context['subject_slug'] = topic.subject.slug
+ self.log_context['course_id'] = topic.subject.course.id
+ self.log_context['course_name'] = topic.subject.course.name
+ self.log_context['course_slug'] = topic.subject.course.slug
+ self.log_context['course_category_id'] = topic.subject.course.category.id
+ self.log_context['course_category_name'] = topic.subject.course.category.name
+ self.log_context['timestamp_start'] = str(int(time.time()))
+
+ super(TopicsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
+
+ context['topic_log_id'] = Log.objects.latest('id').id
return context
diff --git a/links/views.py b/links/views.py
index 245442e..2daa199 100644
--- a/links/views.py
+++ b/links/views.py
@@ -220,38 +220,36 @@ class UpdateLink(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.UpdateView)
self.success_url = reverse_lazy('course:links:render_link', args = (self.object.slug, ))
return self.success_url
-class ViewLink(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.DetailView):
+class ViewLink(LogMixin, generic.DetailView):
log_component = 'link'
log_resource = 'link'
log_action = 'viewed'
log_context = {}
-
- allowed_roles = ['professor', 'system_admin','student']
+
template_name = 'links/view_link.html'
- success_url = reverse_lazy('course:links:render_link')
- context_object_name = 'link'
def get_context_data(self,**kwargs):
context = {}
link = Link.objects.get(slug = self.kwargs.get('slug'))
context['link'] = link
- self.log_context['link_id'] = link.id
- self.log_context['link_name'] = link.name
- self.log_context['topic_id'] = link.topic.id
- self.log_context['topic_name'] = link.topic.name
- self.log_context['topic_slug'] = link.topic.slug
- self.log_context['subject_id'] = link.topic.subject.id
- self.log_context['subject_name'] = link.topic.subject.name
- self.log_context['subject_slug'] = link.topic.subject.slug
- self.log_context['course_id'] = link.topic.subject.course.id
- self.log_context['course_name'] = link.topic.subject.course.name
- self.log_context['course_slug'] = link.topic.subject.course.slug
- self.log_context['course_category_id'] = link.topic.subject.course.category.id
- self.log_context['course_category_name'] = link.topic.subject.course.category.name
- self.log_context['timestamp_start'] = str(int(time.time()))
-
- super(ViewLink, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
+ if (self.request.user.is_authenticated):
+ self.log_context['link_id'] = link.id
+ self.log_context['link_name'] = link.name
+ self.log_context['topic_id'] = link.topic.id
+ self.log_context['topic_name'] = link.topic.name
+ self.log_context['topic_slug'] = link.topic.slug
+ self.log_context['subject_id'] = link.topic.subject.id
+ self.log_context['subject_name'] = link.topic.subject.name
+ self.log_context['subject_slug'] = link.topic.subject.slug
+ self.log_context['course_id'] = link.topic.subject.course.id
+ self.log_context['course_name'] = link.topic.subject.course.name
+ self.log_context['course_slug'] = link.topic.subject.course.slug
+ self.log_context['course_category_id'] = link.topic.subject.course.category.id
+ self.log_context['course_category_name'] = link.topic.subject.course.category.name
+ self.log_context['timestamp_start'] = str(int(time.time()))
+
+ super(ViewLink, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
return context
--
libgit2 0.21.2