diff --git a/courses/migrations/0008_auto_20160908_1332.py b/courses/migrations/0008_auto_20160908_1332.py
new file mode 100644
index 0000000..fec1b85
--- /dev/null
+++ b/courses/migrations/0008_auto_20160908_1332.py
@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10 on 2016-09-08 16:32
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('courses', '0007_topic'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='subject',
+ name='professors',
+ field=models.ManyToManyField(related_name='subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='owner',
+ field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='topics', to=settings.AUTH_USER_MODEL, verbose_name='Owner'),
+ ),
+ ]
diff --git a/courses/models.py b/courses/models.py
index e8d662f..4919737 100644
--- a/courses/models.py
+++ b/courses/models.py
@@ -49,10 +49,11 @@ class Subject(models.Model):
create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
update_date = models.DateTimeField(_('Date of last update'), auto_now=True)
course = models.ForeignKey(Course, verbose_name = _('Course'), related_name="subjects")
+ professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='subjects')
class Meta:
-
+ ordering = ('create_date',)
verbose_name = _('Subject')
verbose_name_plural = _('Subjects')
@@ -67,10 +68,10 @@ class Topic(models.Model):
create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
update_date = models.DateTimeField(_('Date of last update'), auto_now=True)
subject = models.ForeignKey(Subject, verbose_name = _('Subject'), related_name="topics")
-
+ owner = models.ForeignKey(User, verbose_name = _('Owner'), related_name="topics",default=1)
class Meta:
-
+ ordering = ('create_date',)
verbose_name = _('Topic')
verbose_name_plural = _('Topics')
diff --git a/courses/templates/subject/form_view_teacher.html b/courses/templates/subject/form_view_teacher.html
index e8fcdd9..fcb6f57 100644
--- a/courses/templates/subject/form_view_teacher.html
+++ b/courses/templates/subject/form_view_teacher.html
@@ -7,7 +7,7 @@
{{topic}}
diff --git a/courses/templates/subject/index.html b/courses/templates/subject/index.html
index 289862f..a39a3ef 100644
--- a/courses/templates/subject/index.html
+++ b/courses/templates/subject/index.html
@@ -40,7 +40,7 @@
{% for topic in topics %}
- {% if user|has_role:'professor' or user|has_role:'system_admin'%}
+ {% if user|has_role:'system_admin' or topic.owner == user%}
{% include "subject/form_view_teacher.html" %}
{% else %}
{% include "subject/form_view_student.html" %}
diff --git a/courses/templates/topic/update.html b/courses/templates/topic/update.html
new file mode 100644
index 0000000..039ff36
--- /dev/null
+++ b/courses/templates/topic/update.html
@@ -0,0 +1,26 @@
+{% extends 'subject/index.html' %}
+
+{% load static i18n permission_tags widget_tweaks %}
+
+{% block content %}
+
+
+
+{% endblock content %}
diff --git a/courses/urls.py b/courses/urls.py
index eb23d56..95f0176 100644
--- a/courses/urls.py
+++ b/courses/urls.py
@@ -16,6 +16,7 @@ urlpatterns = [
url(r'^categories/delete/(?P[\w_-]+)/$', views.DeleteCatView.as_view(), name='delete_cat'),
url(r'^course/(?P[\w_-]+)/subjects/$', views.SubjectsView.as_view(), name='view_subject'),
url(r'^course/(?P[\w_-]+)/topics/create/$', views.CreateTopicView.as_view(), name='create_topic'),
+ url(r'^course/(?P[\w_-]+)/topics/update/$', views.UpdateTopicView.as_view(), name='update_topic'),
# url(r'^course/(?P[\w_-]+)/modules/create/$', views.CreateModView.as_view(), name='create_mods'),
# url(r'^course/(?P[\w_-]+)/modules/edit/(?P[\w_-]+)/$', views.UpdateModView.as_view(), name='update_mods'),
# url(r'^course/(?P[\w_-]+)/modules/delete/(?P[\w_-]+)/$', views.DeleteModView.as_view(), name='delete_mods'),
diff --git a/courses/views.py b/courses/views.py
index 86e37d7..c181c39 100644
--- a/courses/views.py
+++ b/courses/views.py
@@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _
from slugify import slugify
from .forms import CourseForm, CategoryForm, SubjectForm,TopicForm
-from .models import Course, Subject, Category
+from .models import Course, Subject, Category,Topic
class IndexView(LoginRequiredMixin, generic.ListView):
@@ -228,14 +228,11 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView)
return context
def form_valid(self, form):
- print ("aqui")
subject = get_object_or_404(Subject, slug = self.kwargs.get('slug'))
- print ("aqui")
self.object = form.save(commit = False)
self.object.subject = subject
- print ("aqui")
- print (self.object)
+ self.object.owner = self.request.user
self.object.save()
return super(CreateTopicView, self).form_valid(form)
@@ -244,38 +241,43 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView)
messages.success(self.request, _('Module created successfully!'))
return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)
-#
-# class UpdateModView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
-#
-# allowed_roles = ['professor', 'system_admin']
-# login_url = reverse_lazy("core:home")
-# redirect_field_name = 'next'
-# template_name = 'module/update.html'
-# model = Module
-# form_class = ModuleForm
-#
-# def get_success_url(self):
-# return reverse_lazy('course:manage_mods', kwargs={'slug' : self.object.course.slug})
-#
-# def get_context_data(self, **kwargs):
-# course = get_object_or_404(Course, slug = self.kwargs.get('slug_course'))
-# context = super(UpdateModView, self).get_context_data(**kwargs)
-# context['course'] = course
-#
-# return context
-#
-# def form_valid(self, form):
-# self.object = form.save(commit = False)
-# self.object.slug = slugify(self.object.name)
-# self.object.save()
-#
-# return super(UpdateModView, self).form_valid(form)
-#
-# def render_to_response(self, context, **response_kwargs):
-# messages.success(self.request, _('Module edited successfully!'))
-#
-# return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)
-#
+
+class UpdateTopicView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
+
+ allowed_roles = ['professor', 'system_admin','student']
+ login_url = reverse_lazy("core:home")
+ redirect_field_name = 'next'
+ template_name = 'topic/update.html'
+ # model = Topic
+ form_class = TopicForm
+
+ def get_object(self, queryset=None):
+ return get_object_or_404(Topic, slug = self.kwargs.get('slug'))
+
+ def get_success_url(self):
+ return reverse_lazy('course:view_subject', kwargs={'slug' : self.object.subject.slug})
+
+ def get_context_data(self, **kwargs):
+ context = super(UpdateTopicView, self).get_context_data(**kwargs)
+ topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
+ context['course'] = topic.subject.course
+ context['subject'] = topic.subject
+ context['subjects'] = topic.subject.course.subjects.filter(visible=True)
+
+ return context
+
+ # def form_valid(self, form):
+ # self.object = form.save(commit = False)
+ # self.object.slug = slugify(self.object.name)
+ # self.object.save()
+ #
+ # return super(UpdateModView, self).form_valid(form)
+
+ # def render_to_response(self, context, **response_kwargs):
+ # messages.success(self.request, _('Module edited successfully!'))
+ #
+ # return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)
+
# class DeleteModView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
#
# allowed_roles = ['professor', 'system_admin']
--
libgit2 0.21.2