Commit bd5e6b03e40e17f39f4d90a6ee9164159914fdd5

Authored by fbormann
2 parents 0e57770f 59db94e7

Merge branch 'dev' of https://github.com/amadeusproject/amadeuslms into dev

amadeus/uploads/sistemas-de-informacao/algoritmo/topico-1/Riachuelo_Outubro.pdf 0 → 100644
No preview for this file type
app/templates/home.html
@@ -80,8 +80,9 @@ @@ -80,8 +80,9 @@
80 <li><a href="{% url 'users:profile' %}">{% trans 'Profile' %}</a></li> 80 <li><a href="{% url 'users:profile' %}">{% trans 'Profile' %}</a></li>
81 {% if user|has_role:'student' or not user.is_staff %} 81 {% if user|has_role:'student' or not user.is_staff %}
82 <li><a href="{% url 'course:manage' %}">{% trans 'My courses' %}</a></li> 82 <li><a href="{% url 'course:manage' %}">{% trans 'My courses' %}</a></li>
  83 + <li><a href="{% url 'course:all_courses' %}">{% trans 'All Courses' %}</a></li>
83 {% endif %} 84 {% endif %}
84 - <li><a href="{% url 'core:guest' %}">{% trans 'All Courses' %}</a></li> 85 + <li><a href="{% url 'core:guest' %}">{% trans 'Courses' %}</a></li>
85 {% if user|has_role:'system_admin' %} 86 {% if user|has_role:'system_admin' %}
86 <li> <a href="{% url 'users:manage' %}">{% trans 'Manage Users' %}</a></li> 87 <li> <a href="{% url 'users:manage' %}">{% trans 'Manage Users' %}</a></li>
87 <li> <a href="{% url 'app:settings' %}">{% trans 'Settings' %}</a></li> 88 <li> <a href="{% url 'app:settings' %}">{% trans 'Settings' %}</a></li>
app/templates/home_student.html
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
24 <ul class="nav nav-pills nav-stacked"> 24 <ul class="nav nav-pills nav-stacked">
25 <li><a href="{% url 'users:profile' %}">{% trans 'Profile' %}</a></li> 25 <li><a href="{% url 'users:profile' %}">{% trans 'Profile' %}</a></li>
26 <li><a href="{% url 'course:manage' %}">{% trans 'My Courses' %}</a></li> 26 <li><a href="{% url 'course:manage' %}">{% trans 'My Courses' %}</a></li>
27 - <li><a href="{% url 'core:guest' %}">{% trans 'All Courses' %}</a></li> 27 + <li><a href="{% url 'course:all_courses' %}">{% trans 'All Courses' %}</a></li>
28 <li><a href="javascript:void(0)">{% trans 'Google accounts' %}</a></li> 28 <li><a href="javascript:void(0)">{% trans 'Google accounts' %}</a></li>
29 </ul> 29 </ul>
30 </div> 30 </div>
core/templates/base.html
@@ -111,8 +111,9 @@ @@ -111,8 +111,9 @@
111 <li><a href="{% url 'users:profile' %}">{% trans 'Profile' %}</a></li> 111 <li><a href="{% url 'users:profile' %}">{% trans 'Profile' %}</a></li>
112 {% if user|has_role:'student' or not user.is_staff %} 112 {% if user|has_role:'student' or not user.is_staff %}
113 <li><a href="{% url 'course:manage' %}">{% trans 'My courses' %}</a></li> 113 <li><a href="{% url 'course:manage' %}">{% trans 'My courses' %}</a></li>
114 - <li><a href="{% url 'core:guest' %}">{% trans 'All Courses' %}</a></li> 114 + <li><a href="{% url 'core:all_courses' %}">{% trans 'All Courses' %}</a></li>
115 {% endif %} 115 {% endif %}
  116 + <li><a href="{% url 'core:guest' %}">{% trans 'Courses' %}</a></li>
116 {% if user|has_role:'system_admin' %} 117 {% if user|has_role:'system_admin' %}
117 <li> <a href="{% url 'users:manage' %}">{% trans 'Manage Users' %}</a></li> 118 <li> <a href="{% url 'users:manage' %}">{% trans 'Manage Users' %}</a></li>
118 {% endif %} 119 {% endif %}
courses/static/js/course.js
@@ -70,7 +70,7 @@ function delete_course(url, course, message, return_url) { @@ -70,7 +70,7 @@ function delete_course(url, course, message, return_url) {
70 }); 70 });
71 }); 71 });
72 } 72 }
73 -/* 73 +/*
74 * 74 *
75 * Function to load create course's form 75 * Function to load create course's form
76 * 76 *
courses/templates/course/course_card.html
@@ -24,6 +24,10 @@ @@ -24,6 +24,10 @@
24 </ul> 24 </ul>
25 </div> 25 </div>
26 </div> 26 </div>
  27 + {% elif user|has_role:'student' %}
  28 + {% if not request.user in course.students.all %}
  29 + <a onclick="subscribe($(this), '{% url 'course:subscribe' course.slug %}', {{ course.id}}, '{% trans 'Are you sure you want to subscribe to this course?' %}')"><button class="btn btn-sm btn-primary btn-raised pull-right">{% trans 'Subscribe' %}</button></a>
  30 + {% endif %}
27 {% endif %} 31 {% endif %}
28 </div> 32 </div>
29 </div> 33 </div>
courses/templates/course/index.html
@@ -21,8 +21,9 @@ @@ -21,8 +21,9 @@
21 <li><a href="{% url 'users:profile' %}">{% trans 'Profile' %}</a></li> 21 <li><a href="{% url 'users:profile' %}">{% trans 'Profile' %}</a></li>
22 {% if user|has_role:'student' or not user.is_staff %} 22 {% if user|has_role:'student' or not user.is_staff %}
23 <li><a href="{% url 'course:manage' %}">{% trans 'My courses' %}</a></li> 23 <li><a href="{% url 'course:manage' %}">{% trans 'My courses' %}</a></li>
24 - <li><a href="{% url 'core:guest' %}">{% trans 'All Courses' %}</a></li> 24 + <li><a href="{% url 'course:all_courses' %}">{% trans 'All Courses' %}</a></li>
25 {% endif %} 25 {% endif %}
  26 + <li><a href="{% url 'core:guest' %}">{% trans 'Courses' %}</a></li>
26 {% if user|has_role:'system_admin' %} 27 {% if user|has_role:'system_admin' %}
27 <li> <a href="{% url 'users:manage' %}">{% trans 'Manage Users' %}</a></li> 28 <li> <a href="{% url 'users:manage' %}">{% trans 'Manage Users' %}</a></li>
28 {% endif %} 29 {% endif %}
@@ -43,18 +44,41 @@ @@ -43,18 +44,41 @@
43 </div> 44 </div>
44 45
45 {% if user|has_role:'professor' or user|has_role:'system_admin' %} 46 {% if user|has_role:'professor' or user|has_role:'system_admin' %}
46 - <div class="panel panel-primary">  
47 - <div class="panel-heading">  
48 - <h3 class="panel-title">{% trans 'Category' %}</h3> 47 + <div class="panel panel-primary">
  48 + <div class="panel-heading">
  49 + <h3 class="panel-title">{% trans 'Category' %}</h3>
  50 + </div>
  51 + <div class="panel-body">
  52 + <ul class="nav nav-pills nav-stacked">
  53 + <li><a href="{% url 'course:create_cat' %}">{% trans 'Create Category' %}</a></li>
  54 + <li><a href="{% url 'course:manage_cat' %}">{% trans 'List Category' %}</a></li>
  55 + </ul>
  56 + </div>
49 </div> 57 </div>
50 - <div class="panel-body">  
51 - <ul class="nav nav-pills nav-stacked">  
52 - <li><a href="{% url 'course:create_cat' %}">{% trans 'Create Category' %}</a></li>  
53 - <li><a href="{% url 'course:manage_cat' %}">{% trans 'List Category' %}</a></li>  
54 - </ul> 58 + {% endif %}
  59 + <div class="panel-group" id="accordion">
  60 + <div class="panel panel-primary">
  61 + <div class="panel-heading">
  62 + <h4 class="panel-title">
  63 + <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
  64 + </span>{% trans 'Categorys' %}</a>
  65 + </h4>
  66 + </div>
  67 + <div id="collapseOne" class="panel-collapse collapse in">
  68 + <div class="panel-body">
  69 + <table class="table">
  70 + {% for category in categorys_courses %}
  71 + <tr>
  72 + <td>
  73 + <a href="?category={{category.name}}">{{category.name}}</a>
  74 + </td>
  75 + </tr>
  76 + {% endfor %}
  77 + </table>
  78 + </div>
  79 + </div>
  80 + </div>
55 </div> 81 </div>
56 - </div>  
57 - {% endif %}  
58 82
59 {% endblock %} 83 {% endblock %}
60 84
@@ -84,7 +108,6 @@ @@ -84,7 +108,6 @@
84 </form> 108 </form>
85 </div> 109 </div>
86 110
87 -  
88 </fieldset> 111 </fieldset>
89 <div class="col-md-12 cards-content"> 112 <div class="col-md-12 cards-content">
90 {% if courses|length > 0 %} 113 {% if courses|length > 0 %}
courses/templates/subject/form_view_student.html
@@ -32,14 +32,32 @@ @@ -32,14 +32,32 @@
32 </p> 32 </p>
33 33
34 </div> 34 </div>
  35 + <div class="row">
  36 + <div class="col-xs-6 col-md-6">
  37 + <div class="resource_inline">
  38 + <h4>{% trans 'Material' %}</h4>
  39 + </div>
  40 + <ul>
  41 + {% list_topic_file request topic %}
  42 + {% list_topic_link request topic%}
  43 + </ul>
  44 + </div>
  45 + <div class="col-xs-4 col-md-4">
  46 + <div class="resource_inline">
  47 + <h4>{% trans 'Activities' %}</h4>
  48 + </div>
  49 + <ul>
  50 + {% list_topic_poll request topic %}
  51 + {% list_topic_foruns request topic %}
  52 + </ul>
  53 + </div>
  54 + </div>
35 </div> 55 </div>
36 </div> 56 </div>
37 </div> 57 </div>
38 -  
39 </div> 58 </div>
40 -  
41 {% professor_subject topic.subject user as professor_links %} 59 {% professor_subject topic.subject user as professor_links %}
42 - {% if professor_links%} 60 + {% if professor_links %}
43 {% include "links/create_link.html" %} 61 {% include "links/create_link.html" %}
44 {% include "links/delete_link.html" %} 62 {% include "links/delete_link.html" %}
45 {% endif %} 63 {% endif %}
courses/templates/topic/file_material_view.html 0 → 100644
@@ -0,0 +1,110 @@ @@ -0,0 +1,110 @@
  1 +{% extends 'subject/index.html' %}
  2 +
  3 +{% load static i18n permission_tags widget_tweaks %}
  4 +
  5 +{% block breadcrumbs %}
  6 +
  7 + <ol class="breadcrumb">
  8 + <li><a href="">{% trans 'Home' %}</a></li>
  9 + <li><a href="">{{ subject }}</a></li>
  10 + <li class="active">{% trans 'Manage Topic' %}</li>
  11 + <li class="active">{{ topic.name }}</li>
  12 + </ol>
  13 +{% endblock %}
  14 +
  15 +
  16 +{% block content %}
  17 +
  18 +<div class="col-md-12">
  19 + <div><div class="well">
  20 + <div class="row">
  21 + <div class="col-md-offset-2 col-md-9">
  22 + <h2 class="resource_inline"><b>Book 1</b></h2>
  23 + </div>
  24 + <div class="col-md-offset-2 col-md-8">
  25 + <a href="{{ file.file_url }}">{{ file.url }}</a>
  26 + </div>
  27 + </div>
  28 +</div></div>
  29 + <div><div class="well">
  30 + <div class="row">
  31 + <div class="list-group">
  32 + <div class="list-group-item">
  33 + <div class="form-group is-empty">
  34 + <div class="row">
  35 + <div class="col-md-1">
  36 + <span class="input-group-btn">
  37 + <button type="button" class="btn btn-fab btn-fab-mini">
  38 + <i class="material-icons">send</i>
  39 + </button>
  40 + </span>
  41 + </div>
  42 + <div class="col-md-10">
  43 + <input type="text" id="addon3a" class="form-control" placeholder="Add Comment">
  44 + </div>
  45 + </div>
  46 + </div>
  47 + </div>
  48 + </div>
  49 + </div>
  50 +</div>
  51 +<div class="well timeLine">
  52 + <div class="row">
  53 + <div class="col-xs-2 col-md-1">
  54 + <img class="imgTimeLine" src="http://localhost:8080/assets/img/images/team-avatar-2.jpg">
  55 + </div>
  56 + <div class="col-xs-10 col-md-11">
  57 + <i class="fa fa-flag-o" aria-hidden="true"></i>
  58 + <a href="#"><h4 class="resource_inline"><b>Beltrano Camargo</b></h4></a>
  59 + <p class="timePost"><i>Há 11 horas</i></p>
  60 + <!--ListComents -->
  61 + <div class="list-group">
  62 + <div class="list-group-item">
  63 + <div class="row-picture">
  64 + <img class="circle" src="http://localhost:8080/assets/img/images/team-avatar-1.jpg" alt="icon">
  65 + </div>
  66 + <div class="row-content">
  67 + <h4 class="list-group-item-heading">Sicrano da Silva</h4>
  68 + <div class="least-content">11 horas</div>
  69 +
  70 + <p class="list-group-item-text">Quais capítulos devo estudar?</p>
  71 + </div>
  72 + </div>
  73 + <div class="list-group-separator"></div>
  74 + <div class="list-group-item">
  75 + <div class="row-picture">
  76 + <img class="circle" src="http://localhost:8080/assets/img/images/team-avatar-2.jpg" alt="icon">
  77 + </div>
  78 + <div class="row-content">
  79 + <h4 class="list-group-item-heading">Beltrano Camargo</h4>
  80 + <div class="least-content">11 horas</div>
  81 +
  82 + <p class="list-group-item-text">capítulos 5 e 6</p>
  83 + </div>
  84 + </div>
  85 + <div class="list-group-separator"></div>
  86 + <div class="list-group">
  87 + <div class="list-group-item">
  88 + <div class="form-group is-empty">
  89 + <div class="row">
  90 + <div class="col-md-1 col-md-offset-1">
  91 + <span class="input-group-btn">
  92 + <button type="button" class="btn btn-fab btn-fab-mini">
  93 + <i class="material-icons">send</i>
  94 + </button>
  95 + </span>
  96 + </div>
  97 + <div class="col-md-10">
  98 + <input type="text" id="addon3a" class="form-control" placeholder="Add Comment">
  99 + </div>
  100 + </div>
  101 + </div>
  102 + </div>
  103 + </div>
  104 + </div>
  105 + <!-- endListComents -->
  106 + </div>
  107 + </div>
  108 +</div></div>
  109 + </div>
  110 +{% endblock %}
0 \ No newline at end of file 111 \ No newline at end of file
courses/templates/topic/list_file.html
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 2
3 <div id="list-topic{{ topic.id }}-files"> 3 <div id="list-topic{{ topic.id }}-files">
4 {% for file in files %} 4 {% for file in files %}
5 - <li id="file_{{ file.slug }}"><i class="material-icons">{{ file.file_type.icon }}</i> <a href="{{ file.file_url.url }}" target="_blank">{{ file.name }}</a></li> 5 + <li id="file_{{ file.slug }}"><i class="material-icons">{{ file.file_type.icon }}</i> <a href="{% url 'course:file_material_view' file.slug %}" target="_blank">{{ file.name }}</a></li>
6 {% endfor %} 6 {% endfor %}
7 </div> 7 </div>
8 8
courses/urls.py
@@ -3,6 +3,7 @@ from django.conf.urls import url, include @@ -3,6 +3,7 @@ from django.conf.urls import url, include
3 from . import views 3 from . import views
4 urlpatterns = [ 4 urlpatterns = [
5 url(r'^$', views.IndexView.as_view(), name='manage'), 5 url(r'^$', views.IndexView.as_view(), name='manage'),
  6 + url(r'^all-courses/$', views.AllCoursesView.as_view(), name='all_courses'),
6 url(r'^create/$', views.CreateCourseView.as_view(), name='create'), 7 url(r'^create/$', views.CreateCourseView.as_view(), name='create'),
7 url(r'^replicate_course/(?P<slug>[\w_-]+)/$', views.ReplicateCourseView.as_view(), name='replicate_course'), 8 url(r'^replicate_course/(?P<slug>[\w_-]+)/$', views.ReplicateCourseView.as_view(), name='replicate_course'),
8 url(r'^edit/(?P<slug>[\w_-]+)/$', views.UpdateCourseView.as_view(), name='update'), 9 url(r'^edit/(?P<slug>[\w_-]+)/$', views.UpdateCourseView.as_view(), name='update'),
@@ -27,6 +28,7 @@ urlpatterns = [ @@ -27,6 +28,7 @@ urlpatterns = [
27 url(r'^exam/', include('exam.urls', namespace = 'exam')), 28 url(r'^exam/', include('exam.urls', namespace = 'exam')),
28 url(r'^files/', include('files.urls', namespace = 'file')), 29 url(r'^files/', include('files.urls', namespace = 'file')),
29 url(r'^upload-material/$', views.UploadMaterialView.as_view(), name='upload_material'), 30 url(r'^upload-material/$', views.UploadMaterialView.as_view(), name='upload_material'),
  31 + url(r'^subjects/file-material-view/(?P<slug>[\w_-]+)/$', views.FileMaterialView.as_view(), name='file_material_view'),
30 url(r'^links/',include('links.urls',namespace = 'links')), 32 url(r'^links/',include('links.urls',namespace = 'links')),
31 url(r'^(?P<slug>[\w_-]+)/', include([ 33 url(r'^(?P<slug>[\w_-]+)/', include([
32 url(r'^$', views.CourseView.as_view(), name='view'), 34 url(r'^$', views.CourseView.as_view(), name='view'),
courses/views.py
@@ -13,7 +13,6 @@ import operator @@ -13,7 +13,6 @@ import operator
13 from functools import reduce 13 from functools import reduce
14 from rolepermissions.verifications import has_object_permission 14 from rolepermissions.verifications import has_object_permission
15 from django.http import HttpResponseRedirect, JsonResponse 15 from django.http import HttpResponseRedirect, JsonResponse
16 -  
17 from .forms import CourseForm, UpdateCourseForm, CategoryCourseForm, SubjectForm,TopicForm,ActivityForm 16 from .forms import CourseForm, UpdateCourseForm, CategoryCourseForm, SubjectForm,TopicForm,ActivityForm
18 from .models import Course, Subject, CourseCategory,Topic, SubjectCategory,Activity, CategorySubject 17 from .models import Course, Subject, CourseCategory,Topic, SubjectCategory,Activity, CategorySubject
19 from core.mixins import NotificationMixin 18 from core.mixins import NotificationMixin
@@ -32,7 +31,7 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -32,7 +31,7 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
32 queryset = Course.objects.all() 31 queryset = Course.objects.all()
33 template_name = 'course/index.html' 32 template_name = 'course/index.html'
34 context_object_name = 'courses' 33 context_object_name = 'courses'
35 - paginate_by = 5 34 + paginate_by = 10
36 aparece = True 35 aparece = True
37 36
38 37
@@ -67,7 +66,7 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -67,7 +66,7 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
67 elif has_role(self.request.user,'system_admin'): 66 elif has_role(self.request.user,'system_admin'):
68 list_courses = queryset.order_by('name') 67 list_courses = queryset.order_by('name')
69 categorys_courses = CourseCategory.objects.all() 68 categorys_courses = CourseCategory.objects.all()
70 - else: 69 + elif has_role(self.request.user, 'student'):
71 list_courses = Course.objects.filter(Q(students = True)|Q(students__name = self.request.user.name)).order_by('name') 70 list_courses = Course.objects.filter(Q(students = True)|Q(students__name = self.request.user.name)).order_by('name')
72 categorys_courses = CourseCategory.objects.filter(course_category__students__name = self.request.user.name).distinct() 71 categorys_courses = CourseCategory.objects.filter(course_category__students__name = self.request.user.name).distinct()
73 72
@@ -86,6 +85,61 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -86,6 +85,61 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
86 context['aparece'] = self.aparece 85 context['aparece'] = self.aparece
87 86
88 return context 87 return context
  88 +
  89 +class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView):
  90 +
  91 + login_url = reverse_lazy("core:home")
  92 + redirect_field_name = 'next'
  93 + queryset = Course.objects.all()
  94 + template_name = 'course/index.html'
  95 + context_object_name = 'courses'
  96 + paginate_by = 5
  97 + aparece = True
  98 +
  99 +
  100 + def get_queryset(self):
  101 + result = super(AllCoursesView, self).get_queryset()
  102 +
  103 + course_search = self.request.GET.get('q', None)
  104 + category_search = self.request.GET.get('category', None)
  105 + if course_search:
  106 + self.aparece = False
  107 + query_list = course_search.split()
  108 + result = result.filter(
  109 + reduce(operator.and_,
  110 + (Q(name__icontains=q) for q in query_list))
  111 + )
  112 + if category_search:
  113 + self.aparece = False
  114 + query_list = category_search.split()
  115 + result = result.filter(
  116 + reduce(operator.and_,
  117 + (Q(category__name=category) for category in query_list))
  118 + )
  119 + return result
  120 +
  121 + def get_context_data(self, **kwargs):
  122 + context = super(AllCoursesView, self).get_context_data(**kwargs)
  123 + list_courses = None
  124 + categorys_courses = None
  125 + list_courses = Course.objects.all().order_by('name')
  126 + categorys_courses = CourseCategory.objects.all().distinct().order_by('name')
  127 +
  128 + paginator = Paginator(list_courses, self.paginate_by)
  129 + page = self.request.GET.get('page')
  130 +
  131 + try:
  132 + list_courses = paginator.page(page)
  133 + except PageNotAnInteger:
  134 + list_courses = paginator.page(1)
  135 + except EmptyPage:
  136 + list_courses = paginator.page(paginator.num_pages)
  137 +
  138 + context['list_courses'] = list_courses
  139 + context['categorys_courses'] = categorys_courses
  140 + context['aparece'] = self.aparece
  141 +
  142 + return context
89 143
90 class CreateCourseView(LoginRequiredMixin, HasRoleMixin, NotificationMixin,generic.edit.CreateView): 144 class CreateCourseView(LoginRequiredMixin, HasRoleMixin, NotificationMixin,generic.edit.CreateView):
91 145
@@ -658,3 +712,12 @@ class IndexSubjectCategoryView(LoginRequiredMixin, generic.ListView): @@ -658,3 +712,12 @@ class IndexSubjectCategoryView(LoginRequiredMixin, generic.ListView):
658 context = super(IndexSubjectCategoryView, self).get_context_data(**kwargs) 712 context = super(IndexSubjectCategoryView, self).get_context_data(**kwargs)
659 context['subject_categories'] = SubjectCategory.objects.all() 713 context['subject_categories'] = SubjectCategory.objects.all()
660 return context 714 return context
  715 +
  716 +class FileMaterialView(LoginRequiredMixin, generic.DetailView):
  717 +
  718 + allowed_roles = ['professor', 'system_admin', 'student']
  719 + login_url = reverse_lazy("core:home")
  720 + redirect_field_name = 'next'
  721 + model = Material
  722 + context_object_name = 'file'
  723 + template_name = 'topic/file_material_view.html'
661 \ No newline at end of file 724 \ No newline at end of file