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 @@
  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 49 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
50 50 update_date = models.DateTimeField(_('Date of last update'), auto_now=True)
51 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 55 class Meta:
55   -
  56 + ordering = ('create_date',)
56 57 verbose_name = _('Subject')
57 58 verbose_name_plural = _('Subjects')
58 59  
... ... @@ -67,10 +68,10 @@ class Topic(models.Model):
67 68 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
68 69 update_date = models.DateTimeField(_('Date of last update'), auto_now=True)
69 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 73 class Meta:
73   -
  74 + ordering = ('create_date',)
74 75 verbose_name = _('Topic')
75 76 verbose_name_plural = _('Topics')
76 77  
... ...
courses/templates/subject/form_view_teacher.html
... ... @@ -7,7 +7,7 @@
7 7 <h3>{{topic}}</h3>
8 8 </div>
9 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 11 </div>
12 12 </div>
13 13 </div>
... ...
courses/templates/subject/index.html
... ... @@ -40,7 +40,7 @@
40 40 </div>
41 41 </div>
42 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 44 {% include "subject/form_view_teacher.html" %}
45 45 {% else %}
46 46 {% include "subject/form_view_student.html" %}
... ...
courses/templates/topic/update.html 0 → 100644
... ... @@ -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 16 url(r'^categories/delete/(?P<slug>[\w_-]+)/$', views.DeleteCatView.as_view(), name='delete_cat'),
17 17 url(r'^course/(?P<slug>[\w_-]+)/subjects/$', views.SubjectsView.as_view(), name='view_subject'),
18 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 20 # url(r'^course/(?P<slug>[\w_-]+)/modules/create/$', views.CreateModView.as_view(), name='create_mods'),
20 21 # url(r'^course/(?P<slug_course>[\w_-]+)/modules/edit/(?P<slug>[\w_-]+)/$', views.UpdateModView.as_view(), name='update_mods'),
21 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 10 from slugify import slugify
11 11  
12 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 16 class IndexView(LoginRequiredMixin, generic.ListView):
... ... @@ -228,14 +228,11 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView)
228 228 return context
229 229  
230 230 def form_valid(self, form):
231   - print ("aqui")
232 231 subject = get_object_or_404(Subject, slug = self.kwargs.get('slug'))
233 232  
234   - print ("aqui")
235 233 self.object = form.save(commit = False)
236 234 self.object.subject = subject
237   - print ("aqui")
238   - print (self.object)
  235 + self.object.owner = self.request.user
239 236 self.object.save()
240 237  
241 238 return super(CreateTopicView, self).form_valid(form)
... ... @@ -244,38 +241,43 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView)
244 241 messages.success(self.request, _('Module created successfully!'))
245 242  
246 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 281 # class DeleteModView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
280 282 #
281 283 # allowed_roles = ['professor', 'system_admin']
... ...