From 81b068e13e0a2b4e0cc7eb177dac337302233d82 Mon Sep 17 00:00:00 2001 From: Felipe Henrique de Almeida Bormann Date: Mon, 2 Jan 2017 17:49:12 -0300 Subject: [PATCH] creating subject functional and breadcrumbs ok --- categories/forms.py | 8 ++++---- categories/views.py | 2 +- subjects/admin.py | 2 +- subjects/forms.py | 13 ++++++++++--- subjects/migrations/0003_auto_20170102_1727.py | 42 ++++++++++++++++++++++++++++++++++++++++++ subjects/migrations/0004_auto_20170102_1737.py | 21 +++++++++++++++++++++ subjects/migrations/0005_auto_20170102_1737.py | 21 +++++++++++++++++++++ subjects/migrations/0006_auto_20170102_1739.py | 26 ++++++++++++++++++++++++++ subjects/models.py | 12 ++++++------ subjects/templates/subjects/create.html | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ subjects/templates/subjects/list.html | 2 +- subjects/urls.py | 1 + subjects/views.py | 43 ++++++++++++++++++++++++++++++++++++++++++- 13 files changed, 270 insertions(+), 17 deletions(-) create mode 100644 subjects/migrations/0003_auto_20170102_1727.py create mode 100644 subjects/migrations/0004_auto_20170102_1737.py create mode 100644 subjects/migrations/0005_auto_20170102_1737.py create mode 100644 subjects/migrations/0006_auto_20170102_1739.py create mode 100644 subjects/templates/subjects/create.html diff --git a/categories/forms.py b/categories/forms.py index 910fc38..1ccb0c7 100644 --- a/categories/forms.py +++ b/categories/forms.py @@ -6,7 +6,7 @@ class CategoryForm(forms.ModelForm): model = Category fields = ( 'name', 'description', 'visible', 'coordinators', ) widgets = { - 'description': forms.Textarea, - 'coordinators' : forms.SelectMultiple, - } - \ No newline at end of file + 'description': forms.Textarea, + 'coordinators' : forms.SelectMultiple, + } + \ No newline at end of file diff --git a/categories/views.py b/categories/views.py index a609453..4d69634 100644 --- a/categories/views.py +++ b/categories/views.py @@ -128,7 +128,7 @@ class CreateCategory(views.SuperuserRequiredMixin, HasRoleMixin, LogMixin, Creat return super(CreateCategory, self).form_valid(form) def get_success_url(self): - print(self.object.coordinators) + objeto = self.object.name messages.success(self.request, _('Category "%s" register successfully!')%(objeto)) return reverse_lazy('categories:index') diff --git a/subjects/admin.py b/subjects/admin.py index 2b7544b..9b545d4 100644 --- a/subjects/admin.py +++ b/subjects/admin.py @@ -4,7 +4,7 @@ from .models import Subject, Marker from .forms import CreateSubjectForm, CreateMarkerForm class SubjectAdmin(admin.ModelAdmin): - list_display = ['name', 'description_brief', 'description', 'init_date', 'end_date', 'visible', 'professor',] + list_display = ['name', 'description_brief', 'description', 'init_date', 'end_date', 'visible',] search_fields = ['name'] form = CreateSubjectForm diff --git a/subjects/forms.py b/subjects/forms.py index ea9b89c..6b1cec7 100644 --- a/subjects/forms.py +++ b/subjects/forms.py @@ -2,10 +2,17 @@ from .models import Subject, Marker from django import forms class CreateSubjectForm(forms.ModelForm): # TODO: Define form fields here - model = Subject + class Meta: + model = Subject + + fields = ('name', 'description_brief', 'description', 'markers', 'init_date', 'end_date', 'visible', 'professor', + 'students', ) + + widgets = { + 'professor': forms.SelectMultiple, + 'students': forms.SelectMultiple, + } - fields = ('name', 'description_brief', 'description', 'init_date', 'end_date', 'visible', 'markers', 'professor', - 'students', 'category', ) class CreateMarkerForm(forms.ModelForm): diff --git a/subjects/migrations/0003_auto_20170102_1727.py b/subjects/migrations/0003_auto_20170102_1727.py new file mode 100644 index 0000000..9bc113e --- /dev/null +++ b/subjects/migrations/0003_auto_20170102_1727.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2017-01-02 20:27 +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 = [ + ('subjects', '0002_auto_20161226_2054'), + ] + + operations = [ + migrations.AlterField( + model_name='subject', + name='description', + field=models.CharField(blank=True, max_length=300, verbose_name='description'), + ), + migrations.AlterField( + model_name='subject', + name='description_brief', + field=models.CharField(blank=True, max_length=100, verbose_name='simpler_description'), + ), + migrations.AlterField( + model_name='subject', + name='markers', + field=models.ManyToManyField(blank=True, null=True, to='subjects.Marker', verbose_name='markers'), + ), + migrations.AlterField( + model_name='subject', + name='max_upload_size', + field=models.IntegerField(default=1024, null=True, verbose_name='Maximum upload size'), + ), + migrations.AlterField( + model_name='subject', + name='professor', + field=models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, related_name='professor', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/subjects/migrations/0004_auto_20170102_1737.py b/subjects/migrations/0004_auto_20170102_1737.py new file mode 100644 index 0000000..8d8316a --- /dev/null +++ b/subjects/migrations/0004_auto_20170102_1737.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2017-01-02 20:37 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('subjects', '0003_auto_20170102_1727'), + ] + + operations = [ + migrations.AlterField( + model_name='subject', + name='category', + field=models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, related_name='subject_category', to='categories.Category'), + ), + ] diff --git a/subjects/migrations/0005_auto_20170102_1737.py b/subjects/migrations/0005_auto_20170102_1737.py new file mode 100644 index 0000000..0535b9c --- /dev/null +++ b/subjects/migrations/0005_auto_20170102_1737.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2017-01-02 20:37 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('subjects', '0004_auto_20170102_1737'), + ] + + operations = [ + migrations.AlterField( + model_name='subject', + name='category', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subject_category', to='categories.Category'), + ), + ] diff --git a/subjects/migrations/0006_auto_20170102_1739.py b/subjects/migrations/0006_auto_20170102_1739.py new file mode 100644 index 0000000..4ffc444 --- /dev/null +++ b/subjects/migrations/0006_auto_20170102_1739.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2017-01-02 20:39 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('subjects', '0005_auto_20170102_1737'), + ] + + operations = [ + migrations.RemoveField( + model_name='subject', + name='professor', + ), + migrations.AddField( + model_name='subject', + name='professor', + field=models.ManyToManyField(blank=True, related_name='professor', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/subjects/models.py b/subjects/models.py index 18accff..a58ad71 100644 --- a/subjects/models.py +++ b/subjects/models.py @@ -18,24 +18,24 @@ class Subject(models.Model): name = models.CharField( _("Name"), unique = True,max_length= 200) slug = AutoSlugField(_("Slug"),populate_from='name',unique=True) - description_brief = models.CharField(_("simpler_description"), max_length= 100) - description = models.CharField(_("description"), max_length = 300) + description_brief = models.CharField(_("simpler_description"), max_length= 100, blank=True) + description = models.CharField(_("description"), max_length = 300, blank= True) visible = models.BooleanField(_("visible")) init_date = models.DateField(_('Begin of Subject Date')) end_date = models.DateField(_('End of Subject Date')) - markers = models.ManyToManyField(Marker, verbose_name='markers') + markers = models.ManyToManyField(Marker, verbose_name='markers', blank=True, null=True) create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True) update_date = models.DateTimeField(_('Date of last update'), auto_now=True) - professor = models.ForeignKey(User, related_name="professor") + professor = models.ManyToManyField(User, related_name="professor", blank=True) students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='subject_student', blank = True) - category = models.ForeignKey(Category, related_name="subject_category") + category = models.ForeignKey(Category, related_name="subject_category", null=True) - max_upload_size = models.IntegerField(_("Maximum upload size")) + max_upload_size = models.IntegerField(_("Maximum upload size"), default=1024, null=True) class Meta: verbose_name = "Subject" verbose_name_plural = "Subjects" diff --git a/subjects/templates/subjects/create.html b/subjects/templates/subjects/create.html new file mode 100644 index 0000000..76d3434 --- /dev/null +++ b/subjects/templates/subjects/create.html @@ -0,0 +1,94 @@ +{% extends 'categories/create.html' %} + + + +{% load widget_tweaks static i18n permission_tags django_bootstrap_breadcrumbs switchevenodd %} + + +{% block breadcrumbs %} + {% clear_breadcrumbs %} + {% breadcrumb 'Home' 'categories:index' %} + + {% breadcrumb slug 'categories:index' %} + {% breadcrumb 'Create Subject' 'subjects:create' %} +{% endblock %} + +{% block content %} + {{ block.super }} + + + +{% endblock content %} + diff --git a/subjects/templates/subjects/list.html b/subjects/templates/subjects/list.html index c869480..61bc520 100644 --- a/subjects/templates/subjects/list.html +++ b/subjects/templates/subjects/list.html @@ -86,7 +86,7 @@ {{category.description|safe}} {% if user in category.coordinators.all %} - + {% endif %} diff --git a/subjects/urls.py b/subjects/urls.py index 8969b07..e2b240e 100644 --- a/subjects/urls.py +++ b/subjects/urls.py @@ -3,4 +3,5 @@ from . import views urlpatterns = [ url(r'^$', views.IndexView.as_view(), name='index'), + url(r'^create/(?P[\w_-]+)/$', views.SubjectCreateView.as_view(), name='create'), ] \ No newline at end of file diff --git a/subjects/views.py b/subjects/views.py index 5c28fab..35f31c7 100644 --- a/subjects/views.py +++ b/subjects/views.py @@ -23,6 +23,7 @@ from log.models import Log import time +from .forms import CreateSubjectForm from users.models import User @@ -57,9 +58,49 @@ class IndexView(LoginRequiredMixin, ListView): def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) - categories = self.get_queryset().order_by('name') + if self.request.user.is_staff: + categories = self.get_queryset().order_by('name') + else: + categories = self.get_queryset().order_by('name').filter(visible=True) context['categories'] = categories return context + +class SubjectCreateView(CreateView): + model = Subject + template_name = "subjects/create.html" + + login_url = reverse_lazy('users:login') + form_class = CreateSubjectForm + + success_url = reverse_lazy('subject:index') + + def get_initial(self): + initial = super(SubjectCreateView, self).get_initial() + initial['category'] = Category.objects.all().filter(slug=self.kwargs['slug']) + + return initial + + def get_context_data(self, **kwargs): + context = super(SubjectCreateView, self).get_context_data(**kwargs) + context['slug'] = self.kwargs['slug'] + return context + def form_valid(self, form): + + self.object = form.save() + self.object.category = Category.objects.get(slug=self.kwargs['slug']) + self.object.save() + + + return super(SubjectCreateView, self).form_valid(form) + + def get_success_url(self): + + + objeto = self.object.name + messages.success(self.request, _('Subject "%s" registered successfully!')%(objeto)) + return reverse_lazy('subjects:index') + + -- libgit2 0.21.2