Commit 4f16a4b036bbf347b05b1938e9a9adec533d1ed3

Authored by fbormann
1 parent a08d5f5b

modifying courses model and it's fields, I had to rewrite some code because it w…

…ouldn't work and I've also changed the migrations, all of us will have to erase our database indeed
app/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
  2 +# Generated by Django 1.10 on 2016-11-16 20:53
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.db import migrations, models
... ... @@ -23,11 +23,11 @@ class Migration(migrations.Migration):
23 23 ('username', models.CharField(max_length=30, verbose_name='Email host username')),
24 24 ('password', models.CharField(blank=True, max_length=30, verbose_name='Email host password')),
25 25 ('safe_conection', models.IntegerField(choices=[(0, 'No'), (1, 'TLS, if available'), (2, 'TLS'), (3, 'SSL')], default=0, verbose_name='Use safe conection')),
26   - ('default_from_email', models.EmailField(blank=True, max_length=254, verbose_name='Default from email')),
  26 + ('default_from_email', models.EmailField(max_length=254, verbose_name='Default from email')),
27 27 ],
28 28 options={
29   - 'verbose_name': 'Amadeus SMTP setting',
30 29 'verbose_name_plural': 'Amadeus SMTP settings',
  30 + 'verbose_name': 'Amadeus SMTP setting',
31 31 },
32 32 ),
33 33 ]
... ...
app/migrations/0002_auto_20161115_2054.py
... ... @@ -1,20 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 23:54
3   -from __future__ import unicode_literals
4   -
5   -from django.db import migrations, models
6   -
7   -
8   -class Migration(migrations.Migration):
9   -
10   - dependencies = [
11   - ('app', '0001_initial'),
12   - ]
13   -
14   - operations = [
15   - migrations.AlterField(
16   - model_name='emailbackend',
17   - name='default_from_email',
18   - field=models.EmailField(max_length=254, verbose_name='Default from email'),
19   - ),
20   - ]
core/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
  2 +# Generated by Django 1.10 on 2016-11-16 20:53
3 3 from __future__ import unicode_literals
4 4  
5 5 import autoslug.fields
  6 +from django.conf import settings
6 7 import django.contrib.postgres.fields.jsonb
7 8 from django.db import migrations, models
8 9 import django.db.models.deletion
... ... @@ -13,6 +14,7 @@ class Migration(migrations.Migration):
13 14 initial = True
14 15  
15 16 dependencies = [
  17 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16 18 ]
17 19  
18 20 operations = [
... ... @@ -25,18 +27,19 @@ class Migration(migrations.Migration):
25 27 ('created_date', models.DateTimeField(auto_now_add=True, verbose_name='Created Date')),
26 28 ],
27 29 options={
28   - 'verbose_name': 'Action',
29 30 'verbose_name_plural': 'Actions',
  31 + 'verbose_name': 'Action',
30 32 },
31 33 ),
32 34 migrations.CreateModel(
33 35 name='Action_Resource',
34 36 fields=[
35 37 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  38 + ('action', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action', verbose_name='Action_Applied')),
36 39 ],
37 40 options={
38   - 'verbose_name': 'Action_Resource',
39 41 'verbose_name_plural': 'Action_Resources',
  42 + 'verbose_name': 'Action_Resource',
40 43 },
41 44 ),
42 45 migrations.CreateModel(
... ... @@ -46,10 +49,12 @@ class Migration(migrations.Migration):
46 49 ('component', models.TextField(verbose_name='Component (Module / App)')),
47 50 ('context', django.contrib.postgres.fields.jsonb.JSONField(blank=True, verbose_name='Context')),
48 51 ('datetime', models.DateTimeField(auto_now_add=True, verbose_name='Date and Time of action')),
  52 + ('action_resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource')),
  53 + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Actor')),
49 54 ],
50 55 options={
51   - 'verbose_name': 'Log',
52 56 'verbose_name_plural': 'Logs',
  57 + 'verbose_name': 'Log',
53 58 },
54 59 ),
55 60 migrations.CreateModel(
... ... @@ -60,8 +65,8 @@ class Migration(migrations.Migration):
60 65 ('icon', models.CharField(max_length=50, unique=True, verbose_name='Icon')),
61 66 ],
62 67 options={
63   - 'verbose_name': 'Amadeus Mime Type',
64 68 'verbose_name_plural': 'Amadeus Mime Types',
  69 + 'verbose_name': 'Amadeus Mime Type',
65 70 },
66 71 ),
67 72 migrations.CreateModel(
... ... @@ -72,10 +77,12 @@ class Migration(migrations.Migration):
72 77 ('read', models.BooleanField(default=False, verbose_name='Read')),
73 78 ('datetime', models.DateTimeField(auto_now_add=True, verbose_name='Date and Time of action')),
74 79 ('action_resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource')),
  80 + ('actor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notification_Performer', to=settings.AUTH_USER_MODEL, verbose_name='Performer')),
  81 + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_Actor', to=settings.AUTH_USER_MODEL, verbose_name='User')),
75 82 ],
76 83 options={
77   - 'verbose_name': 'Notification',
78 84 'verbose_name_plural': 'Notifications',
  85 + 'verbose_name': 'Notification',
79 86 },
80 87 ),
81 88 migrations.CreateModel(
... ... @@ -88,8 +95,13 @@ class Migration(migrations.Migration):
88 95 ('url', models.CharField(default='', max_length=100, verbose_name='URL')),
89 96 ],
90 97 options={
91   - 'verbose_name': 'Resource',
92 98 'verbose_name_plural': 'Resources',
  99 + 'verbose_name': 'Resource',
93 100 },
94 101 ),
  102 + migrations.AddField(
  103 + model_name='action_resource',
  104 + name='resource',
  105 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Resource', verbose_name='Resource'),
  106 + ),
95 107 ]
... ...
core/migrations/0002_auto_20161115_1936.py
... ... @@ -1,50 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
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   - initial = True
13   -
14   - dependencies = [
15   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16   - ('core', '0001_initial'),
17   - ]
18   -
19   - operations = [
20   - migrations.AddField(
21   - model_name='notification',
22   - name='actor',
23   - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notification_Performer', to=settings.AUTH_USER_MODEL, verbose_name='Performer'),
24   - ),
25   - migrations.AddField(
26   - model_name='notification',
27   - name='user',
28   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_Actor', to=settings.AUTH_USER_MODEL, verbose_name='User'),
29   - ),
30   - migrations.AddField(
31   - model_name='log',
32   - name='action_resource',
33   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource'),
34   - ),
35   - migrations.AddField(
36   - model_name='log',
37   - name='user',
38   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Actor'),
39   - ),
40   - migrations.AddField(
41   - model_name='action_resource',
42   - name='action',
43   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action', verbose_name='Action_Applied'),
44   - ),
45   - migrations.AddField(
46   - model_name='action_resource',
47   - name='resource',
48   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Resource', verbose_name='Resource'),
49   - ),
50   - ]
courses/forms.py
... ... @@ -18,64 +18,30 @@ class CategoryCourseForm(forms.ModelForm):
18 18  
19 19  
20 20 class CourseForm(forms.ModelForm):
21   - def clean_end_register_date(self):
22   - init_register_date = self.cleaned_data['init_register_date']
23   - end_register_date = self.cleaned_data['end_register_date']
24   -
25   - if init_register_date and end_register_date and end_register_date < init_register_date:
26   - raise forms.ValidationError(_('The end date may not be before the start date.'))
27   - return end_register_date
28   -
29   - def clean_init_date(self):
30   - end_register_date = self.cleaned_data['end_register_date']
31   - init_date = self.cleaned_data['init_date']
32   -
33   - if end_register_date and init_date and init_date <= end_register_date:
34   - raise forms.ValidationError(_('The course start date must be after the end of registration.'))
35   - return init_date
36   -
37   - def clean_end_date(self):
38   - init_date = self.cleaned_data['init_date']
39   - end_date = self.cleaned_data['end_date']
40   -
41   - if init_date and end_date and end_date < init_date:
42   - raise forms.ValidationError(_('The end date may not be before the start date.'))
43   - return end_date
  21 +
44 22  
45 23  
46 24 class Meta:
47 25 model = Course
48   - fields = ('name', 'objectivies', 'content', 'max_students', 'init_register_date', 'end_register_date',
49   - 'init_date', 'end_date', 'category', 'coordenator','public')
  26 + fields = ('name', 'description',
  27 + 'category', 'coordenator','public')
50 28 labels = {
51 29 'name': _('Name'),
52   - 'objectivies': _('Objectives'),
53 30 'content': _('Content'),
54   - 'max_students': _('Number of studets maximum'),
55   - 'init_register_date': _('Course registration start date'),
56   - 'end_register_date': _('Course registration end date'),
57   - 'init_date': _('Course start date'),
58   - 'end_date': _('Course end date'),
59 31 'category': _('Category'),
60 32 'coordenator': _('Coordenator'),
61 33 'public':_('Public'),
62 34 }
63 35 help_texts = {
64 36 'name': _('Course name'),
65   - 'objectivies': _('Course objective'),
66 37 'content': _('Course modules'),
67   - 'max_students': _('Max number of students that a class can have'),
68   - 'init_register_date': _('Date that starts the registration period of the course (dd/mm/yyyy)'),
69   - 'end_register_date': _('Date that ends the registration period of the course (dd/mm/yyyy)'),
70   - 'init_date': _('Date that the course starts (dd/mm/yyyy)'),
71   - 'end_date': _('Date that the course ends (dd/mm/yyyy)'),
72 38 'category': _('CourseCategory which the course belongs'),
73 39 'coordenator': _('Course Coordenator'),
74 40 'public':_('To define if the course can be accessed by people not registered'),
75 41 }
76 42  
77 43 widgets = {
78   - 'ategoy': forms.Select(),
  44 + 'category': forms.Select(),
79 45 'coordenator': forms.Select(),
80 46 'content': SummernoteWidget(),
81 47 'objectivies': SummernoteWidget(),
... ... @@ -83,70 +49,31 @@ class CourseForm(forms.ModelForm):
83 49  
84 50 class UpdateCourseForm(CourseForm):
85 51  
86   - def clean_end_register_date(self):
87   - init_register_date = self.cleaned_data['init_register_date']
88   - end_register_date = self.cleaned_data['end_register_date']
89   -
90   - if init_register_date and end_register_date and end_register_date < init_register_date:
91   - raise forms.ValidationError(_('The end date may not be before the start date.'))
92   - return end_register_date
93   -
94   - def clean_init_date(self):
95   - end_register_date = self.cleaned_data['end_register_date']
96   - init_date = self.cleaned_data['init_date']
97   -
98   - if end_register_date and init_date and init_date <= end_register_date:
99   - raise forms.ValidationError(_('The course start date must be after the end of registration.'))
100   - return init_date
101   -
102   - def clean_end_date(self):
103   - init_date = self.cleaned_data['init_date']
104   - end_date = self.cleaned_data['end_date']
105   -
106   - if init_date and end_date and end_date < init_date:
107   - raise forms.ValidationError(_('The end date may not be before the start date.'))
108   - return end_date
109   -
110 52 def __init__(self, *args, **kwargs):
111 53 super(UpdateCourseForm, self).__init__(*args, **kwargs)
112   - self.fields["students"].required = False
113 54  
114 55 class Meta:
115 56 model = Course
116   - fields = ('name', 'objectivies', 'content', 'max_students', 'init_register_date', 'end_register_date',
117   - 'init_date', 'end_date', 'category','students', 'coordenator','public')
  57 + fields = ('name', 'description',
  58 + 'category', 'coordenator','public')
118 59 labels = {
119 60 'name': _('Name'),
120   - 'objectivies': _('Objectives'),
121   - 'content': _('Content'),
122   - 'max_students': _('Number of studets maximum'),
123   - 'init_register_date': _('Course registration start date'),
124   - 'end_register_date': _('Course registration end date'),
125   - 'init_date': _('Course start date'),
126   - 'end_date': _('Course end date'),
  61 + 'description': _('Description'),
127 62 'category': _('Category'),
128 63 'coordenator': _('Coordenator'),
129   - 'students': _('Student'),
130 64 'public':_('Public'),
131 65 }
132 66 help_texts = {
133 67 'name': _('Course name'),
134   - 'objectivies': _('Course objective'),
135   - 'content': _('Course modules'),
136   - 'max_students': _('Max number of students that a class can have'),
137   - 'init_register_date': _('Date that starts the registration period of the course (dd/mm/yyyy)'),
138   - 'end_register_date': _('Date that ends the registration period of the course (dd/mm/yyyy)'),
139   - 'init_date': _('Date that the course starts (dd/mm/yyyy)'),
140   - 'end_date': _('Date that the course ends (dd/mm/yyyy)'),
  68 + 'description': _('Description about the course'),
141 69 'category': _('CourseCategory which the course belongs'),
142 70 'coordenator': _('Course Coordenator'),
143   - 'students': _("Course's Students"),
144 71 'public':_('To define if the course can be accessed by people not registered'),
145 72 }
146 73 widgets = {
147   - 'categoy': forms.Select(),
  74 + 'category': forms.Select(),
148 75 'coordenator': forms.Select(),
149   - 'content': SummernoteWidget(),
  76 + 'description': SummernoteWidget(),
150 77 'objectivies': SummernoteWidget(),
151 78 }
152 79  
... ...
courses/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
  2 +# Generated by Django 1.10 on 2016-11-16 20:52
3 3 from __future__ import unicode_literals
4 4  
5 5 import autoslug.fields
  6 +from django.conf import settings
6 7 from django.db import migrations, models
7 8 import django.db.models.deletion
8 9 import s3direct.fields
... ... @@ -13,7 +14,8 @@ class Migration(migrations.Migration):
13 14 initial = True
14 15  
15 16 dependencies = [
16   - ('core', '0001_initial'),
  17 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  18 + ('core', '__first__'),
17 19 ]
18 20  
19 21 operations = [
... ... @@ -23,6 +25,7 @@ class Migration(migrations.Migration):
23 25 ('resource_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.Resource')),
24 26 ('limit_date', models.DateField(verbose_name='Deliver Date')),
25 27 ('all_students', models.BooleanField(default=False, verbose_name='All Students')),
  28 + ('students', models.ManyToManyField(related_name='activities', to=settings.AUTH_USER_MODEL, verbose_name='Students')),
26 29 ],
27 30 bases=('core.resource',),
28 31 ),
... ... @@ -32,10 +35,11 @@ class Migration(migrations.Migration):
32 35 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
33 36 ('pdf', s3direct.fields.S3DirectField()),
34 37 ('name', models.CharField(max_length=100)),
  38 + ('diet', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='courses.Activity')),
35 39 ],
36 40 options={
37   - 'verbose_name': 'Activity File',
38 41 'verbose_name_plural': 'Activitys Files',
  42 + 'verbose_name': 'Activity File',
39 43 },
40 44 ),
41 45 migrations.CreateModel(
... ... @@ -47,8 +51,8 @@ class Migration(migrations.Migration):
47 51 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
48 52 ],
49 53 options={
50   - 'verbose_name': 'Category',
51 54 'verbose_name_plural': 'Categories',
  55 + 'verbose_name': 'Category',
52 56 },
53 57 ),
54 58 migrations.CreateModel(
... ... @@ -57,20 +61,13 @@ class Migration(migrations.Migration):
57 61 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
58 62 ('name', models.CharField(max_length=100, verbose_name='Name')),
59 63 ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
60   - ('objectivies', models.TextField(blank=True, verbose_name='Objectivies')),
61   - ('content', models.TextField(blank=True, verbose_name='Content')),
62   - ('max_students', models.PositiveIntegerField(blank=True, verbose_name='Maximum Students')),
63   - ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
64   - ('init_register_date', models.DateField(verbose_name='Register Date (Begin)')),
65   - ('end_register_date', models.DateField(verbose_name='Register Date (End)')),
66   - ('init_date', models.DateField(verbose_name='Begin of Course Date')),
67   - ('end_date', models.DateField(verbose_name='End of Course Date')),
  64 + ('description', models.TextField(blank=True, verbose_name='Content')),
68 65 ('public', models.BooleanField(default=False, verbose_name='Public')),
69 66 ],
70 67 options={
71   - 'verbose_name': 'Course',
  68 + 'ordering': ('name',),
72 69 'verbose_name_plural': 'Courses',
73   - 'ordering': ('create_date', 'name'),
  70 + 'verbose_name': 'Course',
74 71 },
75 72 ),
76 73 migrations.CreateModel(
... ... @@ -82,8 +79,8 @@ class Migration(migrations.Migration):
82 79 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
83 80 ],
84 81 options={
85   - 'verbose_name': 'Category',
86 82 'verbose_name_plural': 'Categories',
  83 + 'verbose_name': 'Category',
87 84 },
88 85 ),
89 86 migrations.CreateModel(
... ... @@ -108,6 +105,7 @@ class Migration(migrations.Migration):
108 105 fields=[
109 106 ('resource_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.Resource')),
110 107 ('all_students', models.BooleanField(default=False, verbose_name='All Students')),
  108 + ('students', models.ManyToManyField(related_name='materials', to=settings.AUTH_USER_MODEL, verbose_name='Students')),
111 109 ],
112 110 bases=('core.resource',),
113 111 ),
... ... @@ -125,11 +123,13 @@ class Migration(migrations.Migration):
125 123 ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')),
126 124 ('category', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subject_category', to='courses.CategorySubject', verbose_name='Category')),
127 125 ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course')),
  126 + ('professors', models.ManyToManyField(related_name='professors_subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors')),
  127 + ('students', models.ManyToManyField(blank=True, related_name='subject_student', to=settings.AUTH_USER_MODEL, verbose_name='Students')),
128 128 ],
129 129 options={
130   - 'verbose_name': 'Subject',
131   - 'verbose_name_plural': 'Subjects',
132 130 'ordering': ('create_date', 'name'),
  131 + 'verbose_name_plural': 'Subjects',
  132 + 'verbose_name': 'Subject',
133 133 },
134 134 ),
135 135 migrations.CreateModel(
... ... @@ -142,8 +142,8 @@ class Migration(migrations.Migration):
142 142 ('subjects', models.ManyToManyField(to='courses.Subject')),
143 143 ],
144 144 options={
145   - 'verbose_name': 'subject category',
146 145 'verbose_name_plural': 'subject categories',
  146 + 'verbose_name': 'subject category',
147 147 },
148 148 ),
149 149 migrations.CreateModel(
... ... @@ -159,9 +159,39 @@ class Migration(migrations.Migration):
159 159 ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Subject', verbose_name='Subject')),
160 160 ],
161 161 options={
162   - 'verbose_name': 'Topic',
163   - 'verbose_name_plural': 'Topics',
164 162 'ordering': ('create_date', 'name'),
  163 + 'verbose_name_plural': 'Topics',
  164 + 'verbose_name': 'Topic',
165 165 },
166 166 ),
  167 + migrations.AddField(
  168 + model_name='material',
  169 + name='topic',
  170 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materials', to='courses.Topic', verbose_name='Topic'),
  171 + ),
  172 + migrations.AddField(
  173 + model_name='linkmaterial',
  174 + name='material',
  175 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_link', to='courses.Material', verbose_name='Material'),
  176 + ),
  177 + migrations.AddField(
  178 + model_name='filematerial',
  179 + name='material',
  180 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_file', to='courses.Material', verbose_name='Material'),
  181 + ),
  182 + migrations.AddField(
  183 + model_name='course',
  184 + name='category',
  185 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='course_category', to='courses.CourseCategory', verbose_name='Category'),
  186 + ),
  187 + migrations.AddField(
  188 + model_name='course',
  189 + name='coordenator',
  190 + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='course_coordenator', to=settings.AUTH_USER_MODEL, verbose_name='Coordenator'),
  191 + ),
  192 + migrations.AddField(
  193 + model_name='activity',
  194 + name='topic',
  195 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activities', to='courses.Topic', verbose_name='Topic'),
  196 + ),
167 197 ]
... ...
courses/migrations/0002_auto_20161115_1936.py
... ... @@ -1,85 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
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   - initial = True
13   -
14   - dependencies = [
15   - ('courses', '0001_initial'),
16   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
17   - ]
18   -
19   - operations = [
20   - migrations.AddField(
21   - model_name='subject',
22   - name='professors',
23   - field=models.ManyToManyField(related_name='professors_subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
24   - ),
25   - migrations.AddField(
26   - model_name='subject',
27   - name='students',
28   - field=models.ManyToManyField(blank=True, related_name='subject_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
29   - ),
30   - migrations.AddField(
31   - model_name='material',
32   - name='students',
33   - field=models.ManyToManyField(related_name='materials', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
34   - ),
35   - migrations.AddField(
36   - model_name='material',
37   - name='topic',
38   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materials', to='courses.Topic', verbose_name='Topic'),
39   - ),
40   - migrations.AddField(
41   - model_name='linkmaterial',
42   - name='material',
43   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_link', to='courses.Material', verbose_name='Material'),
44   - ),
45   - migrations.AddField(
46   - model_name='filematerial',
47   - name='material',
48   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_file', to='courses.Material', verbose_name='Material'),
49   - ),
50   - migrations.AddField(
51   - model_name='course',
52   - name='category',
53   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='course_category', to='courses.CourseCategory', verbose_name='Category'),
54   - ),
55   - migrations.AddField(
56   - model_name='course',
57   - name='coordenator',
58   - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='course_coordenator', to=settings.AUTH_USER_MODEL, verbose_name='Coordenator'),
59   - ),
60   - migrations.AddField(
61   - model_name='course',
62   - name='professors',
63   - field=models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
64   - ),
65   - migrations.AddField(
66   - model_name='course',
67   - name='students',
68   - field=models.ManyToManyField(blank=True, related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
69   - ),
70   - migrations.AddField(
71   - model_name='activityfile',
72   - name='diet',
73   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='courses.Activity'),
74   - ),
75   - migrations.AddField(
76   - model_name='activity',
77   - name='students',
78   - field=models.ManyToManyField(related_name='activities', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
79   - ),
80   - migrations.AddField(
81   - model_name='activity',
82   - name='topic',
83   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activities', to='courses.Topic', verbose_name='Topic'),
84   - ),
85   - ]
courses/models.py
... ... @@ -38,22 +38,13 @@ class Course(models.Model):
38 38  
39 39 name = models.CharField(_('Name'), max_length = 100)
40 40 slug = AutoSlugField(_("Slug"),populate_from='name',unique=True)
41   - objectivies = models.TextField(_('Objectivies'), blank = True)
42   - content = models.TextField(_('Content'), blank = True)
43   - max_students = models.PositiveIntegerField(_('Maximum Students'), blank = True)
44   - create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
45   - init_register_date = models.DateField(_('Register Date (Begin)'))
46   - end_register_date = models.DateField(_('Register Date (End)'))
47   - init_date = models.DateField(_('Begin of Course Date'))
48   - end_date = models.DateField(_('End of Course Date'))
  41 + description = models.TextField(_('Content'), blank = True)
49 42 category = models.ForeignKey(CourseCategory, verbose_name = _('Category'), related_name='course_category')
50 43 coordenator = models.ForeignKey(User, verbose_name = _('Coordenator'), related_name ='course_coordenator', null = True)
51   - professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='courses_professors')
52   - students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='courses_student', blank = True)
53 44 public = models.BooleanField(_('Public'), default=False)
54 45  
55 46 class Meta:
56   - ordering = ('create_date','name')
  47 + ordering = ('name',)
57 48 verbose_name = _('Course')
58 49 verbose_name_plural = _('Courses')
59 50  
... ...
courses/templates/course/course_card.html
... ... @@ -59,7 +59,7 @@
59 59 <div class="modal-dialog" role="document">
60 60 <div class="modal-content">
61 61 <div class="modal-header">
62   - <h4 class="modal-title">{% trans 'Repicate Course' %}</h4>
  62 + <h4 class="modal-title">{% trans 'Replicate Course' %}</h4>
63 63 </div>
64 64 <div class="modal-body">
65 65 <section>
... ...
exam/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
  2 +# Generated by Django 1.10 on 2016-11-16 20:53
3 3 from __future__ import unicode_literals
4 4  
  5 +from django.conf import settings
5 6 from django.db import migrations, models
6 7 import django.db.models.deletion
7 8  
... ... @@ -12,6 +13,7 @@ class Migration(migrations.Migration):
12 13  
13 14 dependencies = [
14 15 ('courses', '0001_initial'),
  16 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
15 17 ]
16 18  
17 19 operations = [
... ... @@ -23,9 +25,9 @@ class Migration(migrations.Migration):
23 25 ('order', models.PositiveSmallIntegerField(verbose_name='Order')),
24 26 ],
25 27 options={
  28 + 'ordering': ('order',),
26 29 'verbose_name': 'Answer',
27 30 'verbose_name_plural': 'Answers',
28   - 'ordering': ('order',),
29 31 },
30 32 ),
31 33 migrations.CreateModel(
... ... @@ -59,4 +61,14 @@ class Migration(migrations.Migration):
59 61 name='exam',
60 62 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student_exam', to='exam.Exam', verbose_name='Exam'),
61 63 ),
  64 + migrations.AddField(
  65 + model_name='answersstudent',
  66 + name='student',
  67 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL, verbose_name='Student'),
  68 + ),
  69 + migrations.AddField(
  70 + model_name='answer',
  71 + name='exam',
  72 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='exam.Exam', verbose_name='Answers'),
  73 + ),
62 74 ]
... ...
exam/migrations/0002_auto_20161115_1936.py
... ... @@ -1,30 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
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   - initial = True
13   -
14   - dependencies = [
15   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16   - ('exam', '0001_initial'),
17   - ]
18   -
19   - operations = [
20   - migrations.AddField(
21   - model_name='answersstudent',
22   - name='student',
23   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL, verbose_name='Student'),
24   - ),
25   - migrations.AddField(
26   - model_name='answer',
27   - name='exam',
28   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='exam.Exam', verbose_name='Answers'),
29   - ),
30   - ]
exercise/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
  2 +# Generated by Django 1.10 on 2016-11-16 20:53
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.db import migrations, models
... ...
files/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
  2 +# Generated by Django 1.10 on 2016-11-16 20:54
3 3 from __future__ import unicode_literals
4 4  
  5 +from django.conf import settings
5 6 from django.db import migrations, models
6 7 import django.db.models.deletion
7 8 import files.models
... ... @@ -12,6 +13,7 @@ class Migration(migrations.Migration):
12 13 initial = True
13 14  
14 15 dependencies = [
  16 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
15 17 ('courses', '0001_initial'),
16 18 ('core', '0001_initial'),
17 19 ]
... ... @@ -24,11 +26,12 @@ class Migration(migrations.Migration):
24 26 ('description', models.TextField(blank=True, verbose_name='Description')),
25 27 ('file_url', models.FileField(upload_to=files.models.file_path, verbose_name='File')),
26 28 ('file_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='topic_files', to='core.MimeType', verbose_name='Type file')),
  29 + ('professor', models.ManyToManyField(related_name='file_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors')),
27 30 ],
28 31 options={
29   - 'verbose_name': 'File',
30   - 'verbose_name_plural': 'Files',
31 32 'ordering': ('-id',),
  33 + 'verbose_name_plural': 'Files',
  34 + 'verbose_name': 'File',
32 35 },
33 36 bases=('courses.material',),
34 37 ),
... ...
files/migrations/0002_topicfile_professor.py
... ... @@ -1,24 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
3   -from __future__ import unicode_literals
4   -
5   -from django.conf import settings
6   -from django.db import migrations, models
7   -
8   -
9   -class Migration(migrations.Migration):
10   -
11   - initial = True
12   -
13   - dependencies = [
14   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
15   - ('files', '0001_initial'),
16   - ]
17   -
18   - operations = [
19   - migrations.AddField(
20   - model_name='topicfile',
21   - name='professor',
22   - field=models.ManyToManyField(related_name='file_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
23   - ),
24   - ]
forum/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
  2 +# Generated by Django 1.10 on 2016-11-16 20:54
3 3 from __future__ import unicode_literals
4 4  
  5 +from django.conf import settings
5 6 from django.db import migrations, models
6 7 import django.db.models.deletion
7 8  
... ... @@ -11,6 +12,7 @@ class Migration(migrations.Migration):
11 12 initial = True
12 13  
13 14 dependencies = [
  15 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
14 16 ('courses', '0001_initial'),
15 17 ]
16 18  
... ... @@ -36,6 +38,8 @@ class Migration(migrations.Migration):
36 38 ('message', models.TextField(verbose_name='Post message')),
37 39 ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')),
38 40 ('post_date', models.DateTimeField(auto_now_add=True, verbose_name='Post Date')),
  41 + ('forum', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Forum', verbose_name='Forum')),
  42 + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor')),
39 43 ],
40 44 options={
41 45 'verbose_name': 'Post',
... ... @@ -50,6 +54,7 @@ class Migration(migrations.Migration):
50 54 ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')),
51 55 ('answer_date', models.DateTimeField(auto_now_add=True, verbose_name='Answer Date')),
52 56 ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Post', verbose_name='Post')),
  57 + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor')),
53 58 ],
54 59 options={
55 60 'verbose_name': 'Post Answer',
... ...
forum/migrations/0002_auto_20161115_1936.py
... ... @@ -1,35 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
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   - initial = True
13   -
14   - dependencies = [
15   - ('forum', '0001_initial'),
16   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
17   - ]
18   -
19   - operations = [
20   - migrations.AddField(
21   - model_name='postanswer',
22   - name='user',
23   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor'),
24   - ),
25   - migrations.AddField(
26   - model_name='post',
27   - name='forum',
28   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Forum', verbose_name='Forum'),
29   - ),
30   - migrations.AddField(
31   - model_name='post',
32   - name='user',
33   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor'),
34   - ),
35   - ]
links/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
  2 +# Generated by Django 1.10 on 2016-11-16 20:54
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.db import migrations, models
... ...
poll/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
  2 +# Generated by Django 1.10 on 2016-11-16 20:54
3 3 from __future__ import unicode_literals
4 4  
  5 +from django.conf import settings
5 6 from django.db import migrations, models
6 7 import django.db.models.deletion
7 8  
... ... @@ -11,6 +12,7 @@ class Migration(migrations.Migration):
11 12 initial = True
12 13  
13 14 dependencies = [
  15 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
14 16 ('courses', '0001_initial'),
15 17 ]
16 18  
... ... @@ -57,4 +59,14 @@ class Migration(migrations.Migration):
57 59 name='poll',
58 60 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers_stundet', to='poll.Poll', verbose_name='Poll'),
59 61 ),
  62 + migrations.AddField(
  63 + model_name='answersstudent',
  64 + name='student',
  65 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers_stundent', to=settings.AUTH_USER_MODEL, verbose_name='Student'),
  66 + ),
  67 + migrations.AddField(
  68 + model_name='answer',
  69 + name='poll',
  70 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='poll.Poll', verbose_name='Answers'),
  71 + ),
60 72 ]
... ...
poll/migrations/0002_auto_20161115_1936.py
... ... @@ -1,30 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
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   - initial = True
13   -
14   - dependencies = [
15   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16   - ('poll', '0001_initial'),
17   - ]
18   -
19   - operations = [
20   - migrations.AddField(
21   - model_name='answersstudent',
22   - name='student',
23   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers_stundent', to=settings.AUTH_USER_MODEL, verbose_name='Student'),
24   - ),
25   - migrations.AddField(
26   - model_name='answer',
27   - name='poll',
28   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='poll.Poll', verbose_name='Answers'),
29   - ),
30   - ]
users/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:36
  2 +# Generated by Django 1.10 on 2016-11-16 20:54
3 3 from __future__ import unicode_literals
4 4  
5 5 import django.contrib.auth.models
... ... @@ -30,14 +30,14 @@ class Migration(migrations.Migration):
30 30 ('city', models.CharField(blank=True, max_length=90, verbose_name='City')),
31 31 ('state', models.CharField(blank=True, max_length=30, verbose_name='State')),
32 32 ('gender', models.CharField(choices=[('M', 'Male'), ('F', 'Female')], max_length=1, verbose_name='Gender')),
33   - ('image', models.ImageField(blank=True, null=True, upload_to='users/', verbose_name='Image')),
34   - ('birth_date', models.DateField(verbose_name='Birth Date')),
  33 + ('image', models.ImageField(blank=True, null=True, upload_to='users/', verbose_name='Photo')),
  34 + ('birth_date', models.DateField(null=True, verbose_name='Birth Date')),
35 35 ('phone', models.CharField(blank=True, max_length=30, verbose_name='Phone')),
36   - ('cpf', models.CharField(max_length=15, verbose_name='Cpf')),
  36 + ('cpf', models.CharField(blank=True, max_length=15, null=True, verbose_name='CPF')),
37 37 ('type_profile', models.IntegerField(blank=True, choices=[(1, 'Professor'), (2, 'Student')], default=2, null=True, verbose_name='Type')),
38 38 ('titration', models.CharField(blank=True, max_length=50, null=True, verbose_name='Titration')),
39 39 ('year_titration', models.CharField(blank=True, max_length=4, null=True, verbose_name='Year of titration')),
40   - ('institution', models.CharField(blank=True, max_length=50, null=True, verbose_name='Institution where he had titration')),
  40 + ('institution', models.CharField(blank=True, max_length=50, null=True, verbose_name='Institution')),
41 41 ('curriculum', models.FileField(blank=True, null=True, upload_to='users/curriculum/', verbose_name='Curriculum')),
42 42 ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Create Date')),
43 43 ('is_staff', models.BooleanField(default=False, verbose_name='Administrador')),
... ...
users/migrations/0002_auto_20161115_1941.py
... ... @@ -1,20 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 22:41
3   -from __future__ import unicode_literals
4   -
5   -from django.db import migrations, models
6   -
7   -
8   -class Migration(migrations.Migration):
9   -
10   - dependencies = [
11   - ('users', '0001_initial'),
12   - ]
13   -
14   - operations = [
15   - migrations.AlterField(
16   - model_name='user',
17   - name='birth_date',
18   - field=models.DateField(null=True, verbose_name='Birth Date'),
19   - ),
20   - ]
users/migrations/0003_auto_20161115_2054.py
... ... @@ -1,30 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-15 23:54
3   -from __future__ import unicode_literals
4   -
5   -from django.db import migrations, models
6   -
7   -
8   -class Migration(migrations.Migration):
9   -
10   - dependencies = [
11   - ('users', '0002_auto_20161115_1941'),
12   - ]
13   -
14   - operations = [
15   - migrations.AlterField(
16   - model_name='user',
17   - name='cpf',
18   - field=models.CharField(blank=True, max_length=15, null=True, verbose_name='CPF'),
19   - ),
20   - migrations.AlterField(
21   - model_name='user',
22   - name='image',
23   - field=models.ImageField(blank=True, null=True, upload_to='users/', verbose_name='Photo'),
24   - ),
25   - migrations.AlterField(
26   - model_name='user',
27   - name='institution',
28   - field=models.CharField(blank=True, max_length=50, null=True, verbose_name='Institution'),
29   - ),
30   - ]