diff --git a/courses/migrations/0012_course_students.py b/courses/migrations/0012_course_students.py
new file mode 100644
index 0000000..f70c1c1
--- /dev/null
+++ b/courses/migrations/0012_course_students.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10 on 2016-09-15 02:57
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('courses', '0011_auto_20160914_2126'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='course',
+ name='students',
+ field=models.ManyToManyField(related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
+ ),
+ ]
diff --git a/courses/models.py b/courses/models.py
index 66d8b87..c979710 100644
--- a/courses/models.py
+++ b/courses/models.py
@@ -31,6 +31,7 @@ class Course(models.Model):
image = models.ImageField(verbose_name = _('Image'), blank = True, upload_to = 'courses/')
category = models.ForeignKey(Category, verbose_name = _('Category'))
professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='courses')
+ students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='courses_student')
class Meta:
ordering = ('create_date','name')
diff --git a/courses/templates/course/view.html b/courses/templates/course/view.html
index da86519..5e75be1 100644
--- a/courses/templates/course/view.html
+++ b/courses/templates/course/view.html
@@ -1,8 +1,12 @@
-{% extends 'course/index.html' %}
+{% extends 'base.html' %}
{% load static i18n permission_tags %}
{% load django_bootstrap_breadcrumbs %}
+{% block style %}
+
+{% endblock style %}
+
{% block breadcrumbs %}
{{ block.super }}
@@ -10,104 +14,81 @@
{% endblock %}
-
{% block sidebar %}
-
-{{block.super}}
-
-
-
-
-
{% trans 'Subjects' %}
-
-
-
-
+
+
+
{% trans "Menu" %}
+
+
+
+{% if courses.count > 0 %}
+
+
+
{% trans "Courses" %}
+
+
+
+ {% for course in courses %}
+ {{course}}
+ {% endfor %}
+
+
-
+{% endif %}
{% endblock %}
{% block content %}
+
{% trans "Subjects" %}
+{% for subject in subjects %}
+
+
+
+
-
-
-
-
-
-
{{ course }}
-
{{ course.category }}
-
{{ course.max_students }} alunos no máximo
-
- {% trans 'Subscribes:' %} de {{ course.init_register_date }} até {{ course.end_register_date }}
-
-
- {% trans 'Period:' %} de {{ course.init_date }} até {{ course.end_date }}
-
-
-
-
-
-
- {% trans 'Objectives:' %} {{ course.objectivies|linebreaks }}
-
-
- {% trans 'Work Plan:' %} {{ course.content|linebreaks }}
-
-
-
-
-
-
Subjects
- {% for subject in subjects %}
-
-
-
Subject 1
-
-
- Dummy Info
-
-
- {% endfor %}
-
-
+
{{subject}}
+
+
+ {% if user|has_role:'professor, system_admin' %}
+
+
+
+
+
+
+ {% endif %}
+
+
+
+
+
{% trans "Professor" %}: {% for professor in subject.professors.all %}{% if not forloop.first %},{% endif %}
+ {{professor}}{% if forloop.last %}.{% endif %}{% endfor %}
+
+ {% trans "Description" %}:
+
+ {{subject.description}}
+
+
+
+
+ {#
{% trans "Begining" %}: {{subject.init_date}}
#}
+
+
+
+
+
+{% endfor %}
{% endblock %}
+
{% block rightbar %}
+
{% endblock rightbar %}
diff --git a/courses/urls.py b/courses/urls.py
index de2de30..3b9f18d 100644
--- a/courses/urls.py
+++ b/courses/urls.py
@@ -6,7 +6,7 @@ urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='manage'),
url(r'^create/$', views.CreateView.as_view(), name='create'),
url(r'^edit/(?P
[\w_-]+)/$', views.UpdateView.as_view(), name='update'),
- url(r'^(?P[\w_-]+)/$', views.View.as_view(), name='view'),
+ url(r'^(?P[\w_-]+)/$', views.CourseView.as_view(), name='view'),
url(r'^delete/(?P[\w_-]+)/$', views.DeleteView.as_view(), name='delete'),
url(r'^category/(?P[\w_-]+)/$', views.FilteredView.as_view(), name='filter'),
url(r'^categories/$', views.IndexCatView.as_view(), name='manage_cat'),
diff --git a/courses/views.py b/courses/views.py
index b4ca34a..a79e497 100644
--- a/courses/views.py
+++ b/courses/views.py
@@ -75,7 +75,7 @@ class UpdateView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)
-class View(LoginRequiredMixin, NotificationMixin, generic.DetailView):
+class CourseView(LoginRequiredMixin, NotificationMixin, generic.DetailView):
login_url = reverse_lazy("core:home")
redirect_field_name = 'next'
@@ -84,11 +84,25 @@ class View(LoginRequiredMixin, NotificationMixin, generic.DetailView):
template_name = 'course/view.html'
def get_context_data(self, **kwargs):
- context = super(View, self).get_context_data(**kwargs)
+ context = super(CourseView, self).get_context_data(**kwargs)
course = get_object_or_404(Course, slug = self.kwargs.get('slug'))
- subjects = Subject.objects.filter(Q(visible=True) | Q(professors__in=[self.request.user]) | Q(course = course))
+ if has_role(self.request.user,'system_admin'):
+ subjects = Subject.objects.all()
+ elif has_role(self.request.user,'professor'):
+ subjects = course.subjects.filter(professors__in=[self.request.user])
+ elif has_role(self.request.user, 'student'):
+ subjects = course.subjects.filter(visible=True)
context['subjects'] = subjects
+ if has_role(self.request.user,'system_admin'):
+ courses = Course.objects.all()
+ elif has_role(self.request.user,'professor'):
+ courses = self.request.user.courses.all()
+ elif has_role(self.request.user, 'student'):
+ courses = self.request.user.courses_student.all()
+ context['courses'] = courses
+ context['title'] = course.name
+
return context
class DeleteView(LoginRequiredMixin, HasRoleMixin, NotificationMixin, generic.DeleteView):
--
libgit2 0.21.2