From 5b10ad00f2f67aa12a528b8a644e2a53a05fcc91 Mon Sep 17 00:00:00 2001 From: Jailson Dias Date: Sat, 10 Dec 2016 17:36:19 -0300 Subject: [PATCH] ajustes para o usuário guest #387 --- core/templates/guest.html | 65 ++++++++++++++++++++--------------------------------------------- core/views.py | 27 ++++++++++++++------------- courses/templates/course/view.html | 2 +- courses/templates/subject/index.html | 6 ------ courses/templates/topic/view.html | 6 ++++-- courses/views.py | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------- links/views.py | 40 +++++++++++++++++++--------------------- 7 files changed, 120 insertions(+), 134 deletions(-) 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 %} -
-
-
-

- {{category.name}} -

- -
-
- {% for course in category.course_category.all %} - {%if course.public == True %} - {% include "course/course_card.html" %} - {% endif %} - {% endfor %} -
-
+ {% for category in categorys_courses %} +
+
+
+
+
- {% endfor %} +
+
+ {% 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 'Material' %}

{% professor_subject topic.subject user as dropdown_topic %} - {% if dropdown_topic %} + {% if dropdown_topic %}
{# dropdown de create material #} @@ -35,13 +35,14 @@
+ {% if user.is_authenticated %} {# avaliações do topico #}

{% 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