Commit 4b1b6e9b0c5b5e80b6ce7cf288d49a96ef83f151

Authored by Jailson Dias
1 parent 862dbc12

Criado processo de atualizar um topic #36

courses/migrations/0008_auto_20160908_1332.py 0 → 100644
@@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-09-08 16:32
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.conf import settings
  6 +from django.db import migrations, models
  7 +import django.db.models.deletion
  8 +
  9 +
  10 +class Migration(migrations.Migration):
  11 +
  12 + dependencies = [
  13 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  14 + ('courses', '0007_topic'),
  15 + ]
  16 +
  17 + operations = [
  18 + migrations.AddField(
  19 + model_name='subject',
  20 + name='professors',
  21 + field=models.ManyToManyField(related_name='subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
  22 + ),
  23 + migrations.AddField(
  24 + model_name='topic',
  25 + name='owner',
  26 + field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='topics', to=settings.AUTH_USER_MODEL, verbose_name='Owner'),
  27 + ),
  28 + ]
courses/models.py
@@ -49,10 +49,11 @@ class Subject(models.Model): @@ -49,10 +49,11 @@ class Subject(models.Model):
49 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True) 49 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
50 update_date = models.DateTimeField(_('Date of last update'), auto_now=True) 50 update_date = models.DateTimeField(_('Date of last update'), auto_now=True)
51 course = models.ForeignKey(Course, verbose_name = _('Course'), related_name="subjects") 51 course = models.ForeignKey(Course, verbose_name = _('Course'), related_name="subjects")
  52 + professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='subjects')
52 53
53 54
54 class Meta: 55 class Meta:
55 - 56 + ordering = ('create_date',)
56 verbose_name = _('Subject') 57 verbose_name = _('Subject')
57 verbose_name_plural = _('Subjects') 58 verbose_name_plural = _('Subjects')
58 59
@@ -67,10 +68,10 @@ class Topic(models.Model): @@ -67,10 +68,10 @@ class Topic(models.Model):
67 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True) 68 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
68 update_date = models.DateTimeField(_('Date of last update'), auto_now=True) 69 update_date = models.DateTimeField(_('Date of last update'), auto_now=True)
69 subject = models.ForeignKey(Subject, verbose_name = _('Subject'), related_name="topics") 70 subject = models.ForeignKey(Subject, verbose_name = _('Subject'), related_name="topics")
70 - 71 + owner = models.ForeignKey(User, verbose_name = _('Owner'), related_name="topics",default=1)
71 72
72 class Meta: 73 class Meta:
73 - 74 + ordering = ('create_date',)
74 verbose_name = _('Topic') 75 verbose_name = _('Topic')
75 verbose_name_plural = _('Topics') 76 verbose_name_plural = _('Topics')
76 77
courses/templates/subject/form_view_teacher.html
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 <h3>{{topic}}</h3> 7 <h3>{{topic}}</h3>
8 </div> 8 </div>
9 <div class="col-md-3 col-sm-3"> 9 <div class="col-md-3 col-sm-3">
10 - <a href="#" class="btn">{% trans "edit" %}</a> 10 + <a href="{% url 'course:update_topic' topic.slug%}" class="btn">{% trans "edit" %}</a>
11 </div> 11 </div>
12 </div> 12 </div>
13 </div> 13 </div>
courses/templates/subject/index.html
@@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
40 </div> 40 </div>
41 </div> 41 </div>
42 {% for topic in topics %} 42 {% for topic in topics %}
43 - {% if user|has_role:'professor' or user|has_role:'system_admin'%} 43 + {% if user|has_role:'system_admin' or topic.owner == user%}
44 {% include "subject/form_view_teacher.html" %} 44 {% include "subject/form_view_teacher.html" %}
45 {% else %} 45 {% else %}
46 {% include "subject/form_view_student.html" %} 46 {% include "subject/form_view_student.html" %}
courses/templates/topic/update.html 0 → 100644
@@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
  1 +{% extends 'subject/index.html' %}
  2 +
  3 +{% load static i18n permission_tags widget_tweaks %}
  4 +
  5 +{% block content %}
  6 +
  7 +<div class="panel panel-default">
  8 + <div class="panel-body">
  9 + <form class="form-group " method="post" action="">
  10 + {% csrf_token %}
  11 + {% for field in form %}
  12 + <div class="form-group {% if field.errors %} has-error{% endif %}">
  13 + <label for="{{ field.auto_id }}" class="control-label label-static"> {{ field.label }}</label>
  14 +
  15 + {% render_field field class='form-control' placeholder=field.label%}
  16 + </div>
  17 + {% endfor %}
  18 + <div class="col-lg-offset-4 col-lg-4">
  19 + <button type="submite" class="btn btn-raised btn-primary btn-lg btn-block">{% trans 'Update' %}</button>
  20 +
  21 + </div>
  22 + </form>
  23 + </div>
  24 +</div>
  25 +
  26 +{% endblock content %}
courses/urls.py
@@ -16,6 +16,7 @@ urlpatterns = [ @@ -16,6 +16,7 @@ urlpatterns = [
16 url(r'^categories/delete/(?P<slug>[\w_-]+)/$', views.DeleteCatView.as_view(), name='delete_cat'), 16 url(r'^categories/delete/(?P<slug>[\w_-]+)/$', views.DeleteCatView.as_view(), name='delete_cat'),
17 url(r'^course/(?P<slug>[\w_-]+)/subjects/$', views.SubjectsView.as_view(), name='view_subject'), 17 url(r'^course/(?P<slug>[\w_-]+)/subjects/$', views.SubjectsView.as_view(), name='view_subject'),
18 url(r'^course/(?P<slug>[\w_-]+)/topics/create/$', views.CreateTopicView.as_view(), name='create_topic'), 18 url(r'^course/(?P<slug>[\w_-]+)/topics/create/$', views.CreateTopicView.as_view(), name='create_topic'),
  19 + url(r'^course/(?P<slug>[\w_-]+)/topics/update/$', views.UpdateTopicView.as_view(), name='update_topic'),
19 # url(r'^course/(?P<slug>[\w_-]+)/modules/create/$', views.CreateModView.as_view(), name='create_mods'), 20 # url(r'^course/(?P<slug>[\w_-]+)/modules/create/$', views.CreateModView.as_view(), name='create_mods'),
20 # url(r'^course/(?P<slug_course>[\w_-]+)/modules/edit/(?P<slug>[\w_-]+)/$', views.UpdateModView.as_view(), name='update_mods'), 21 # url(r'^course/(?P<slug_course>[\w_-]+)/modules/edit/(?P<slug>[\w_-]+)/$', views.UpdateModView.as_view(), name='update_mods'),
21 # url(r'^course/(?P<slug_course>[\w_-]+)/modules/delete/(?P<slug>[\w_-]+)/$', views.DeleteModView.as_view(), name='delete_mods'), 22 # url(r'^course/(?P<slug_course>[\w_-]+)/modules/delete/(?P<slug>[\w_-]+)/$', views.DeleteModView.as_view(), name='delete_mods'),
courses/views.py
@@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _ @@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _
10 from slugify import slugify 10 from slugify import slugify
11 11
12 from .forms import CourseForm, CategoryForm, SubjectForm,TopicForm 12 from .forms import CourseForm, CategoryForm, SubjectForm,TopicForm
13 -from .models import Course, Subject, Category 13 +from .models import Course, Subject, Category,Topic
14 14
15 15
16 class IndexView(LoginRequiredMixin, generic.ListView): 16 class IndexView(LoginRequiredMixin, generic.ListView):
@@ -228,14 +228,11 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView) @@ -228,14 +228,11 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView)
228 return context 228 return context
229 229
230 def form_valid(self, form): 230 def form_valid(self, form):
231 - print ("aqui")  
232 subject = get_object_or_404(Subject, slug = self.kwargs.get('slug')) 231 subject = get_object_or_404(Subject, slug = self.kwargs.get('slug'))
233 232
234 - print ("aqui")  
235 self.object = form.save(commit = False) 233 self.object = form.save(commit = False)
236 self.object.subject = subject 234 self.object.subject = subject
237 - print ("aqui")  
238 - print (self.object) 235 + self.object.owner = self.request.user
239 self.object.save() 236 self.object.save()
240 237
241 return super(CreateTopicView, self).form_valid(form) 238 return super(CreateTopicView, self).form_valid(form)
@@ -244,38 +241,43 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView) @@ -244,38 +241,43 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView)
244 messages.success(self.request, _('Module created successfully!')) 241 messages.success(self.request, _('Module created successfully!'))
245 242
246 return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine) 243 return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)
247 -#  
248 -# class UpdateModView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):  
249 -#  
250 -# allowed_roles = ['professor', 'system_admin']  
251 -# login_url = reverse_lazy("core:home")  
252 -# redirect_field_name = 'next'  
253 -# template_name = 'module/update.html'  
254 -# model = Module  
255 -# form_class = ModuleForm  
256 -#  
257 -# def get_success_url(self):  
258 -# return reverse_lazy('course:manage_mods', kwargs={'slug' : self.object.course.slug})  
259 -#  
260 -# def get_context_data(self, **kwargs):  
261 -# course = get_object_or_404(Course, slug = self.kwargs.get('slug_course'))  
262 -# context = super(UpdateModView, self).get_context_data(**kwargs)  
263 -# context['course'] = course  
264 -#  
265 -# return context  
266 -#  
267 -# def form_valid(self, form):  
268 -# self.object = form.save(commit = False)  
269 -# self.object.slug = slugify(self.object.name)  
270 -# self.object.save()  
271 -#  
272 -# return super(UpdateModView, self).form_valid(form)  
273 -#  
274 -# def render_to_response(self, context, **response_kwargs):  
275 -# messages.success(self.request, _('Module edited successfully!'))  
276 -#  
277 -# return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)  
278 -# 244 +
  245 +class UpdateTopicView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
  246 +
  247 + allowed_roles = ['professor', 'system_admin','student']
  248 + login_url = reverse_lazy("core:home")
  249 + redirect_field_name = 'next'
  250 + template_name = 'topic/update.html'
  251 + # model = Topic
  252 + form_class = TopicForm
  253 +
  254 + def get_object(self, queryset=None):
  255 + return get_object_or_404(Topic, slug = self.kwargs.get('slug'))
  256 +
  257 + def get_success_url(self):
  258 + return reverse_lazy('course:view_subject', kwargs={'slug' : self.object.subject.slug})
  259 +
  260 + def get_context_data(self, **kwargs):
  261 + context = super(UpdateTopicView, self).get_context_data(**kwargs)
  262 + topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
  263 + context['course'] = topic.subject.course
  264 + context['subject'] = topic.subject
  265 + context['subjects'] = topic.subject.course.subjects.filter(visible=True)
  266 +
  267 + return context
  268 +
  269 + # def form_valid(self, form):
  270 + # self.object = form.save(commit = False)
  271 + # self.object.slug = slugify(self.object.name)
  272 + # self.object.save()
  273 + #
  274 + # return super(UpdateModView, self).form_valid(form)
  275 +
  276 + # def render_to_response(self, context, **response_kwargs):
  277 + # messages.success(self.request, _('Module edited successfully!'))
  278 + #
  279 + # return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)
  280 +
279 # class DeleteModView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): 281 # class DeleteModView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
280 # 282 #
281 # allowed_roles = ['professor', 'system_admin'] 283 # allowed_roles = ['professor', 'system_admin']