Commit 5b10ad00f2f67aa12a528b8a644e2a53a05fcc91

Authored by Jailson Dias
1 parent cad76c55

ajustes para o usuário guest #387

core/templates/guest.html
1 1 <!DOCTYPE html>
2 2  
3 3  
4   -{% load i18n custom_filters %}
5   -{% load static i18n %}
6   -{% load pagination %}
  4 +{% load static i18n custom_filters %}
7 5  
8 6 <html>
9 7 <head>
... ... @@ -98,56 +96,33 @@
98 96 {% block content %}
99 97  
100 98 <div class="col-md-12 cards-content">
101   - {% for category in categorys_courses %}
102   - <div class="panel-group">
103   - <div class="panel panel-default">
104   - <div class="panel-heading">
105   - <h4 class="panel-title">
106   - <a class="category-course-link" data-toggle="collapse" href="#{{category.slug}}">{{category.name}}</a>
107   - </h4>
108   -
109   - </div>
110   - <div id="{{category.slug}}" class="panel-collapse collapse">
111   - {% for course in category.course_category.all %}
112   - {%if course.public == True %}
113   - {% include "course/course_card.html" %}
114   - {% endif %}
115   - {% endfor %}
116   - </div>
117   - </div>
  99 + {% for category in categorys_courses %}
  100 + <div class="panel-group course-card-group">
  101 + <div class="panel panel-default">
  102 + <div class="panel-heading">
  103 + <div class="row">
  104 + <div class="col-md-12">
  105 + <h4 class="panel-title">
  106 + <a class="category-course-link" data-toggle="collapse" href="#{{category.slug}}">{{category.name}}</a>
  107 + </h4>
  108 + </div>
118 109 </div>
119   - {% endfor %}
  110 + </div>
  111 + <div id="{{category.slug}}" class="panel-collapse collapse">
  112 + {% for course in category.course_category %}
  113 + {% include "course/course_card.html" %}
  114 + {% endfor %}
  115 + </div>
  116 + </div>
  117 + </div>
  118 + {% endfor %}
120 119 </div>
121   - <div class="col-md-12">
122   - <nav aria-label="Page navigation">
123   - <ul class="pagination">
124   - {% if page_obj.has_previous %}
125   - <li>
126   - <a href="?page={{ page_obj.previous_page_number }}"><span><<</span></a>
127   - </li>
128   - {% endif %}
129   - {% for page_number in paginator.page_range %}
130   - <li{% if page_obj.number == page_number %} class="active"{% endif %}>
131   - <a href="?page={{ page_number }}">{{ page_number }}</a>
132   - </li>
133   - {% endfor %}
134   - {% if page_obj.has_next %}
135   - <li>
136   - <a href="?page={{ page_obj.next_page_number }}"><span>>></span></a>
137   - </li>
138   - {% endif %}
139   - </ul>
140   - </nav>
141   - </div>
142 120 {% endblock %}
143 121 </div>
144 122 </div>
145 123 </div>
146 124 <script src="{% static 'js/main.js' %}"></script>
147 125 <script type="text/javascript" src="{% static 'js/topic_editation_presentation.js' %}"></script>
148   - {% block script_file %}
149   -
150   - {% endblock script_file %}
151 126 </body>
152 127  
153 128 </html>
... ...
core/views.py
... ... @@ -28,6 +28,8 @@ from .decorators import log_decorator, notification_decorator
28 28 from users.models import User
29 29 from courses.models import Course, CourseCategory
30 30  
  31 +from courses.views import course_category
  32 +
31 33 def index(request):
32 34 context = {
33 35 'subscribed_courses': 'testando'
... ... @@ -106,23 +108,22 @@ class GuestView (ListView):
106 108 template_name = 'guest.html'
107 109 context_object_name = 'courses'
108 110 queryset = CourseCategory.objects.all()
109   - paginate_by = 3
110 111  
111 112 def get_context_data (self, **kwargs):
112 113 context = super(GuestView, self).get_context_data(**kwargs)
113 114 context['title'] = _("Guest")
114   - queryset_list = CourseCategory.objects.all()
115   -
116   - paginator = Paginator(queryset_list, 3)
117   - page = self.request.GET.get('page')
118   - try:
119   - queryset_list = paginator.page(page)
120   - except PageNotAnInteger:
121   - queryset_list = paginator.page(1)
122   - except EmptyPage:
123   - queryset_list = paginator.page(paginator.num_pages)
124   -
125   - context['categorys_courses'] = queryset_list
  115 + queryset_list = Course.objects.filter(public=True)
  116 +
  117 + # paginator = Paginator(queryset_list, 3)
  118 + # page = self.request.GET.get('page')
  119 + # try:
  120 + # queryset_list = paginator.page(page)
  121 + # except PageNotAnInteger:
  122 + # queryset_list = paginator.page(1)
  123 + # except EmptyPage:
  124 + # queryset_list = paginator.page(paginator.num_pages)
  125 +
  126 + context['categorys_courses'] = course_category(queryset_list)
126 127 return context
127 128  
128 129  
... ...
courses/templates/course/view.html
1   -{% extends 'course/index.html' %}
  1 +{% extends extend|default:"course/index.html"%}
2 2  
3 3 {% load static i18n permission_tags custom_filters %}
4 4 {% load django_bootstrap_breadcrumbs %}
... ...
courses/templates/subject/index.html
... ... @@ -66,12 +66,6 @@
66 66 <div class="panel-group" id="topics" role="tablist" aria-multiselectable="true">
67 67 {% for topic in topics %}
68 68 {% include "topic/index.html" %}
69   - {# {% professor_subject topic.subject user as topic_professor%}#}
70   - {# {% if topic_professor %}#}
71   - {# {% include "subject/form_view_teacher.html" %}#}
72   - {# {% else %}#}
73   - {# {% include "subject/form_view_student.html" %}#}
74   - {# {% endif %}#}
75 69 {% endfor %}
76 70 </div>
77 71  
... ...
courses/templates/topic/view.html
... ... @@ -15,7 +15,7 @@
15 15 <h4>{% trans 'Material' %}</h4>
16 16 </div>
17 17 {% professor_subject topic.subject user as dropdown_topic %}
18   - {% if dropdown_topic %}
  18 + {% if dropdown_topic %}
19 19 <div class="resource_inline">
20 20  
21 21 {# dropdown de create material #}
... ... @@ -35,13 +35,14 @@
35 35 </ul>
36 36 </div>
37 37  
  38 + {% if user.is_authenticated %}
38 39 {# avaliações do topico #}
39 40 <div class="col-xs-6 col-md-6">
40 41 <div class="resource_inline">
41 42 <h4>{% trans 'Activities' %}</h4>
42 43 </div>
43 44 {% professor_subject topic.subject user as dropdown_topic %}
44   - {% if dropdown_topic %}
  45 + {% if dropdown_topic %}
45 46 <div class="resource_inline">
46 47  
47 48 {# dropdown de avaliações #}
... ... @@ -63,4 +64,5 @@
63 64 {% list_topic_exercise request topic %}
64 65 </ul>
65 66 </div>
  67 + {% endif %}
66 68 </div>
... ...
courses/views.py
... ... @@ -7,7 +7,7 @@ from courses.models import Material
7 7 from datetime import date, datetime
8 8 from django.contrib import messages
9 9 from django.contrib.auth.decorators import login_required
10   -from django.contrib.auth.mixins import LoginRequiredMixin
  10 +from django.contrib.auth.mixins import LoginRequiredMixin,AccessMixin
11 11 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
12 12 from django.core.urlresolvers import reverse_lazy
13 13 from django.db.models import Q
... ... @@ -320,18 +320,24 @@ class DeleteCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.Delet
320 320 return reverse_lazy('course:manage')
321 321  
322 322  
323   -class CourseView(LoginRequiredMixin, LogMixin, NotificationMixin, generic.DetailView):
  323 +class CourseView(AccessMixin, LogMixin, NotificationMixin, generic.DetailView):
324 324 log_component = "courses"
325 325 log_action = "viewed"
326 326 log_resource = "course"
327 327 log_context = {}
328 328  
  329 +
329 330 login_url = reverse_lazy("core:home")
330 331 redirect_field_name = 'next'
331 332 model = Course
332 333 context_object_name = 'course'
333 334 template_name = 'course/view.html'
334 335  
  336 + def dispatch(self, *args, **kwargs):
  337 + course = get_object_or_404(Course, slug = self.kwargs.get('slug'))
  338 + if(not self.request.user.is_authenticated and not course.public):
  339 + return self.handle_no_permission()
  340 + return super(CourseView, self).dispatch(*args, **kwargs)
335 341  
336 342 def get_context_data(self, **kwargs):
337 343 subjects = None
... ... @@ -339,16 +345,17 @@ class CourseView(LoginRequiredMixin, LogMixin, NotificationMixin, generic.Detail
339 345 context = super(CourseView, self).get_context_data(**kwargs)
340 346 course = get_object_or_404(Course, slug = self.kwargs.get('slug'))
341 347  
342   - self.log_context['course_id'] = course.id
343   - self.log_context['course_name'] = course.name
344   - self.log_context['course_slug'] = course.slug
345   - self.log_context['course_category_id'] = course.category.id
346   - self.log_context['course_category_name'] = course.category.name
347   - self.log_context['timestamp_start'] = str(int(time.time()))
  348 + if (self.request.user.is_authenticated):
  349 + self.log_context['course_id'] = course.id
  350 + self.log_context['course_name'] = course.name
  351 + self.log_context['course_slug'] = course.slug
  352 + self.log_context['course_category_id'] = course.category.id
  353 + self.log_context['course_category_name'] = course.category.name
  354 + self.log_context['timestamp_start'] = str(int(time.time()))
348 355  
349   - super(CourseView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  356 + super(CourseView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
350 357  
351   - self.request.session['log_id'] = Log.objects.latest('id').id
  358 + self.request.session['log_id'] = Log.objects.latest('id').id
352 359  
353 360 category_sub = self.kwargs.get('category', None)
354 361  
... ... @@ -356,7 +363,7 @@ class CourseView(LoginRequiredMixin, LogMixin, NotificationMixin, generic.Detail
356 363 subjects = course.subjects.all()
357 364 elif has_role(self.request.user,'professor'):
358 365 subjects = course.subjects.filter(professors__in=[self.request.user])
359   - elif has_role(self.request.user, 'student') or self.request.user is None:
  366 + elif has_role(self.request.user, 'student') or course.public:
360 367 subjects = course.subjects.filter(visible=True)
361 368  
362 369 if not category_sub is None:
... ... @@ -389,6 +396,10 @@ class CourseView(LoginRequiredMixin, LogMixin, NotificationMixin, generic.Detail
389 396 context['courses'] = courses
390 397 context['course'] = course
391 398 context['title'] = course.name
  399 + if (self.request.user.is_authenticated):
  400 + context['extend'] = 'course/index.html'
  401 + else:
  402 + context['extend'] = 'guest.html'
392 403  
393 404 return context
394 405  
... ... @@ -558,7 +569,7 @@ class DeleteCatView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
558 569 messages.success(self.request, _('Category deleted successfully!'))
559 570 return reverse_lazy('course:manage_cat')
560 571  
561   -class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView):
  572 +class SubjectsView(AccessMixin, LogMixin, generic.ListView):
562 573 log_component = "course"
563 574 log_resource = "subject"
564 575 log_action = "viewed"
... ... @@ -573,22 +584,23 @@ class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView):
573 584 def dispatch(self, *args, **kwargs):
574 585 subject = get_object_or_404(Subject, slug = self.kwargs.get('slug'))
575 586  
576   - if(not has_object_permission('view_subject', self.request.user, subject)):
  587 + if(not has_object_permission('view_subject', self.request.user, subject) and not subject.course.public):
577 588 return self.handle_no_permission()
578 589  
579   - self.log_context['subject_id'] = subject.id
580   - self.log_context['subject_name'] = subject.name
581   - self.log_context['subject_slug'] = subject.slug
582   - self.log_context['course_id'] = subject.course.id
583   - self.log_context['course_name'] = subject.course.name
584   - self.log_context['course_slug'] = subject.course.slug
585   - self.log_context['course_category_id'] = subject.course.category.id
586   - self.log_context['course_category_name'] = subject.course.category.name
587   - self.log_context['timestamp_start'] = str(int(time.time()))
  590 + if (self.request.user.is_authenticated):
  591 + self.log_context['subject_id'] = subject.id
  592 + self.log_context['subject_name'] = subject.name
  593 + self.log_context['subject_slug'] = subject.slug
  594 + self.log_context['course_id'] = subject.course.id
  595 + self.log_context['course_name'] = subject.course.name
  596 + self.log_context['course_slug'] = subject.course.slug
  597 + self.log_context['course_category_id'] = subject.course.category.id
  598 + self.log_context['course_category_name'] = subject.course.category.name
  599 + self.log_context['timestamp_start'] = str(int(time.time()))
588 600  
589   - super(SubjectsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  601 + super(SubjectsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
590 602  
591   - self.request.session['log_id'] = Log.objects.latest('id').id
  603 + self.request.session['log_id'] = Log.objects.latest('id').id
592 604  
593 605 return super(SubjectsView, self).dispatch(*args, **kwargs)
594 606  
... ... @@ -610,8 +622,14 @@ class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView):
610 622 context['title'] = subject.name
611 623 if has_role(self.request.user,'professor') or has_role(self.request.user,'system_admin'):
612 624 context['files'] = TopicFile.objects.filter(professor__name = self.request.user.name)
613   - else:
  625 + elif has_role(self.request.user,'student'):
614 626 context['files'] = TopicFile.objects.filter(students__name = self.request.user.name)
  627 +
  628 + if (self.request.user.is_authenticated):
  629 + context['extend'] = 'course/index.html'
  630 + else:
  631 + context['extend'] = 'guest.html'
  632 +
615 633 return context
616 634  
617 635  
... ... @@ -633,7 +651,7 @@ class UploadMaterialView(LoginRequiredMixin, generic.edit.CreateView):
633 651  
634 652 return self.success_url
635 653  
636   -class TopicsView(LoginRequiredMixin, LogMixin, generic.TemplateView):
  654 +class TopicsView(AccessMixin,LogMixin, generic.TemplateView):
637 655 log_component = "course"
638 656 log_resource = "topic"
639 657 log_action = "viewed"
... ... @@ -647,7 +665,7 @@ class TopicsView(LoginRequiredMixin, LogMixin, generic.TemplateView):
647 665 def dispatch(self, *args, **kwargs):
648 666 topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
649 667  
650   - if(not has_object_permission('view_topic', self.request.user, topic)):
  668 + if(not has_object_permission('view_topic', self.request.user, topic) and not topic.subject.course.public):
651 669 return self.handle_no_permission()
652 670  
653 671 return super(TopicsView, self).dispatch(*args, **kwargs)
... ... @@ -660,25 +678,23 @@ class TopicsView(LoginRequiredMixin, LogMixin, generic.TemplateView):
660 678 context = super(TopicsView, self).get_context_data(**kwargs)
661 679 context['topic'] = topic
662 680  
663   - if(not has_object_permission('view_topic', self.request.user, topic)):
664   - return self.handle_no_permission()
665   -
666   - self.log_context['topic_id'] = topic.id
667   - self.log_context['topic_name'] = topic.name
668   - self.log_context['topic_slug'] = topic.slug
669   - self.log_context['subject_id'] = topic.subject.id
670   - self.log_context['subject_name'] = topic.subject.name
671   - self.log_context['subject_slug'] = topic.subject.slug
672   - self.log_context['course_id'] = topic.subject.course.id
673   - self.log_context['course_name'] = topic.subject.course.name
674   - self.log_context['course_slug'] = topic.subject.course.slug
675   - self.log_context['course_category_id'] = topic.subject.course.category.id
676   - self.log_context['course_category_name'] = topic.subject.course.category.name
677   - self.log_context['timestamp_start'] = str(int(time.time()))
678   -
679   - super(TopicsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
680   -
681   - context['topic_log_id'] = Log.objects.latest('id').id
  681 + if (self.request.user.is_authenticated):
  682 + self.log_context['topic_id'] = topic.id
  683 + self.log_context['topic_name'] = topic.name
  684 + self.log_context['topic_slug'] = topic.slug
  685 + self.log_context['subject_id'] = topic.subject.id
  686 + self.log_context['subject_name'] = topic.subject.name
  687 + self.log_context['subject_slug'] = topic.subject.slug
  688 + self.log_context['course_id'] = topic.subject.course.id
  689 + self.log_context['course_name'] = topic.subject.course.name
  690 + self.log_context['course_slug'] = topic.subject.course.slug
  691 + self.log_context['course_category_id'] = topic.subject.course.category.id
  692 + self.log_context['course_category_name'] = topic.subject.course.category.name
  693 + self.log_context['timestamp_start'] = str(int(time.time()))
  694 +
  695 + super(TopicsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  696 +
  697 + context['topic_log_id'] = Log.objects.latest('id').id
682 698  
683 699 return context
684 700  
... ...
links/views.py
... ... @@ -220,38 +220,36 @@ class UpdateLink(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.UpdateView)
220 220 self.success_url = reverse_lazy('course:links:render_link', args = (self.object.slug, ))
221 221 return self.success_url
222 222  
223   -class ViewLink(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.DetailView):
  223 +class ViewLink(LogMixin, generic.DetailView):
224 224 log_component = 'link'
225 225 log_resource = 'link'
226 226 log_action = 'viewed'
227 227 log_context = {}
228   -
229   - allowed_roles = ['professor', 'system_admin','student']
  228 +
230 229 template_name = 'links/view_link.html'
231   - success_url = reverse_lazy('course:links:render_link')
232   - context_object_name = 'link'
233 230  
234 231 def get_context_data(self,**kwargs):
235 232 context = {}
236 233 link = Link.objects.get(slug = self.kwargs.get('slug'))
237 234 context['link'] = link
238 235  
239   - self.log_context['link_id'] = link.id
240   - self.log_context['link_name'] = link.name
241   - self.log_context['topic_id'] = link.topic.id
242   - self.log_context['topic_name'] = link.topic.name
243   - self.log_context['topic_slug'] = link.topic.slug
244   - self.log_context['subject_id'] = link.topic.subject.id
245   - self.log_context['subject_name'] = link.topic.subject.name
246   - self.log_context['subject_slug'] = link.topic.subject.slug
247   - self.log_context['course_id'] = link.topic.subject.course.id
248   - self.log_context['course_name'] = link.topic.subject.course.name
249   - self.log_context['course_slug'] = link.topic.subject.course.slug
250   - self.log_context['course_category_id'] = link.topic.subject.course.category.id
251   - self.log_context['course_category_name'] = link.topic.subject.course.category.name
252   - self.log_context['timestamp_start'] = str(int(time.time()))
253   -
254   - super(ViewLink, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  236 + if (self.request.user.is_authenticated):
  237 + self.log_context['link_id'] = link.id
  238 + self.log_context['link_name'] = link.name
  239 + self.log_context['topic_id'] = link.topic.id
  240 + self.log_context['topic_name'] = link.topic.name
  241 + self.log_context['topic_slug'] = link.topic.slug
  242 + self.log_context['subject_id'] = link.topic.subject.id
  243 + self.log_context['subject_name'] = link.topic.subject.name
  244 + self.log_context['subject_slug'] = link.topic.subject.slug
  245 + self.log_context['course_id'] = link.topic.subject.course.id
  246 + self.log_context['course_name'] = link.topic.subject.course.name
  247 + self.log_context['course_slug'] = link.topic.subject.course.slug
  248 + self.log_context['course_category_id'] = link.topic.subject.course.category.id
  249 + self.log_context['course_category_name'] = link.topic.subject.course.category.name
  250 + self.log_context['timestamp_start'] = str(int(time.time()))
  251 +
  252 + super(ViewLink, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
255 253  
256 254 return context
257 255  
... ...