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 @@ |
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
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" %} | ... | ... |
... | ... | @@ -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'] | ... | ... |