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}} -
-
- -
+ +{% if courses.count > 0 %} + - +{% 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}}

#} +
+
+ {#

End: 23/08/2019

#} +
+
+
+
+{% 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