Commit 4b1b6e9b0c5b5e80b6ce7cf288d49a96ef83f151
1 parent
862dbc12
Exists in
master
and in
5 other branches
Criado processo de atualizar um topic #36
Showing
7 changed files
with
100 additions
and
42 deletions
Show diff stats
@@ -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" %} |
@@ -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'] |