Commit 7522fcafc2eb15a5fbeca6237ba09e1127173c51
Exists in
master
and in
5 other branches
conflit
Showing
29 changed files
with
503 additions
and
61 deletions
Show diff stats
app/migrations/0001_initial.py
1 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | -# Generated by Django 1.10 on 2016-11-17 03:09 | 2 | + |
3 | +# Generated by Django 1.10 on 2016-11-15 22:36 | ||
3 | from __future__ import unicode_literals | 4 | from __future__ import unicode_literals |
4 | 5 | ||
5 | from django.db import migrations, models | 6 | from django.db import migrations, models |
@@ -23,7 +24,7 @@ class Migration(migrations.Migration): | @@ -23,7 +24,7 @@ class Migration(migrations.Migration): | ||
23 | ('username', models.CharField(max_length=30, verbose_name='Email host username')), | 24 | ('username', models.CharField(max_length=30, verbose_name='Email host username')), |
24 | ('password', models.CharField(blank=True, max_length=30, verbose_name='Email host password')), | 25 | ('password', models.CharField(blank=True, max_length=30, verbose_name='Email host password')), |
25 | ('safe_conection', models.IntegerField(choices=[(0, 'No'), (1, 'TLS, if available'), (2, 'TLS'), (3, 'SSL')], default=0, verbose_name='Use safe conection')), | 26 | ('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(max_length=254, verbose_name='Default from email')), | 27 | + ('default_from_email', models.EmailField(blank=True, max_length=254, verbose_name='Default from email')), |
27 | ], | 28 | ], |
28 | options={ | 29 | options={ |
29 | 'verbose_name': 'Amadeus SMTP setting', | 30 | 'verbose_name': 'Amadeus SMTP setting', |
@@ -0,0 +1,20 @@ | @@ -0,0 +1,20 @@ | ||
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
@@ -0,0 +1,50 @@ | @@ -0,0 +1,50 @@ | ||
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/context_processors.py
@@ -8,9 +8,6 @@ def courses(request): | @@ -8,9 +8,6 @@ def courses(request): | ||
8 | if request.user.is_staff: | 8 | if request.user.is_staff: |
9 | context['courses_list'] = Course.objects.all() | 9 | context['courses_list'] = Course.objects.all() |
10 | else: | 10 | else: |
11 | - #context['courses_list'] = | ||
12 | - context['courses_list'] = Course.objects.all() | ||
13 | - | ||
14 | - #context['courses_list'] = Course.objects.filter(professors__in = [request.user]) | 11 | + context['courses_list'] = Course.objects.filter(professors__in = [request.user]) |
15 | return context | 12 | return context |
16 | return context | 13 | return context |
courses/forms.py
@@ -18,30 +18,64 @@ class CategoryCourseForm(forms.ModelForm): | @@ -18,30 +18,64 @@ class CategoryCourseForm(forms.ModelForm): | ||
18 | 18 | ||
19 | 19 | ||
20 | class CourseForm(forms.ModelForm): | 20 | class CourseForm(forms.ModelForm): |
21 | - | 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 | ||
22 | 44 | ||
23 | 45 | ||
24 | class Meta: | 46 | class Meta: |
25 | model = Course | 47 | model = Course |
26 | - fields = ('name', 'description', | ||
27 | - 'category', 'coordenator','public') | 48 | + fields = ('name', 'objectivies', 'content', 'max_students', 'init_register_date', 'end_register_date', |
49 | + 'init_date', 'end_date', 'category', 'coordenator','public') | ||
28 | labels = { | 50 | labels = { |
29 | 'name': _('Name'), | 51 | 'name': _('Name'), |
52 | + 'objectivies': _('Objectives'), | ||
30 | 'content': _('Content'), | 53 | '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'), | ||
31 | 'category': _('Category'), | 59 | 'category': _('Category'), |
32 | 'coordenator': _('Coordenator'), | 60 | 'coordenator': _('Coordenator'), |
33 | 'public':_('Public'), | 61 | 'public':_('Public'), |
34 | } | 62 | } |
35 | help_texts = { | 63 | help_texts = { |
36 | 'name': _('Course name'), | 64 | 'name': _('Course name'), |
65 | + 'objectivies': _('Course objective'), | ||
37 | 'content': _('Course modules'), | 66 | '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)'), | ||
38 | 'category': _('CourseCategory which the course belongs'), | 72 | 'category': _('CourseCategory which the course belongs'), |
39 | 'coordenator': _('Course Coordenator'), | 73 | 'coordenator': _('Course Coordenator'), |
40 | 'public':_('To define if the course can be accessed by people not registered'), | 74 | 'public':_('To define if the course can be accessed by people not registered'), |
41 | } | 75 | } |
42 | 76 | ||
43 | widgets = { | 77 | widgets = { |
44 | - 'category': forms.Select(), | 78 | + 'ategoy': forms.Select(), |
45 | 'coordenator': forms.Select(), | 79 | 'coordenator': forms.Select(), |
46 | 'content': SummernoteWidget(), | 80 | 'content': SummernoteWidget(), |
47 | 'objectivies': SummernoteWidget(), | 81 | 'objectivies': SummernoteWidget(), |
@@ -49,31 +83,70 @@ class CourseForm(forms.ModelForm): | @@ -49,31 +83,70 @@ class CourseForm(forms.ModelForm): | ||
49 | 83 | ||
50 | class UpdateCourseForm(CourseForm): | 84 | class UpdateCourseForm(CourseForm): |
51 | 85 | ||
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 | + | ||
52 | def __init__(self, *args, **kwargs): | 110 | def __init__(self, *args, **kwargs): |
53 | super(UpdateCourseForm, self).__init__(*args, **kwargs) | 111 | super(UpdateCourseForm, self).__init__(*args, **kwargs) |
112 | + self.fields["students"].required = False | ||
54 | 113 | ||
55 | class Meta: | 114 | class Meta: |
56 | model = Course | 115 | model = Course |
57 | - fields = ('name', 'description', | ||
58 | - 'category', 'coordenator','public') | 116 | + fields = ('name', 'objectivies', 'content', 'max_students', 'init_register_date', 'end_register_date', |
117 | + 'init_date', 'end_date', 'category','students', 'coordenator','public') | ||
59 | labels = { | 118 | labels = { |
60 | 'name': _('Name'), | 119 | 'name': _('Name'), |
61 | - 'description': _('Description'), | 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'), | ||
62 | 'category': _('Category'), | 127 | 'category': _('Category'), |
63 | 'coordenator': _('Coordenator'), | 128 | 'coordenator': _('Coordenator'), |
129 | + 'students': _('Student'), | ||
64 | 'public':_('Public'), | 130 | 'public':_('Public'), |
65 | } | 131 | } |
66 | help_texts = { | 132 | help_texts = { |
67 | 'name': _('Course name'), | 133 | 'name': _('Course name'), |
68 | - 'description': _('Description about the course'), | 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)'), | ||
69 | 'category': _('CourseCategory which the course belongs'), | 141 | 'category': _('CourseCategory which the course belongs'), |
70 | 'coordenator': _('Course Coordenator'), | 142 | 'coordenator': _('Course Coordenator'), |
143 | + 'students': _("Course's Students"), | ||
71 | 'public':_('To define if the course can be accessed by people not registered'), | 144 | 'public':_('To define if the course can be accessed by people not registered'), |
72 | } | 145 | } |
73 | widgets = { | 146 | widgets = { |
74 | - 'category': forms.Select(), | 147 | + 'categoy': forms.Select(), |
75 | 'coordenator': forms.Select(), | 148 | 'coordenator': forms.Select(), |
76 | - 'description': SummernoteWidget(), | 149 | + 'content': SummernoteWidget(), |
77 | 'objectivies': SummernoteWidget(), | 150 | 'objectivies': SummernoteWidget(), |
78 | } | 151 | } |
79 | 152 |
courses/migrations/0001_initial.py
1 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | -# Generated by Django 1.10 on 2016-11-17 03:09 | 2 | + |
3 | +# Generated by Django 1.10 on 2016-11-15 22:36 | ||
3 | from __future__ import unicode_literals | 4 | from __future__ import unicode_literals |
4 | 5 | ||
5 | import autoslug.fields | 6 | import autoslug.fields |
@@ -57,13 +58,20 @@ class Migration(migrations.Migration): | @@ -57,13 +58,20 @@ class Migration(migrations.Migration): | ||
57 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | 58 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
58 | ('name', models.CharField(max_length=100, verbose_name='Name')), | 59 | ('name', models.CharField(max_length=100, verbose_name='Name')), |
59 | ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), | 60 | ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), |
60 | - ('description', models.TextField(blank=True, verbose_name='Content')), | 61 | + ('objectivies', models.TextField(blank=True, verbose_name='Objectivies')), |
62 | + ('content', models.TextField(blank=True, verbose_name='Content')), | ||
63 | + ('max_students', models.PositiveIntegerField(blank=True, verbose_name='Maximum Students')), | ||
64 | + ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')), | ||
65 | + ('init_register_date', models.DateField(verbose_name='Register Date (Begin)')), | ||
66 | + ('end_register_date', models.DateField(verbose_name='Register Date (End)')), | ||
67 | + ('init_date', models.DateField(verbose_name='Begin of Course Date')), | ||
68 | + ('end_date', models.DateField(verbose_name='End of Course Date')), | ||
61 | ('public', models.BooleanField(default=False, verbose_name='Public')), | 69 | ('public', models.BooleanField(default=False, verbose_name='Public')), |
62 | ], | 70 | ], |
63 | options={ | 71 | options={ |
64 | 'verbose_name': 'Course', | 72 | 'verbose_name': 'Course', |
65 | - 'ordering': ('name',), | ||
66 | 'verbose_name_plural': 'Courses', | 73 | 'verbose_name_plural': 'Courses', |
74 | + 'ordering': ('create_date', 'name'), | ||
67 | }, | 75 | }, |
68 | ), | 76 | ), |
69 | migrations.CreateModel( | 77 | migrations.CreateModel( |
@@ -121,8 +129,8 @@ class Migration(migrations.Migration): | @@ -121,8 +129,8 @@ class Migration(migrations.Migration): | ||
121 | ], | 129 | ], |
122 | options={ | 130 | options={ |
123 | 'verbose_name': 'Subject', | 131 | 'verbose_name': 'Subject', |
124 | - 'ordering': ('create_date', 'name'), | ||
125 | 'verbose_name_plural': 'Subjects', | 132 | 'verbose_name_plural': 'Subjects', |
133 | + 'ordering': ('create_date', 'name'), | ||
126 | }, | 134 | }, |
127 | ), | 135 | ), |
128 | migrations.CreateModel( | 136 | migrations.CreateModel( |
@@ -153,8 +161,8 @@ class Migration(migrations.Migration): | @@ -153,8 +161,8 @@ class Migration(migrations.Migration): | ||
153 | ], | 161 | ], |
154 | options={ | 162 | options={ |
155 | 'verbose_name': 'Topic', | 163 | 'verbose_name': 'Topic', |
156 | - 'ordering': ('create_date', 'name'), | ||
157 | 'verbose_name_plural': 'Topics', | 164 | 'verbose_name_plural': 'Topics', |
165 | + 'ordering': ('create_date', 'name'), | ||
158 | }, | 166 | }, |
159 | ), | 167 | ), |
160 | ] | 168 | ] |
@@ -0,0 +1,85 @@ | @@ -0,0 +1,85 @@ | ||
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,13 +38,22 @@ class Course(models.Model): | @@ -38,13 +38,22 @@ class Course(models.Model): | ||
38 | 38 | ||
39 | name = models.CharField(_('Name'), max_length = 100) | 39 | name = models.CharField(_('Name'), max_length = 100) |
40 | slug = AutoSlugField(_("Slug"),populate_from='name',unique=True) | 40 | slug = AutoSlugField(_("Slug"),populate_from='name',unique=True) |
41 | - description = models.TextField(_('Content'), blank = 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')) | ||
42 | category = models.ForeignKey(CourseCategory, verbose_name = _('Category'), related_name='course_category') | 49 | category = models.ForeignKey(CourseCategory, verbose_name = _('Category'), related_name='course_category') |
43 | coordenator = models.ForeignKey(User, verbose_name = _('Coordenator'), related_name ='course_coordenator', null = True) | 50 | 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) | ||
44 | public = models.BooleanField(_('Public'), default=False) | 53 | public = models.BooleanField(_('Public'), default=False) |
45 | 54 | ||
46 | class Meta: | 55 | class Meta: |
47 | - ordering = ('name',) | 56 | + ordering = ('create_date','name') |
48 | verbose_name = _('Course') | 57 | verbose_name = _('Course') |
49 | verbose_name_plural = _('Courses') | 58 | verbose_name_plural = _('Courses') |
50 | 59 |
courses/permissions.py
@@ -6,10 +6,10 @@ def view_topic(role, user, topic): | @@ -6,10 +6,10 @@ def view_topic(role, user, topic): | ||
6 | if (role == SystemAdmin): | 6 | if (role == SystemAdmin): |
7 | return True | 7 | return True |
8 | 8 | ||
9 | - if user in topic.subject.professors.all(): | 9 | + if (user in topic.subject.course.professors.all() and user in topic.subject.professors.all()): |
10 | return True | 10 | return True |
11 | 11 | ||
12 | - if user in topic.subject.students.all(): | 12 | + if (user in topic.subject.course.students.all() and user in topic.subject.students.all()): |
13 | return True | 13 | return True |
14 | 14 | ||
15 | return False | 15 | return False |
@@ -29,10 +29,10 @@ def view_subject(role, user, subject): | @@ -29,10 +29,10 @@ def view_subject(role, user, subject): | ||
29 | if (role == SystemAdmin): | 29 | if (role == SystemAdmin): |
30 | return True | 30 | return True |
31 | 31 | ||
32 | - if user in subject.professors.all(): | 32 | + if (user in subject.course.professors.all() and user in subject.professors.all()): |
33 | return True | 33 | return True |
34 | 34 | ||
35 | - if user in subject.students.all(): | 35 | + if (user in subject.course.students.all() and user in subject.students.all()): |
36 | return True | 36 | return True |
37 | 37 | ||
38 | return False | 38 | return False |
courses/templates/course/course_card.html
@@ -35,14 +35,21 @@ | @@ -35,14 +35,21 @@ | ||
35 | <div class="panel-body"> | 35 | <div class="panel-body"> |
36 | <p><b>{% trans 'Course Name' %}: </b>{{course.name}}</p> | 36 | <p><b>{% trans 'Course Name' %}: </b>{{course.name}}</p> |
37 | <p><b>{% trans 'Coordenator' %}: </b>{{course.coordenator}}</p> | 37 | <p><b>{% trans 'Coordenator' %}: </b>{{course.coordenator}}</p> |
38 | - | 38 | + <p><b>{% trans 'Professor' %}: </b>{{course.professors.all.0}}</p> |
39 | <p> | 39 | <p> |
40 | <b>{% trans 'Description' %}:</b> | 40 | <b>{% trans 'Description' %}:</b> |
41 | <i> | 41 | <i> |
42 | - {{course.description | safe }} | 42 | + {{course.content | safe }} |
43 | </i> | 43 | </i> |
44 | </p> | 44 | </p> |
45 | - | 45 | + <div class="row"> |
46 | + <div class="col-xs-6 col-md-6 data_register_course"> | ||
47 | + <p><b>{% trans 'Init register' %}: </b>{{course.init_register_date}}</p> | ||
48 | + </div> | ||
49 | + <div class="col-xs-6 col-md-6 data_register_course"> | ||
50 | + <p><b>{% trans 'End register' %}: </b>{{course.end_register_date}}</p> | ||
51 | + </div> | ||
52 | + </div> | ||
46 | </div> | 53 | </div> |
47 | </div> | 54 | </div> |
48 | </div> | 55 | </div> |
@@ -52,7 +59,7 @@ | @@ -52,7 +59,7 @@ | ||
52 | <div class="modal-dialog" role="document"> | 59 | <div class="modal-dialog" role="document"> |
53 | <div class="modal-content"> | 60 | <div class="modal-content"> |
54 | <div class="modal-header"> | 61 | <div class="modal-header"> |
55 | - <h4 class="modal-title">{% trans 'Replicate Course' %}</h4> | 62 | + <h4 class="modal-title">{% trans 'Repicate Course' %}</h4> |
56 | </div> | 63 | </div> |
57 | <div class="modal-body"> | 64 | <div class="modal-body"> |
58 | <section> | 65 | <section> |
courses/templates/course/index.html
@@ -52,9 +52,9 @@ | @@ -52,9 +52,9 @@ | ||
52 | </div> | 52 | </div> |
53 | <div id="{{category.slug}}" class="panel-collapse collapse"> | 53 | <div id="{{category.slug}}" class="panel-collapse collapse"> |
54 | {% for course in category.course_category %} | 54 | {% for course in category.course_category %} |
55 | - | ||
56 | - {% include "course/course_card.html" %} | ||
57 | - | 55 | + {# {% if user in course.students.all or user in course.professors.all or user|has_role:'system_admin' %}#} |
56 | + {% include "course/course_card.html" %} | ||
57 | + {# {% endif %}#} | ||
58 | {% endfor %} | 58 | {% endfor %} |
59 | </div> | 59 | </div> |
60 | </div> | 60 | </div> |
courses/templates/course/view.html
@@ -48,13 +48,21 @@ | @@ -48,13 +48,21 @@ | ||
48 | </div> | 48 | </div> |
49 | <div class="panel-body"> | 49 | <div class="panel-body"> |
50 | <p><b>{% trans 'Coordinator' %}: </b>{{course.coordenator}}</p> | 50 | <p><b>{% trans 'Coordinator' %}: </b>{{course.coordenator}}</p> |
51 | + <p><b>{% trans 'Teacher' %}: </b>{{course.professors.all.0}}</p> | ||
51 | <p> | 52 | <p> |
52 | <b>{% trans 'Description' %}:</b> | 53 | <b>{% trans 'Description' %}:</b> |
53 | <i> | 54 | <i> |
54 | - {{ course.description |safe }} | 55 | + {{ course.objectivies |safe }} |
55 | </i> | 56 | </i> |
56 | </p> | 57 | </p> |
57 | - | 58 | + <div class="row"> |
59 | + <div class="col-xs-6 col-md-6 data_register_course"> | ||
60 | + <p><b>{% trans 'Begin of Course Date' %}: </b>{{course.init_date}}</p> | ||
61 | + </div> | ||
62 | + <div class="col-xs-6 col-md-6 data_register_course"> | ||
63 | + <p><b>{% trans 'End of Course Date' %}: </b>{{course.end_date}}</p> | ||
64 | + </div> | ||
65 | + </div> | ||
58 | </div> | 66 | </div> |
59 | </div> | 67 | </div> |
60 | 68 |
courses/templatetags/course_value_field.py
@@ -11,12 +11,28 @@ def value_field(course, field): | @@ -11,12 +11,28 @@ def value_field(course, field): | ||
11 | value = "" | 11 | value = "" |
12 | if field == 'name': | 12 | if field == 'name': |
13 | value = course.name | 13 | value = course.name |
14 | + elif field == 'objectivies': | ||
15 | + value = course.objectivies | ||
14 | elif field == 'content': | 16 | elif field == 'content': |
15 | value = course.content | 17 | value = course.content |
18 | + elif field == 'max_students': | ||
19 | + value = course.max_students | ||
20 | + elif field == 'init_register_date': | ||
21 | + value = course.init_register_date | ||
22 | + elif field == 'end_register_date': | ||
23 | + value = course.end_register_date | ||
24 | + elif field == 'init_date': | ||
25 | + value = course.init_date | ||
26 | + elif field == 'end_date': | ||
27 | + value = course.end_date | ||
16 | elif field == 'coordenator': | 28 | elif field == 'coordenator': |
17 | value = course.coordenator | 29 | value = course.coordenator |
18 | elif field == 'category': | 30 | elif field == 'category': |
19 | value = course.category | 31 | value = course.category |
32 | + elif field == 'professors': | ||
33 | + value = course.professors.all() | ||
34 | + elif field == 'students': | ||
35 | + value = course.students.all() | ||
20 | elif field == 'public': | 36 | elif field == 'public': |
21 | value = course.public | 37 | value = course.public |
22 | 38 |
courses/templatetags/custom_filters.py
@@ -8,8 +8,9 @@ def hide_subscribe_view_btn(user, subject): | @@ -8,8 +8,9 @@ def hide_subscribe_view_btn(user, subject): | ||
8 | if not user is None: | 8 | if not user is None: |
9 | if user.is_authenticated: | 9 | if user.is_authenticated: |
10 | if has_role(user, 'student') and not user.is_staff: | 10 | if has_role(user, 'student') and not user.is_staff: |
11 | - if user in subject.students.all(): | ||
12 | - return True | 11 | + if user in subject.course.students.all(): |
12 | + if not user in subject.students.all(): | ||
13 | + return True | ||
13 | else: | 14 | else: |
14 | return True | 15 | return True |
15 | 16 | ||
@@ -20,7 +21,7 @@ def show_subject_subscribe(user, subject): | @@ -20,7 +21,7 @@ def show_subject_subscribe(user, subject): | ||
20 | if not user is None: | 21 | if not user is None: |
21 | if user.is_authenticated: | 22 | if user.is_authenticated: |
22 | if has_role(user, 'student') and not user.is_staff: | 23 | if has_role(user, 'student') and not user.is_staff: |
23 | - if not user in subject.students.all() and subject.show_subscribe: | 24 | + if not user in subject.students.all() and user in subject.course.students.all() and subject.show_subscribe: |
24 | return True | 25 | return True |
25 | 26 | ||
26 | return False | 27 | return False |
courses/views.py
@@ -56,7 +56,7 @@ def course_category(list_courses): | @@ -56,7 +56,7 @@ def course_category(list_courses): | ||
56 | if (cat): | 56 | if (cat): |
57 | categorys_courses.append(cat) | 57 | categorys_courses.append(cat) |
58 | 58 | ||
59 | - return categorys_courses | 59 | + return sorted(list(categorys_courses),key = lambda x:x.name) |
60 | 60 | ||
61 | class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): | 61 | class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): |
62 | 62 | ||
@@ -91,9 +91,13 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): | @@ -91,9 +91,13 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): | ||
91 | list_courses = None | 91 | list_courses = None |
92 | if has_role(self.request.user,'system_admin'): | 92 | if has_role(self.request.user,'system_admin'): |
93 | list_courses = self.get_queryset().order_by('name') | 93 | list_courses = self.get_queryset().order_by('name') |
94 | - else: | ||
95 | - list_courses = self.get_queryset().all() | ||
96 | - | 94 | + # categorys_courses = CourseCategory.objects.all() |
95 | + elif has_role(self.request.user,'professor'): | ||
96 | + list_courses = self.get_queryset().filter(professors__in = [self.request.user]).order_by('name') | ||
97 | + # categorys_courses = CourseCategory.objects.filter(course_category__professors__name = self.request.user.name).distinct() | ||
98 | + elif has_role(self.request.user, 'student'): | ||
99 | + list_courses = self.get_queryset().filter(students__in = [self.request.user]).order_by('name') | ||
100 | + | ||
97 | context['categorys_courses'] = course_category(list_courses) | 101 | context['categorys_courses'] = course_category(list_courses) |
98 | return context | 102 | return context |
99 | 103 | ||
@@ -132,6 +136,7 @@ class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView): | @@ -132,6 +136,7 @@ class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView): | ||
132 | list_courses = self.get_queryset() | 136 | list_courses = self.get_queryset() |
133 | 137 | ||
134 | context['categorys_courses'] = course_category(list_courses) | 138 | context['categorys_courses'] = course_category(list_courses) |
139 | + | ||
135 | return context | 140 | return context |
136 | 141 | ||
137 | class CreateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin, generic.edit.CreateView): | 142 | class CreateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin, generic.edit.CreateView): |
@@ -357,6 +362,10 @@ class CourseView(LogMixin, NotificationMixin, generic.DetailView): | @@ -357,6 +362,10 @@ class CourseView(LogMixin, NotificationMixin, generic.DetailView): | ||
357 | 362 | ||
358 | if has_role(self.request.user,'system_admin'): | 363 | if has_role(self.request.user,'system_admin'): |
359 | courses = Course.objects.all() | 364 | courses = Course.objects.all() |
365 | + elif has_role(self.request.user,'professor'): | ||
366 | + courses = self.request.user.courses_professors.all() | ||
367 | + elif has_role(self.request.user, 'student'): | ||
368 | + courses = self.request.user.courses_student.all() | ||
360 | else: | 369 | else: |
361 | courses = Course.objects.filter(public = True) | 370 | courses = Course.objects.filter(public = True) |
362 | 371 | ||
@@ -673,7 +682,7 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMi | @@ -673,7 +682,7 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMi | ||
673 | action = super(CreateTopicView, self).createorRetrieveAction("create Topic") | 682 | action = super(CreateTopicView, self).createorRetrieveAction("create Topic") |
674 | super(CreateTopicView, self).createNotification("Topic "+ self.object.name + " was created", | 683 | super(CreateTopicView, self).createNotification("Topic "+ self.object.name + " was created", |
675 | resource_name=self.object.name, resource_link= reverse('course:view_topic',args=[self.object.slug]), | 684 | resource_name=self.object.name, resource_link= reverse('course:view_topic',args=[self.object.slug]), |
676 | - actor=self.request.user, users = self.object.subject.students.all() ) | 685 | + actor=self.request.user, users = self.object.subject.course.students.all() ) |
677 | 686 | ||
678 | self.log_context['topic_id'] = self.object.id | 687 | self.log_context['topic_id'] = self.object.id |
679 | self.log_context['topic_name'] = self.object.name | 688 | self.log_context['topic_name'] = self.object.name |
@@ -777,7 +786,7 @@ class CreateSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, Notification | @@ -777,7 +786,7 @@ class CreateSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, Notification | ||
777 | self.object.professors.add(self.request.user) | 786 | self.object.professors.add(self.request.user) |
778 | if self.object.visible: | 787 | if self.object.visible: |
779 | super(CreateSubjectView, self).createNotification( " created subject " + self.object.name, resource_name=self.object.name, | 788 | super(CreateSubjectView, self).createNotification( " created subject " + self.object.name, resource_name=self.object.name, |
780 | - resource_slug = self.object.slug, actor=self.request.user, | 789 | + resource_slug = self.object.slug, actor=self.request.user, users= self.object.course.students.all(), |
781 | resource_link = reverse('course:view_subject', args=[self.object.slug])) | 790 | resource_link = reverse('course:view_subject', args=[self.object.slug])) |
782 | 791 | ||
783 | self.log_context['subject_id'] = self.object.id | 792 | self.log_context['subject_id'] = self.object.id |
@@ -890,7 +899,7 @@ class DeleteSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.Dele | @@ -890,7 +899,7 @@ class DeleteSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.Dele | ||
890 | def subscribe_subject(request, slug): | 899 | def subscribe_subject(request, slug): |
891 | subject = get_object_or_404(Subject, slug = slug) | 900 | subject = get_object_or_404(Subject, slug = slug) |
892 | 901 | ||
893 | - if request.user not in subject.students.all(): | 902 | + if request.user in subject.course.students.all(): |
894 | subject.students.add(request.user) | 903 | subject.students.add(request.user) |
895 | 904 | ||
896 | if request.user in subject.students.all(): | 905 | if request.user in subject.students.all(): |
@@ -1017,7 +1026,7 @@ class ReplicateTopicView (LoginRequiredMixin, HasRoleMixin, LogMixin, Notificati | @@ -1017,7 +1026,7 @@ class ReplicateTopicView (LoginRequiredMixin, HasRoleMixin, LogMixin, Notificati | ||
1017 | action = super(ReplicateTopicView, self).createorRetrieveAction("create Topic") | 1026 | action = super(ReplicateTopicView, self).createorRetrieveAction("create Topic") |
1018 | super(ReplicateTopicView, self).createNotification("Topic "+ self.object.name + " was created", | 1027 | super(ReplicateTopicView, self).createNotification("Topic "+ self.object.name + " was created", |
1019 | resource_name=self.object.name, resource_link= reverse('course:view_topic',args=[self.object.slug]), | 1028 | resource_name=self.object.name, resource_link= reverse('course:view_topic',args=[self.object.slug]), |
1020 | - actor=self.request.user, users = self.object.subject.students.all() ) | 1029 | + actor=self.request.user, users = self.object.subject.course.students.all() ) |
1021 | 1030 | ||
1022 | self.log_context['topic_id'] = self.object.id | 1031 | self.log_context['topic_id'] = self.object.id |
1023 | self.log_context['topic_name'] = self.object.name | 1032 | self.log_context['topic_name'] = self.object.name |
@@ -1071,7 +1080,7 @@ class ReplicateSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, Notificat | @@ -1071,7 +1080,7 @@ class ReplicateSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, Notificat | ||
1071 | self.object.professors.add(self.request.user) | 1080 | self.object.professors.add(self.request.user) |
1072 | if self.object.visible: | 1081 | if self.object.visible: |
1073 | super(ReplicateSubjectView, self).createNotification( " created subject " + self.object.name, resource_name=self.object.name, | 1082 | super(ReplicateSubjectView, self).createNotification( " created subject " + self.object.name, resource_name=self.object.name, |
1074 | - resource_slug = self.object.slug, actor=self.request.user, users= self.object.students.all(), | 1083 | + resource_slug = self.object.slug, actor=self.request.user, users= self.object.course.students.all(), |
1075 | resource_link = reverse('course:view_subject', args=[self.object.slug])) | 1084 | resource_link = reverse('course:view_subject', args=[self.object.slug])) |
1076 | 1085 | ||
1077 | self.log_context['subject_id'] = self.object.id | 1086 | self.log_context['subject_id'] = self.object.id |
exam/migrations/0001_initial.py
1 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | -# Generated by Django 1.10 on 2016-11-17 03:09 | 2 | + |
3 | +# Generated by Django 1.10 on 2016-11-15 22:36 | ||
3 | from __future__ import unicode_literals | 4 | from __future__ import unicode_literals |
4 | 5 | ||
5 | from django.db import migrations, models | 6 | from django.db import migrations, models |
@@ -26,6 +27,7 @@ class Migration(migrations.Migration): | @@ -26,6 +27,7 @@ class Migration(migrations.Migration): | ||
26 | 'verbose_name': 'Answer', | 27 | 'verbose_name': 'Answer', |
27 | 'ordering': ('order',), | 28 | 'ordering': ('order',), |
28 | 'verbose_name_plural': 'Answers', | 29 | 'verbose_name_plural': 'Answers', |
30 | + 'ordering': ('order',), | ||
29 | }, | 31 | }, |
30 | ), | 32 | ), |
31 | migrations.CreateModel( | 33 | migrations.CreateModel( |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
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 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | +<<<<<<< HEAD | ||
2 | # Generated by Django 1.10 on 2016-11-17 04:25 | 3 | # Generated by Django 1.10 on 2016-11-17 04:25 |
4 | +======= | ||
5 | + | ||
6 | +# Generated by Django 1.10 on 2016-11-15 22:36 | ||
7 | +>>>>>>> b869409bd7972f90e6cd67f9456afc8a04b9fce3 | ||
3 | from __future__ import unicode_literals | 8 | from __future__ import unicode_literals |
4 | 9 | ||
5 | from decimal import Decimal | 10 | from decimal import Decimal |
files/migrations/0001_initial.py
1 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | -# Generated by Django 1.10 on 2016-11-17 03:09 | 2 | +# Generated by Django 1.10 on 2016-11-15 22:36 |
3 | from __future__ import unicode_literals | 3 | from __future__ import unicode_literals |
4 | 4 | ||
5 | from django.db import migrations, models | 5 | from django.db import migrations, models |
@@ -27,8 +27,9 @@ class Migration(migrations.Migration): | @@ -27,8 +27,9 @@ class Migration(migrations.Migration): | ||
27 | ], | 27 | ], |
28 | options={ | 28 | options={ |
29 | 'verbose_name': 'File', | 29 | 'verbose_name': 'File', |
30 | - 'ordering': ('-id',), | 30 | + |
31 | 'verbose_name_plural': 'Files', | 31 | 'verbose_name_plural': 'Files', |
32 | + 'ordering': ('-id',), | ||
32 | }, | 33 | }, |
33 | bases=('courses.material',), | 34 | bases=('courses.material',), |
34 | ), | 35 | ), |
files/migrations/0002_topicfile_professor.py
1 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | -# Generated by Django 1.10 on 2016-11-17 03:09 | 2 | + |
3 | +# Generated by Django 1.10 on 2016-11-15 22:36 | ||
3 | from __future__ import unicode_literals | 4 | from __future__ import unicode_literals |
4 | 5 | ||
5 | from django.conf import settings | 6 | from django.conf import settings |
forum/migrations/0001_initial.py
1 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | -# Generated by Django 1.10 on 2016-11-17 03:09 | 2 | + |
3 | +# Generated by Django 1.10 on 2016-11-15 22:36 | ||
3 | from __future__ import unicode_literals | 4 | from __future__ import unicode_literals |
4 | 5 | ||
5 | from django.db import migrations, models | 6 | from django.db import migrations, models |
@@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
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 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | -# Generated by Django 1.10 on 2016-11-17 03:09 | 2 | +# Generated by Django 1.10 on 2016-11-15 22:36 |
3 | from __future__ import unicode_literals | 3 | from __future__ import unicode_literals |
4 | 4 | ||
5 | from django.db import migrations, models | 5 | from django.db import migrations, models |
poll/migrations/0001_initial.py
1 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | -# Generated by Django 1.10 on 2016-11-17 03:09 | 2 | + |
3 | +# Generated by Django 1.10 on 2016-11-15 22:36 | ||
3 | from __future__ import unicode_literals | 4 | from __future__ import unicode_literals |
4 | 5 | ||
5 | from django.db import migrations, models | 6 | from django.db import migrations, models |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
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 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | -# Generated by Django 1.10 on 2016-11-17 03:09 | 2 | + |
3 | +# Generated by Django 1.10 on 2016-11-15 22:36 | ||
3 | from __future__ import unicode_literals | 4 | from __future__ import unicode_literals |
4 | 5 | ||
5 | import django.contrib.auth.models | 6 | import django.contrib.auth.models |
@@ -30,14 +31,14 @@ class Migration(migrations.Migration): | @@ -30,14 +31,14 @@ class Migration(migrations.Migration): | ||
30 | ('city', models.CharField(blank=True, max_length=90, verbose_name='City')), | 31 | ('city', models.CharField(blank=True, max_length=90, verbose_name='City')), |
31 | ('state', models.CharField(blank=True, max_length=30, verbose_name='State')), | 32 | ('state', models.CharField(blank=True, max_length=30, verbose_name='State')), |
32 | ('gender', models.CharField(choices=[('M', 'Male'), ('F', 'Female')], max_length=1, verbose_name='Gender')), | 33 | ('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='Photo')), | ||
34 | - ('birth_date', models.DateField(null=True, verbose_name='Birth Date')), | 34 | + ('image', models.ImageField(blank=True, null=True, upload_to='users/', verbose_name='Image')), |
35 | + ('birth_date', models.DateField(verbose_name='Birth Date')), | ||
35 | ('phone', models.CharField(blank=True, max_length=30, verbose_name='Phone')), | 36 | ('phone', models.CharField(blank=True, max_length=30, verbose_name='Phone')), |
36 | - ('cpf', models.CharField(blank=True, max_length=15, null=True, verbose_name='CPF')), | 37 | + ('cpf', models.CharField(max_length=15, verbose_name='Cpf')), |
37 | ('type_profile', models.IntegerField(blank=True, choices=[(1, 'Professor'), (2, 'Student')], default=2, null=True, verbose_name='Type')), | 38 | ('type_profile', models.IntegerField(blank=True, choices=[(1, 'Professor'), (2, 'Student')], default=2, null=True, verbose_name='Type')), |
38 | ('titration', models.CharField(blank=True, max_length=50, null=True, verbose_name='Titration')), | 39 | ('titration', models.CharField(blank=True, max_length=50, null=True, verbose_name='Titration')), |
39 | ('year_titration', models.CharField(blank=True, max_length=4, null=True, verbose_name='Year of titration')), | 40 | ('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')), | 41 | + ('institution', models.CharField(blank=True, max_length=50, null=True, verbose_name='Institution where he had titration')), |
41 | ('curriculum', models.FileField(blank=True, null=True, upload_to='users/curriculum/', verbose_name='Curriculum')), | 42 | ('curriculum', models.FileField(blank=True, null=True, upload_to='users/curriculum/', verbose_name='Curriculum')), |
42 | ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Create Date')), | 43 | ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Create Date')), |
43 | ('is_staff', models.BooleanField(default=False, verbose_name='Administrador')), | 44 | ('is_staff', models.BooleanField(default=False, verbose_name='Administrador')), |
@@ -0,0 +1,20 @@ | @@ -0,0 +1,20 @@ | ||
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 | + ] |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
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 | + ] |