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