Commit ff839086b58e21c76a11ac63c4c3e67c1d20de8e
1 parent
b33feeb3
Exists in
master
and in
5 other branches
Form de topic #31
Showing
4 changed files
with
75 additions
and
5 deletions
Show diff stats
courses/admin.py
1 | from django.contrib import admin | 1 | from django.contrib import admin |
2 | 2 | ||
3 | -from .models import Category, Course, Module | 3 | +from .models import Category, Course, Subject,Topic |
4 | 4 | ||
5 | class CategoryAdmin(admin.ModelAdmin): | 5 | class CategoryAdmin(admin.ModelAdmin): |
6 | list_display = ['name', 'slug'] | 6 | list_display = ['name', 'slug'] |
@@ -10,10 +10,15 @@ class CourseAdmin(admin.ModelAdmin): | @@ -10,10 +10,15 @@ class CourseAdmin(admin.ModelAdmin): | ||
10 | list_display = ['name', 'slug'] | 10 | list_display = ['name', 'slug'] |
11 | search_fields = ['name', 'slug'] | 11 | search_fields = ['name', 'slug'] |
12 | 12 | ||
13 | -class ModuleAdmin(admin.ModelAdmin): | 13 | +class SubjectAdmin(admin.ModelAdmin): |
14 | + list_display = ['name', 'slug'] | ||
15 | + search_fields = ['name', 'slug'] | ||
16 | + | ||
17 | +class TopicAdmin(admin.ModelAdmin): | ||
14 | list_display = ['name', 'slug'] | 18 | list_display = ['name', 'slug'] |
15 | search_fields = ['name', 'slug'] | 19 | search_fields = ['name', 'slug'] |
16 | 20 | ||
17 | admin.site.register(Category, CategoryAdmin) | 21 | admin.site.register(Category, CategoryAdmin) |
18 | admin.site.register(Course, CourseAdmin) | 22 | admin.site.register(Course, CourseAdmin) |
19 | -admin.site.register(Module, ModuleAdmin) | ||
20 | \ No newline at end of file | 23 | \ No newline at end of file |
24 | +admin.site.register(Subject, SubjectAdmin) | ||
25 | +admin.site.register(Topic, TopicAdmin) |
courses/forms.py
1 | from django import forms | 1 | from django import forms |
2 | from django.utils.translation import ugettext_lazy as _ | 2 | from django.utils.translation import ugettext_lazy as _ |
3 | -from .models import Category, Course, Subject | 3 | +from .models import Category, Course, Subject, Topic |
4 | 4 | ||
5 | class CategoryForm(forms.ModelForm): | 5 | class CategoryForm(forms.ModelForm): |
6 | 6 | ||
@@ -64,3 +64,17 @@ class SubjectForm(forms.ModelForm): | @@ -64,3 +64,17 @@ class SubjectForm(forms.ModelForm): | ||
64 | 'description': _("Subjects's description"), | 64 | 'description': _("Subjects's description"), |
65 | 'visible': _('Is the subject visible?'), | 65 | 'visible': _('Is the subject visible?'), |
66 | } | 66 | } |
67 | + | ||
68 | +class TopicForm(forms.ModelForm): | ||
69 | + | ||
70 | + class Meta: | ||
71 | + model = Topic | ||
72 | + fields = ('name', 'description',) | ||
73 | + labels = { | ||
74 | + 'name': _('Name'), | ||
75 | + 'description': _('Description'), | ||
76 | + } | ||
77 | + help_texts = { | ||
78 | + 'name': _("Topic's name"), | ||
79 | + 'description': _("Topic's description"), | ||
80 | + } |
@@ -0,0 +1,33 @@ | @@ -0,0 +1,33 @@ | ||
1 | +# -*- coding: utf-8 -*- | ||
2 | +# Generated by Django 1.10 on 2016-09-08 02:51 | ||
3 | +from __future__ import unicode_literals | ||
4 | + | ||
5 | +import autoslug.fields | ||
6 | +from django.db import migrations, models | ||
7 | +import django.db.models.deletion | ||
8 | + | ||
9 | + | ||
10 | +class Migration(migrations.Migration): | ||
11 | + | ||
12 | + dependencies = [ | ||
13 | + ('courses', '0006_auto_20160907_2259'), | ||
14 | + ] | ||
15 | + | ||
16 | + operations = [ | ||
17 | + migrations.CreateModel( | ||
18 | + name='Topic', | ||
19 | + fields=[ | ||
20 | + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||
21 | + ('name', models.CharField(max_length=100, verbose_name='Name')), | ||
22 | + ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), | ||
23 | + ('description', models.TextField(blank=True, verbose_name='Description')), | ||
24 | + ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')), | ||
25 | + ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')), | ||
26 | + ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='topics', to='courses.Subject', verbose_name='Subject')), | ||
27 | + ], | ||
28 | + options={ | ||
29 | + 'verbose_name': 'Topic', | ||
30 | + 'verbose_name_plural': 'Topics', | ||
31 | + }, | ||
32 | + ), | ||
33 | + ] |
courses/models.py
@@ -50,7 +50,7 @@ class Subject(models.Model): | @@ -50,7 +50,7 @@ class Subject(models.Model): | ||
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 | 52 | ||
53 | - | 53 | + |
54 | class Meta: | 54 | class Meta: |
55 | 55 | ||
56 | verbose_name = _('Subject') | 56 | verbose_name = _('Subject') |
@@ -58,3 +58,21 @@ class Subject(models.Model): | @@ -58,3 +58,21 @@ class Subject(models.Model): | ||
58 | 58 | ||
59 | def __str__(self): | 59 | def __str__(self): |
60 | return self.name | 60 | return self.name |
61 | + | ||
62 | +class Topic(models.Model): | ||
63 | + | ||
64 | + name = models.CharField(_('Name'), max_length = 100) | ||
65 | + slug = AutoSlugField(_("Slug"),populate_from='name',unique=True) | ||
66 | + description = models.TextField(_('Description'), blank = True) | ||
67 | + create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True) | ||
68 | + update_date = models.DateTimeField(_('Date of last update'), auto_now=True) | ||
69 | + subject = models.ForeignKey(Subject, verbose_name = _('Subject'), related_name="topics") | ||
70 | + | ||
71 | + | ||
72 | + class Meta: | ||
73 | + | ||
74 | + verbose_name = _('Topic') | ||
75 | + verbose_name_plural = _('Topics') | ||
76 | + | ||
77 | + def __str__(self): | ||
78 | + return self.name |