Commit bf9838af2c2d0971e3d00e736fd0756e30b0ffd8

Authored by Matheus Lins
1 parent e4873697

model and tamplatetags exercises

app/migrations/0001_initial.py
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 -# Generated by Django 1.10 on 2016-11-03 22:03 2 +# Generated by Django 1.10 on 2016-11-13 17:47
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
@@ -26,8 +26,8 @@ class Migration(migrations.Migration): @@ -26,8 +26,8 @@ class Migration(migrations.Migration):
26 ('default_from_email', models.EmailField(blank=True, max_length=254, verbose_name='Default from email')), 26 ('default_from_email', models.EmailField(blank=True, max_length=254, verbose_name='Default from email')),
27 ], 27 ],
28 options={ 28 options={
29 - 'verbose_name_plural': 'Amadeus SMTP settings',  
30 'verbose_name': 'Amadeus SMTP setting', 29 'verbose_name': 'Amadeus SMTP setting',
  30 + 'verbose_name_plural': 'Amadeus SMTP settings',
31 }, 31 },
32 ), 32 ),
33 ] 33 ]
core/migrations/0001_initial.py
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 -# Generated by Django 1.10 on 2016-10-24 18:59 2 +# Generated by Django 1.10 on 2016-11-13 17:47
3 from __future__ import unicode_literals 3 from __future__ import unicode_literals
4 4
5 import autoslug.fields 5 import autoslug.fields
  6 +from django.conf import settings
  7 +import django.contrib.postgres.fields.jsonb
6 from django.db import migrations, models 8 from django.db import migrations, models
7 import django.db.models.deletion 9 import django.db.models.deletion
8 10
@@ -12,6 +14,7 @@ class Migration(migrations.Migration): @@ -12,6 +14,7 @@ class Migration(migrations.Migration):
12 initial = True 14 initial = True
13 15
14 dependencies = [ 16 dependencies = [
  17 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
15 ] 18 ]
16 19
17 operations = [ 20 operations = [
@@ -24,29 +27,34 @@ class Migration(migrations.Migration): @@ -24,29 +27,34 @@ class Migration(migrations.Migration):
24 ('created_date', models.DateField(auto_now_add=True, verbose_name='Created Date')), 27 ('created_date', models.DateField(auto_now_add=True, verbose_name='Created Date')),
25 ], 28 ],
26 options={ 29 options={
27 - 'verbose_name_plural': 'Actions',  
28 'verbose_name': 'Action', 30 'verbose_name': 'Action',
  31 + 'verbose_name_plural': 'Actions',
29 }, 32 },
30 ), 33 ),
31 migrations.CreateModel( 34 migrations.CreateModel(
32 name='Action_Resource', 35 name='Action_Resource',
33 fields=[ 36 fields=[
34 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 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')),
35 ], 39 ],
36 options={ 40 options={
37 - 'verbose_name_plural': 'Action_Resources',  
38 'verbose_name': 'Action_Resource', 41 'verbose_name': 'Action_Resource',
  42 + 'verbose_name_plural': 'Action_Resources',
39 }, 43 },
40 ), 44 ),
41 migrations.CreateModel( 45 migrations.CreateModel(
42 name='Log', 46 name='Log',
43 fields=[ 47 fields=[
44 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 48 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  49 + ('component', models.TextField(verbose_name='Component (Module / App)')),
  50 + ('context', django.contrib.postgres.fields.jsonb.JSONField(blank=True, verbose_name='Context')),
45 ('datetime', models.DateTimeField(auto_now_add=True, verbose_name='Date and Time of action')), 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')),
46 ], 54 ],
47 options={ 55 options={
48 - 'verbose_name_plural': 'Logs',  
49 'verbose_name': 'Log', 56 'verbose_name': 'Log',
  57 + 'verbose_name_plural': 'Logs',
50 }, 58 },
51 ), 59 ),
52 migrations.CreateModel( 60 migrations.CreateModel(
@@ -57,8 +65,8 @@ class Migration(migrations.Migration): @@ -57,8 +65,8 @@ class Migration(migrations.Migration):
57 ('icon', models.CharField(max_length=50, unique=True, verbose_name='Icon')), 65 ('icon', models.CharField(max_length=50, unique=True, verbose_name='Icon')),
58 ], 66 ],
59 options={ 67 options={
60 - 'verbose_name_plural': 'Amadeus Mime Types',  
61 'verbose_name': 'Amadeus Mime Type', 68 'verbose_name': 'Amadeus Mime Type',
  69 + 'verbose_name_plural': 'Amadeus Mime Types',
62 }, 70 },
63 ), 71 ),
64 migrations.CreateModel( 72 migrations.CreateModel(
@@ -69,10 +77,12 @@ class Migration(migrations.Migration): @@ -69,10 +77,12 @@ class Migration(migrations.Migration):
69 ('read', models.BooleanField(default=False, verbose_name='Read')), 77 ('read', models.BooleanField(default=False, verbose_name='Read')),
70 ('datetime', models.DateTimeField(auto_now_add=True, verbose_name='Date and Time of action')), 78 ('datetime', models.DateTimeField(auto_now_add=True, verbose_name='Date and Time of action')),
71 ('action_resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource')), 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='Perfomer')),
  81 + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_Actor', to=settings.AUTH_USER_MODEL, verbose_name='User')),
72 ], 82 ],
73 options={ 83 options={
74 - 'verbose_name_plural': 'Notifications',  
75 'verbose_name': 'Notification', 84 'verbose_name': 'Notification',
  85 + 'verbose_name_plural': 'Notifications',
76 }, 86 },
77 ), 87 ),
78 migrations.CreateModel( 88 migrations.CreateModel(
@@ -85,8 +95,13 @@ class Migration(migrations.Migration): @@ -85,8 +95,13 @@ class Migration(migrations.Migration):
85 ('url', models.CharField(default='', max_length=100, verbose_name='URL')), 95 ('url', models.CharField(default='', max_length=100, verbose_name='URL')),
86 ], 96 ],
87 options={ 97 options={
88 - 'verbose_name_plural': 'Resources',  
89 'verbose_name': 'Resource', 98 'verbose_name': 'Resource',
  99 + 'verbose_name_plural': 'Resources',
90 }, 100 },
91 ), 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 + ),
92 ] 107 ]
core/migrations/0002_auto_20161024_1559.py
@@ -1,50 +0,0 @@ @@ -1,50 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-10-24 18:59  
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='Perfomer'),  
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 - ]  
core/migrations/0003_auto_20161101_1457.py
@@ -1,26 +0,0 @@ @@ -1,26 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-11-01 17:57  
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 - ('core', '0002_auto_20161024_1559'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AddField(  
16 - model_name='log',  
17 - name='component',  
18 - field=models.TextField(default='', verbose_name='Component (Module / App)'),  
19 - preserve_default=False,  
20 - ),  
21 - migrations.AddField(  
22 - model_name='log',  
23 - name='context',  
24 - field=models.TextField(blank=True, verbose_name='Context'),  
25 - ),  
26 - ]  
core/migrations/0004_auto_20161110_1215.py
@@ -1,21 +0,0 @@ @@ -1,21 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-11-10 15:15  
3 -from __future__ import unicode_literals  
4 -  
5 -import django.contrib.postgres.fields.jsonb  
6 -from django.db import migrations  
7 -  
8 -  
9 -class Migration(migrations.Migration):  
10 -  
11 - dependencies = [  
12 - ('core', '0003_auto_20161101_1457'),  
13 - ]  
14 -  
15 - operations = [  
16 - migrations.AlterField(  
17 - model_name='log',  
18 - name='context',  
19 - field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, verbose_name='Context'),  
20 - ),  
21 - ]  
courses/admin.py
1 from django.contrib import admin 1 from django.contrib import admin
2 2
3 -from .models import CourseCategory, Course, Subject,Topic, Activity, Material, CategorySubject 3 +from .models import CourseCategory, Course, Subject, Topic, Activity, Material, CategorySubject, Exercise
4 4
5 class CategoryAdmin(admin.ModelAdmin): 5 class CategoryAdmin(admin.ModelAdmin):
6 - list_display = ['name', 'slug']  
7 - search_fields = ['name', 'slug'] 6 + list_display = ['name', 'slug']
  7 + search_fields = ['name', 'slug']
8 8
9 class CategorySubjectAdmin(admin.ModelAdmin): 9 class CategorySubjectAdmin(admin.ModelAdmin):
10 - list_display = ['name', 'slug']  
11 - search_fields = ['name', 'slug'] 10 + list_display = ['name', 'slug']
  11 + search_fields = ['name', 'slug']
12 12
13 class CourseAdmin(admin.ModelAdmin): 13 class CourseAdmin(admin.ModelAdmin):
14 - list_display = ['name', 'slug']  
15 - search_fields = ['name', 'slug'] 14 + list_display = ['name', 'slug']
  15 + search_fields = ['name', 'slug']
16 16
17 class SubjectAdmin(admin.ModelAdmin): 17 class SubjectAdmin(admin.ModelAdmin):
18 - list_display = ['name', 'slug']  
19 - search_fields = ['name', 'slug'] 18 + list_display = ['name', 'slug']
  19 + search_fields = ['name', 'slug']
20 20
21 class TopicAdmin(admin.ModelAdmin): 21 class TopicAdmin(admin.ModelAdmin):
22 - list_display = ['name', 'slug']  
23 - search_fields = ['name', 'slug'] 22 + list_display = ['name', 'slug']
  23 + search_fields = ['name', 'slug']
24 24
25 class ActivityAdmin(admin.ModelAdmin): 25 class ActivityAdmin(admin.ModelAdmin):
26 - list_display = ['name', 'slug']  
27 - search_fields = ['name', 'slug'] 26 + list_display = ['name', 'slug']
  27 + search_fields = ['name', 'slug']
28 28
29 class MaterialAdmin(admin.ModelAdmin): 29 class MaterialAdmin(admin.ModelAdmin):
30 - list_display = ['name', 'slug']  
31 - search_fields = ['name', 'slug'] 30 + list_display = ['name', 'slug']
  31 + search_fields = ['name', 'slug']
32 32
33 admin.site.register(CourseCategory, CategoryAdmin) 33 admin.site.register(CourseCategory, CategoryAdmin)
34 admin.site.register(Course, CourseAdmin) 34 admin.site.register(Course, CourseAdmin)
35 admin.site.register(Subject, SubjectAdmin) 35 admin.site.register(Subject, SubjectAdmin)
36 admin.site.register(Topic, TopicAdmin) 36 admin.site.register(Topic, TopicAdmin)
37 -admin.site.register(Activity,ActivityAdmin)  
38 -admin.site.register(Material,MaterialAdmin) 37 +admin.site.register(Activity, ActivityAdmin)
  38 +admin.site.register(Material, MaterialAdmin)
39 admin.site.register(CategorySubject, CategorySubjectAdmin) 39 admin.site.register(CategorySubject, CategorySubjectAdmin)
courses/migrations/0001_initial.py
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 -# Generated by Django 1.10 on 2016-10-24 18:59 2 +# Generated by Django 1.10 on 2016-11-13 17:47
3 from __future__ import unicode_literals 3 from __future__ import unicode_literals
4 4
5 import autoslug.fields 5 import autoslug.fields
  6 +from django.conf import settings
6 from django.db import migrations, models 7 from django.db import migrations, models
7 import django.db.models.deletion 8 import django.db.models.deletion
8 import s3direct.fields 9 import s3direct.fields
@@ -14,6 +15,7 @@ class Migration(migrations.Migration): @@ -14,6 +15,7 @@ class Migration(migrations.Migration):
14 15
15 dependencies = [ 16 dependencies = [
16 ('core', '0001_initial'), 17 ('core', '0001_initial'),
  18 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
17 ] 19 ]
18 20
19 operations = [ 21 operations = [
@@ -23,6 +25,7 @@ class Migration(migrations.Migration): @@ -23,6 +25,7 @@ class Migration(migrations.Migration):
23 ('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')), 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 ('limit_date', models.DateField(verbose_name='Deliver Date')), 26 ('limit_date', models.DateField(verbose_name='Deliver Date')),
25 ('all_students', models.BooleanField(default=False, verbose_name='All Students')), 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 bases=('core.resource',), 30 bases=('core.resource',),
28 ), 31 ),
@@ -32,10 +35,11 @@ class Migration(migrations.Migration): @@ -32,10 +35,11 @@ class Migration(migrations.Migration):
32 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 35 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
33 ('pdf', s3direct.fields.S3DirectField()), 36 ('pdf', s3direct.fields.S3DirectField()),
34 ('name', models.CharField(max_length=100)), 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 options={ 40 options={
37 - 'verbose_name_plural': 'Activitys Files',  
38 'verbose_name': 'Activity File', 41 'verbose_name': 'Activity File',
  42 + 'verbose_name_plural': 'Activitys Files',
39 }, 43 },
40 ), 44 ),
41 migrations.CreateModel( 45 migrations.CreateModel(
@@ -47,8 +51,8 @@ class Migration(migrations.Migration): @@ -47,8 +51,8 @@ class Migration(migrations.Migration):
47 ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')), 51 ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')),
48 ], 52 ],
49 options={ 53 options={
50 - 'verbose_name_plural': 'Categories',  
51 'verbose_name': 'Category', 54 'verbose_name': 'Category',
  55 + 'verbose_name_plural': 'Categories',
52 }, 56 },
53 ), 57 ),
54 migrations.CreateModel( 58 migrations.CreateModel(
@@ -65,13 +69,12 @@ class Migration(migrations.Migration): @@ -65,13 +69,12 @@ class Migration(migrations.Migration):
65 ('end_register_date', models.DateField(verbose_name='Register Date (End)')), 69 ('end_register_date', models.DateField(verbose_name='Register Date (End)')),
66 ('init_date', models.DateField(verbose_name='Begin of Course Date')), 70 ('init_date', models.DateField(verbose_name='Begin of Course Date')),
67 ('end_date', models.DateField(verbose_name='End of Course Date')), 71 ('end_date', models.DateField(verbose_name='End of Course Date')),
68 - ('image', models.ImageField(blank=True, upload_to='courses/', verbose_name='Image')),  
69 ('public', models.BooleanField(default=False, verbose_name='Public')), 72 ('public', models.BooleanField(default=False, verbose_name='Public')),
70 ], 73 ],
71 options={ 74 options={
72 - 'ordering': ('create_date', 'name'),  
73 - 'verbose_name_plural': 'Courses',  
74 'verbose_name': 'Course', 75 'verbose_name': 'Course',
  76 + 'verbose_name_plural': 'Courses',
  77 + 'ordering': ('create_date', 'name'),
75 }, 78 },
76 ), 79 ),
77 migrations.CreateModel( 80 migrations.CreateModel(
@@ -83,8 +86,8 @@ class Migration(migrations.Migration): @@ -83,8 +86,8 @@ class Migration(migrations.Migration):
83 ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')), 86 ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')),
84 ], 87 ],
85 options={ 88 options={
86 - 'verbose_name_plural': 'Categories',  
87 'verbose_name': 'Category', 89 'verbose_name': 'Category',
  90 + 'verbose_name_plural': 'Categories',
88 }, 91 },
89 ), 92 ),
90 migrations.CreateModel( 93 migrations.CreateModel(
@@ -109,6 +112,7 @@ class Migration(migrations.Migration): @@ -109,6 +112,7 @@ class Migration(migrations.Migration):
109 fields=[ 112 fields=[
110 ('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')), 113 ('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')),
111 ('all_students', models.BooleanField(default=False, verbose_name='All Students')), 114 ('all_students', models.BooleanField(default=False, verbose_name='All Students')),
  115 + ('students', models.ManyToManyField(related_name='materials', to=settings.AUTH_USER_MODEL, verbose_name='Students')),
112 ], 116 ],
113 bases=('core.resource',), 117 bases=('core.resource',),
114 ), 118 ),
@@ -124,11 +128,15 @@ class Migration(migrations.Migration): @@ -124,11 +128,15 @@ class Migration(migrations.Migration):
124 ('end_date', models.DateField(verbose_name='End of Subject Date')), 128 ('end_date', models.DateField(verbose_name='End of Subject Date')),
125 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')), 129 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
126 ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')), 130 ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')),
  131 + ('category', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subject_category', to='courses.CategorySubject', verbose_name='Category')),
  132 + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course')),
  133 + ('professors', models.ManyToManyField(related_name='professors_subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors')),
  134 + ('students', models.ManyToManyField(blank=True, related_name='subject_student', to=settings.AUTH_USER_MODEL, verbose_name='Students')),
127 ], 135 ],
128 options={ 136 options={
129 - 'ordering': ('create_date', 'name'),  
130 - 'verbose_name_plural': 'Subjects',  
131 'verbose_name': 'Subject', 137 'verbose_name': 'Subject',
  138 + 'verbose_name_plural': 'Subjects',
  139 + 'ordering': ('create_date', 'name'),
132 }, 140 },
133 ), 141 ),
134 migrations.CreateModel( 142 migrations.CreateModel(
@@ -138,10 +146,11 @@ class Migration(migrations.Migration): @@ -138,10 +146,11 @@ class Migration(migrations.Migration):
138 ('name', models.CharField(max_length=100, verbose_name='Name')), 146 ('name', models.CharField(max_length=100, verbose_name='Name')),
139 ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), 147 ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
140 ('description', models.TextField(blank=True, verbose_name='Description')), 148 ('description', models.TextField(blank=True, verbose_name='Description')),
  149 + ('subjects', models.ManyToManyField(to='courses.Subject')),
141 ], 150 ],
142 options={ 151 options={
143 - 'verbose_name_plural': 'subject categories',  
144 'verbose_name': 'subject category', 152 'verbose_name': 'subject category',
  153 + 'verbose_name_plural': 'subject categories',
145 }, 154 },
146 ), 155 ),
147 migrations.CreateModel( 156 migrations.CreateModel(
@@ -154,11 +163,53 @@ class Migration(migrations.Migration): @@ -154,11 +163,53 @@ class Migration(migrations.Migration):
154 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')), 163 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
155 ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')), 164 ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')),
156 ('visible', models.BooleanField(default=False, verbose_name='Visible')), 165 ('visible', models.BooleanField(default=False, verbose_name='Visible')),
  166 + ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Owner')),
  167 + ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Subject', verbose_name='Subject')),
157 ], 168 ],
158 options={ 169 options={
159 - 'ordering': ('create_date', 'name'),  
160 - 'verbose_name_plural': 'Topics',  
161 'verbose_name': 'Topic', 170 'verbose_name': 'Topic',
  171 + 'verbose_name_plural': 'Topics',
  172 + 'ordering': ('create_date', 'name'),
162 }, 173 },
163 ), 174 ),
  175 + migrations.AddField(
  176 + model_name='material',
  177 + name='topic',
  178 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materials', to='courses.Topic', verbose_name='Topic'),
  179 + ),
  180 + migrations.AddField(
  181 + model_name='linkmaterial',
  182 + name='material',
  183 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_link', to='courses.Material', verbose_name='Material'),
  184 + ),
  185 + migrations.AddField(
  186 + model_name='filematerial',
  187 + name='material',
  188 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_file', to='courses.Material', verbose_name='Material'),
  189 + ),
  190 + migrations.AddField(
  191 + model_name='course',
  192 + name='category',
  193 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='course_category', to='courses.CourseCategory', verbose_name='Category'),
  194 + ),
  195 + migrations.AddField(
  196 + model_name='course',
  197 + name='coordenator',
  198 + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='course_coordenator', to=settings.AUTH_USER_MODEL, verbose_name='Coordenator'),
  199 + ),
  200 + migrations.AddField(
  201 + model_name='course',
  202 + name='professors',
  203 + field=models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
  204 + ),
  205 + migrations.AddField(
  206 + model_name='course',
  207 + name='students',
  208 + field=models.ManyToManyField(blank=True, related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
  209 + ),
  210 + migrations.AddField(
  211 + model_name='activity',
  212 + name='topic',
  213 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activities', to='courses.Topic', verbose_name='Topic'),
  214 + ),
164 ] 215 ]
courses/migrations/0002_auto_20161024_1559.py
@@ -1,105 +0,0 @@ @@ -1,105 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-10-24 18:59  
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 - ('courses', '0001_initial'),  
17 - ]  
18 -  
19 - operations = [  
20 - migrations.AddField(  
21 - model_name='topic',  
22 - name='owner',  
23 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Owner'),  
24 - ),  
25 - migrations.AddField(  
26 - model_name='topic',  
27 - name='subject',  
28 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Subject', verbose_name='Subject'),  
29 - ),  
30 - migrations.AddField(  
31 - model_name='subjectcategory',  
32 - name='subjects',  
33 - field=models.ManyToManyField(to='courses.Subject'),  
34 - ),  
35 - migrations.AddField(  
36 - model_name='subject',  
37 - name='category',  
38 - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subject_category', to='courses.CategorySubject', verbose_name='Category'),  
39 - ),  
40 - migrations.AddField(  
41 - model_name='subject',  
42 - name='course',  
43 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course'),  
44 - ),  
45 - migrations.AddField(  
46 - model_name='subject',  
47 - name='professors',  
48 - field=models.ManyToManyField(related_name='professors_subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),  
49 - ),  
50 - migrations.AddField(  
51 - model_name='subject',  
52 - name='students',  
53 - field=models.ManyToManyField(blank=True, related_name='subject_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),  
54 - ),  
55 - migrations.AddField(  
56 - model_name='material',  
57 - name='students',  
58 - field=models.ManyToManyField(related_name='materials', to=settings.AUTH_USER_MODEL, verbose_name='Students'),  
59 - ),  
60 - migrations.AddField(  
61 - model_name='material',  
62 - name='topic',  
63 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materials', to='courses.Topic', verbose_name='Topic'),  
64 - ),  
65 - migrations.AddField(  
66 - model_name='linkmaterial',  
67 - name='material',  
68 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_link', to='courses.Material', verbose_name='Material'),  
69 - ),  
70 - migrations.AddField(  
71 - model_name='filematerial',  
72 - name='material',  
73 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_file', to='courses.Material', verbose_name='Material'),  
74 - ),  
75 - migrations.AddField(  
76 - model_name='course',  
77 - name='category',  
78 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='course_category', to='courses.CourseCategory', verbose_name='Category'),  
79 - ),  
80 - migrations.AddField(  
81 - model_name='course',  
82 - name='professors',  
83 - field=models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),  
84 - ),  
85 - migrations.AddField(  
86 - model_name='course',  
87 - name='students',  
88 - field=models.ManyToManyField(blank=True, related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),  
89 - ),  
90 - migrations.AddField(  
91 - model_name='activityfile',  
92 - name='diet',  
93 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='courses.Activity'),  
94 - ),  
95 - migrations.AddField(  
96 - model_name='activity',  
97 - name='students',  
98 - field=models.ManyToManyField(related_name='activities', to=settings.AUTH_USER_MODEL, verbose_name='Students'),  
99 - ),  
100 - migrations.AddField(  
101 - model_name='activity',  
102 - name='topic',  
103 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activities', to='courses.Topic', verbose_name='Topic'),  
104 - ),  
105 - ]  
courses/migrations/0002_exercise.py 0 → 100644
@@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-11-13 19:30
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.db import migrations, models
  6 +import django.db.models.deletion
  7 +
  8 +
  9 +class Migration(migrations.Migration):
  10 +
  11 + dependencies = [
  12 + ('courses', '0001_initial'),
  13 + ]
  14 +
  15 + operations = [
  16 + migrations.CreateModel(
  17 + name='Exercise',
  18 + fields=[
  19 + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  20 + ('file', models.FileField(upload_to='uploads/%Y/%m/%d')),
  21 + ('name', models.CharField(max_length=100)),
  22 + ('exercise', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_exercise', to='courses.Material', verbose_name='Material')),
  23 + ],
  24 + ),
  25 + ]
courses/migrations/0003_remove_course_image.py
@@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-11-06 12:35  
3 -from __future__ import unicode_literals  
4 -  
5 -from django.db import migrations  
6 -  
7 -  
8 -class Migration(migrations.Migration):  
9 -  
10 - dependencies = [  
11 - ('courses', '0002_auto_20161024_1559'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.RemoveField(  
16 - model_name='course',  
17 - name='image',  
18 - ),  
19 - ]  
courses/migrations/0004_course_coordenator.py
@@ -1,23 +0,0 @@ @@ -1,23 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-11-08 15:00  
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 - dependencies = [  
13 - migrations.swappable_dependency(settings.AUTH_USER_MODEL),  
14 - ('courses', '0003_remove_course_image'),  
15 - ]  
16 -  
17 - operations = [  
18 - migrations.AddField(  
19 - model_name='course',  
20 - name='coordenator',  
21 - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='course_coordenator', to=settings.AUTH_USER_MODEL, verbose_name='Coordenator'),  
22 - ),  
23 - ]  
courses/models.py
@@ -157,6 +157,14 @@ class LinkMaterial(models.Model): @@ -157,6 +157,14 @@ class LinkMaterial(models.Model):
157 name = models.CharField(max_length=100) 157 name = models.CharField(max_length=100)
158 description = models.TextField() 158 description = models.TextField()
159 url = models.URLField('Link', max_length=300) 159 url = models.URLField('Link', max_length=300)
  160 +"""
  161 +It represents the Exercises inside topic.
  162 +"""
  163 +
  164 +class Exercise(models.Model):
  165 + exercise = models.ForeignKey(Material, verbose_name = _('Material'), related_name='material_exercise')
  166 + file = models.FileField(upload_to='uploads/%Y/%m/%d')
  167 + name = models.CharField(max_length=100)
160 168
161 """ 169 """
162 It is a category for each subject. 170 It is a category for each subject.
courses/templates/subject/form_view_student.html
1 - {% load static i18n list_topic_foruns permission_tags widget_tweaks professor_access%} 1 +{% load static i18n list_topic_foruns permission_tags widget_tweaks professor_access%}
  2 +{% professor_subject topic.subject user as professor_links %}
2 3
3 -  
4 - {% block javascript %}  
5 - <script type="text/javascript" src="{% static 'js/forum.js' %}"></script>  
6 - <script src="{% static 'js/file.js' %}"></script>  
7 - <script type="text/javascript" src="{% static 'js/material.js' %}"></script>  
8 - <script type = "text/javascript" src="{% static 'links.js' %}"></script>  
9 - {% endblock %} 4 + {% block javascript %}
  5 + <script type="text/javascript" src="{% static 'js/forum.js' %}"></script>
  6 + <script src="{% static 'js/file.js' %}"></script>
  7 + <script type="text/javascript" src="{% static 'js/material.js' %}"></script>
  8 + <script type = "text/javascript" src="{% static 'links.js' %}"></script>
  9 + {% endblock %}
10 <div class="cards-detail"> 10 <div class="cards-detail">
11 <div class="panel-group accordion ui-accordion ui-widget ui-helper-reset ui-sortable" role="tablist" aria-multiselectable="false"> 11 <div class="panel-group accordion ui-accordion ui-widget ui-helper-reset ui-sortable" role="tablist" aria-multiselectable="false">
12 <div class="group"><div class="panel panel-default"> 12 <div class="group"><div class="panel panel-default">
@@ -34,16 +34,65 @@ @@ -34,16 +34,65 @@
34 </div> 34 </div>
35 </div> 35 </div>
36 </div> 36 </div>
  37 +
  38 + {% if not professor_links %}
  39 + <div class="row">
  40 + <div class="col-xs-4 col-md-4">
  41 + <div class="resource_inline">
  42 + <h4>{% trans 'Material' %}</h4>
  43 + </div>
  44 + <div class="presentation_{{topic.slug}}">
  45 + {# materiais do tópico no modo de visualização #}
  46 + <ul>
  47 + {% list_topic_file request topic %}
  48 + {% list_topic_link request topic%}
  49 + </ul>
  50 + </div>
  51 + </div>
  52 + {# avaliações d topico #}
  53 + <div class="col-xs-4 col-md-4">
  54 + <div class="resource_inline">
  55 + <h4>{% trans 'Activities' %}</h4>
  56 + </div>
  57 + <div class="presentation_{{topic.slug}}">
  58 +
  59 + {# avaliações do tópico no modo de visualização #}
  60 + <ul>
  61 + {% list_topic_poll request topic %}
  62 + {% list_topic_foruns request topic %}
  63 + </ul>
  64 + </div>
  65 + </div>
  66 + <div class="col-xs-4 col-md-4">
  67 + <div class="resource_inline">
  68 + <h4>{% trans 'Exercises' %}</h4>
  69 + </div>
  70 + <div class="presentation_{{topic.slug}}">
  71 + {# exercício do tópico no modo de visualização #}
  72 + <ul>
  73 + {% list_topic_poll request topic %}
  74 + {% list_topic_foruns request topic %}
  75 + </ul>
  76 + </div>
  77 + <div class="editation editation_{{topic.slug}}">
  78 + {# exercício do tópico no modo de edição #}
  79 + <ul>
  80 + {% list_topic_file_edit request topic %}
  81 + {% list_topic_link_edit request topic%}
  82 + </ul>
  83 + </div>
  84 + </div>
  85 + {% include "exercise/create_exercise.html" %}
  86 + </div>
  87 + {% endif %}
  88 +
37 </div> 89 </div>
38 90
39 </div> 91 </div>
40 92
41 - {% professor_subject topic.subject user as professor_links %}  
42 - {% if professor_links%} 93 + {% if professor_links %}
43 {% include "links/create_link.html" %} 94 {% include "links/create_link.html" %}
44 {% include "links/delete_link.html" %} 95 {% include "links/delete_link.html" %}
45 - {% else %}  
46 - {% include "exercise/create_exercise.html" %}  
47 {% endif %} 96 {% endif %}
48 97
49 98
courses/templatetags/list_topic_exercises.py 0 → 100644
@@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
  1 +from django import template
  2 +from .models import Exercise
  3 +
  4 +register = template.Library()
  5 +
  6 +
  7 +@register.inclusion_tag('subject/form_view_student.html')
  8 +def list_topic_exercise(request, exercise):
  9 + context = {
  10 + 'request': request,
  11 + }
  12 +
  13 + context['exercises'] = Exercise.objects.filter(exercise = exercise)
  14 +
  15 + return context
  16 +
  17 +
  18 +@register.inclusion_tag('topic/list_file_edit.html')
  19 +def list_topic_exercise_edit(request, exercise):
  20 + context = {
  21 + 'request': request,
  22 + }
  23 +
  24 + context['exercises'] = Exercise.objects.filter(exercise = exercise)
  25 + context['exercise'] = exercise
  26 +
  27 + return context
courses/templatetags/list_topic_foruns.py
@@ -11,6 +11,7 @@ register = template.Library() @@ -11,6 +11,7 @@ register = template.Library()
11 Template tag to load all the foruns of a post 11 Template tag to load all the foruns of a post
12 """ 12 """
13 13
  14 +
14 @register.inclusion_tag('topic/list_topic_foruns.html') 15 @register.inclusion_tag('topic/list_topic_foruns.html')
15 def list_topic_foruns(request, topic): 16 def list_topic_foruns(request, topic):
16 context = { 17 context = {
@@ -21,6 +22,7 @@ def list_topic_foruns(request, topic): @@ -21,6 +22,7 @@ def list_topic_foruns(request, topic):
21 22
22 return context 23 return context
23 24
  25 +
24 @register.inclusion_tag('subject/poll_item_actions.html') 26 @register.inclusion_tag('subject/poll_item_actions.html')
25 def list_topic_poll(request, topic): 27 def list_topic_poll(request, topic):
26 context = { 28 context = {
@@ -44,6 +46,7 @@ def list_topic_poll_teacher(request, topic): @@ -44,6 +46,7 @@ def list_topic_poll_teacher(request, topic):
44 46
45 return context 47 return context
46 48
  49 +
47 @register.inclusion_tag('topic/list_file.html') 50 @register.inclusion_tag('topic/list_file.html')
48 def list_topic_file(request, topic): 51 def list_topic_file(request, topic):
49 context = { 52 context = {
@@ -55,6 +58,7 @@ def list_topic_file(request, topic): @@ -55,6 +58,7 @@ def list_topic_file(request, topic):
55 58
56 return context 59 return context
57 60
  61 +
58 @register.inclusion_tag('topic/list_file_edit.html') 62 @register.inclusion_tag('topic/list_file_edit.html')
59 def list_topic_file_edit(request, topic): 63 def list_topic_file_edit(request, topic):
60 context = { 64 context = {
@@ -66,6 +70,7 @@ def list_topic_file_edit(request, topic): @@ -66,6 +70,7 @@ def list_topic_file_edit(request, topic):
66 70
67 return context 71 return context
68 72
  73 +
69 @register.inclusion_tag('topic/link_topic_list_edit.html') 74 @register.inclusion_tag('topic/link_topic_list_edit.html')
70 def list_topic_link_edit(request,topic): 75 def list_topic_link_edit(request,topic):
71 context = { 76 context = {
@@ -75,6 +80,7 @@ def list_topic_link_edit(request,topic): @@ -75,6 +80,7 @@ def list_topic_link_edit(request,topic):
75 context['topic'] = topic 80 context['topic'] = topic
76 return context 81 return context
77 82
  83 +
78 @register.inclusion_tag('topic/link_topic_list.html') 84 @register.inclusion_tag('topic/link_topic_list.html')
79 def list_topic_link(request,topic): 85 def list_topic_link(request,topic):
80 context = { 86 context = {
exam/migrations/0001_initial.py
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 -# Generated by Django 1.10 on 2016-10-24 18:59 2 +# Generated by Django 1.10 on 2016-11-13 17:47
3 from __future__ import unicode_literals 3 from __future__ import unicode_literals
4 4
  5 +from django.conf import settings
5 from django.db import migrations, models 6 from django.db import migrations, models
6 import django.db.models.deletion 7 import django.db.models.deletion
7 8
@@ -12,6 +13,7 @@ class Migration(migrations.Migration): @@ -12,6 +13,7 @@ class Migration(migrations.Migration):
12 13
13 dependencies = [ 14 dependencies = [
14 ('courses', '0001_initial'), 15 ('courses', '0001_initial'),
  16 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
15 ] 17 ]
16 18
17 operations = [ 19 operations = [
@@ -23,9 +25,9 @@ class Migration(migrations.Migration): @@ -23,9 +25,9 @@ class Migration(migrations.Migration):
23 ('order', models.PositiveSmallIntegerField(verbose_name='Order')), 25 ('order', models.PositiveSmallIntegerField(verbose_name='Order')),
24 ], 26 ],
25 options={ 27 options={
26 - 'ordering': ('order',),  
27 - 'verbose_name_plural': 'Answers',  
28 'verbose_name': 'Answer', 28 'verbose_name': 'Answer',
  29 + 'verbose_name_plural': 'Answers',
  30 + 'ordering': ('order',),
29 }, 31 },
30 ), 32 ),
31 migrations.CreateModel( 33 migrations.CreateModel(
@@ -37,8 +39,8 @@ class Migration(migrations.Migration): @@ -37,8 +39,8 @@ class Migration(migrations.Migration):
37 ('answer', models.ManyToManyField(related_name='student_answer', to='exam.Answer', verbose_name='Answers Students')), 39 ('answer', models.ManyToManyField(related_name='student_answer', to='exam.Answer', verbose_name='Answers Students')),
38 ], 40 ],
39 options={ 41 options={
40 - 'verbose_name_plural': 'Answers Student',  
41 'verbose_name': 'Answer Stundent', 42 'verbose_name': 'Answer Stundent',
  43 + 'verbose_name_plural': 'Answers Student',
42 }, 44 },
43 ), 45 ),
44 migrations.CreateModel( 46 migrations.CreateModel(
@@ -49,8 +51,8 @@ class Migration(migrations.Migration): @@ -49,8 +51,8 @@ class Migration(migrations.Migration):
49 ('exibe', models.BooleanField(default=False, verbose_name='Exibe?')), 51 ('exibe', models.BooleanField(default=False, verbose_name='Exibe?')),
50 ], 52 ],
51 options={ 53 options={
52 - 'verbose_name_plural': 'Exams',  
53 'verbose_name': 'Exam', 54 'verbose_name': 'Exam',
  55 + 'verbose_name_plural': 'Exams',
54 }, 56 },
55 bases=('courses.activity',), 57 bases=('courses.activity',),
56 ), 58 ),
@@ -59,4 +61,14 @@ class Migration(migrations.Migration): @@ -59,4 +61,14 @@ class Migration(migrations.Migration):
59 name='exam', 61 name='exam',
60 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student_exam', to='exam.Exam', verbose_name='Exam'), 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_20161024_1559.py
@@ -1,30 +0,0 @@ @@ -1,30 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-10-24 18:59  
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 - ]  
files/migrations/0001_initial.py
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 -# Generated by Django 1.10 on 2016-10-24 18:59 2 +# Generated by Django 1.10 on 2016-11-13 17:47
3 from __future__ import unicode_literals 3 from __future__ import unicode_literals
4 4
  5 +from django.conf import settings
5 from django.db import migrations, models 6 from django.db import migrations, models
6 import django.db.models.deletion 7 import django.db.models.deletion
7 import files.models 8 import files.models
@@ -12,8 +13,9 @@ class Migration(migrations.Migration): @@ -12,8 +13,9 @@ class Migration(migrations.Migration):
12 initial = True 13 initial = True
13 14
14 dependencies = [ 15 dependencies = [
15 - ('core', '0001_initial'),  
16 ('courses', '0001_initial'), 16 ('courses', '0001_initial'),
  17 + ('core', '0001_initial'),
  18 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
17 ] 19 ]
18 20
19 operations = [ 21 operations = [
@@ -24,11 +26,12 @@ class Migration(migrations.Migration): @@ -24,11 +26,12 @@ class Migration(migrations.Migration):
24 ('description', models.TextField(blank=True, verbose_name='Description')), 26 ('description', models.TextField(blank=True, verbose_name='Description')),
25 ('file_url', models.FileField(upload_to=files.models.file_path, verbose_name='File')), 27 ('file_url', models.FileField(upload_to=files.models.file_path, verbose_name='File')),
26 ('file_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='topic_files', to='core.MimeType', verbose_name='Type file')), 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 options={ 31 options={
29 - 'ordering': ('-id',),  
30 - 'verbose_name_plural': 'Files',  
31 'verbose_name': 'File', 32 'verbose_name': 'File',
  33 + 'verbose_name_plural': 'Files',
  34 + 'ordering': ('-id',),
32 }, 35 },
33 bases=('courses.material',), 36 bases=('courses.material',),
34 ), 37 ),
files/migrations/0002_topicfile_professor.py
@@ -1,24 +0,0 @@ @@ -1,24 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-10-24 18:59  
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 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 -# Generated by Django 1.10 on 2016-10-24 18:59 2 +# Generated by Django 1.10 on 2016-11-13 17:47
3 from __future__ import unicode_literals 3 from __future__ import unicode_literals
4 4
  5 +from django.conf import settings
5 from django.db import migrations, models 6 from django.db import migrations, models
6 import django.db.models.deletion 7 import django.db.models.deletion
7 8
@@ -12,6 +13,7 @@ class Migration(migrations.Migration): @@ -12,6 +13,7 @@ class Migration(migrations.Migration):
12 13
13 dependencies = [ 14 dependencies = [
14 ('courses', '0001_initial'), 15 ('courses', '0001_initial'),
  16 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
15 ] 17 ]
16 18
17 operations = [ 19 operations = [
@@ -24,8 +26,8 @@ class Migration(migrations.Migration): @@ -24,8 +26,8 @@ class Migration(migrations.Migration):
24 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Create Date')), 26 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Create Date')),
25 ], 27 ],
26 options={ 28 options={
27 - 'verbose_name_plural': 'Foruns',  
28 'verbose_name': 'Forum', 29 'verbose_name': 'Forum',
  30 + 'verbose_name_plural': 'Foruns',
29 }, 31 },
30 bases=('courses.activity',), 32 bases=('courses.activity',),
31 ), 33 ),
@@ -36,10 +38,12 @@ class Migration(migrations.Migration): @@ -36,10 +38,12 @@ class Migration(migrations.Migration):
36 ('message', models.TextField(verbose_name='Post message')), 38 ('message', models.TextField(verbose_name='Post message')),
37 ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')), 39 ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')),
38 ('post_date', models.DateTimeField(auto_now_add=True, verbose_name='Post Date')), 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 options={ 44 options={
41 - 'verbose_name_plural': 'Posts',  
42 'verbose_name': 'Post', 45 'verbose_name': 'Post',
  46 + 'verbose_name_plural': 'Posts',
43 }, 47 },
44 ), 48 ),
45 migrations.CreateModel( 49 migrations.CreateModel(
@@ -50,10 +54,11 @@ class Migration(migrations.Migration): @@ -50,10 +54,11 @@ class Migration(migrations.Migration):
50 ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')), 54 ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')),
51 ('answer_date', models.DateTimeField(auto_now_add=True, verbose_name='Answer Date')), 55 ('answer_date', models.DateTimeField(auto_now_add=True, verbose_name='Answer Date')),
52 ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Post', verbose_name='Post')), 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 options={ 59 options={
55 - 'verbose_name_plural': 'Post Answers',  
56 'verbose_name': 'Post Answer', 60 'verbose_name': 'Post Answer',
  61 + 'verbose_name_plural': 'Post Answers',
57 }, 62 },
58 ), 63 ),
59 ] 64 ]
forum/migrations/0002_auto_20161024_1559.py
@@ -1,35 +0,0 @@ @@ -1,35 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-10-24 18:59  
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 - ('forum', '0001_initial'),  
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-10-24 18:59 2 +# Generated by Django 1.10 on 2016-11-13 17:47
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
@@ -21,10 +21,11 @@ class Migration(migrations.Migration): @@ -21,10 +21,11 @@ class Migration(migrations.Migration):
21 ('material_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='courses.Material')), 21 ('material_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='courses.Material')),
22 ('link_url', models.URLField()), 22 ('link_url', models.URLField()),
23 ('link_description', models.CharField(max_length=200)), 23 ('link_description', models.CharField(max_length=200)),
  24 + ('image', models.ImageField(blank=True, upload_to='links/')),
24 ], 25 ],
25 options={ 26 options={
26 - 'verbose_name_plural': 'Links',  
27 'verbose_name': 'Link', 27 'verbose_name': 'Link',
  28 + 'verbose_name_plural': 'Links',
28 }, 29 },
29 bases=('courses.material',), 30 bases=('courses.material',),
30 ), 31 ),
links/migrations/0002_link_image.py
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-10-28 18:34  
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 - ('links', '0001_initial'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AddField(  
16 - model_name='link',  
17 - name='image',  
18 - field=models.ImageField(blank=True, upload_to='links/'),  
19 - ),  
20 - ]  
poll/migrations/0001_initial.py
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 -# Generated by Django 1.10 on 2016-10-24 18:59 2 +# Generated by Django 1.10 on 2016-11-13 17:47
3 from __future__ import unicode_literals 3 from __future__ import unicode_literals
4 4
  5 +from django.conf import settings
5 from django.db import migrations, models 6 from django.db import migrations, models
6 import django.db.models.deletion 7 import django.db.models.deletion
7 8
@@ -12,6 +13,7 @@ class Migration(migrations.Migration): @@ -12,6 +13,7 @@ class Migration(migrations.Migration):
12 13
13 dependencies = [ 14 dependencies = [
14 ('courses', '0001_initial'), 15 ('courses', '0001_initial'),
  16 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
15 ] 17 ]
16 18
17 operations = [ 19 operations = [
@@ -23,9 +25,9 @@ class Migration(migrations.Migration): @@ -23,9 +25,9 @@ class Migration(migrations.Migration):
23 ('order', models.PositiveSmallIntegerField(verbose_name='Order')), 25 ('order', models.PositiveSmallIntegerField(verbose_name='Order')),
24 ], 26 ],
25 options={ 27 options={
26 - 'ordering': ('order',),  
27 - 'verbose_name_plural': 'Answers',  
28 'verbose_name': 'Answer', 28 'verbose_name': 'Answer',
  29 + 'verbose_name_plural': 'Answers',
  30 + 'ordering': ('order',),
29 }, 31 },
30 ), 32 ),
31 migrations.CreateModel( 33 migrations.CreateModel(
@@ -37,8 +39,8 @@ class Migration(migrations.Migration): @@ -37,8 +39,8 @@ class Migration(migrations.Migration):
37 ('answer', models.ManyToManyField(related_name='answers_stundet', to='poll.Answer', verbose_name='Answers Students')), 39 ('answer', models.ManyToManyField(related_name='answers_stundet', to='poll.Answer', verbose_name='Answers Students')),
38 ], 40 ],
39 options={ 41 options={
40 - 'verbose_name_plural': 'Answers Student',  
41 'verbose_name': 'Answer Stundent', 42 'verbose_name': 'Answer Stundent',
  43 + 'verbose_name_plural': 'Answers Student',
42 }, 44 },
43 ), 45 ),
44 migrations.CreateModel( 46 migrations.CreateModel(
@@ -47,8 +49,8 @@ class Migration(migrations.Migration): @@ -47,8 +49,8 @@ class Migration(migrations.Migration):
47 ('activity_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='courses.Activity')), 49 ('activity_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='courses.Activity')),
48 ], 50 ],
49 options={ 51 options={
50 - 'verbose_name_plural': 'Polls',  
51 'verbose_name': 'Poll', 52 'verbose_name': 'Poll',
  53 + 'verbose_name_plural': 'Polls',
52 }, 54 },
53 bases=('courses.activity',), 55 bases=('courses.activity',),
54 ), 56 ),
@@ -57,4 +59,14 @@ class Migration(migrations.Migration): @@ -57,4 +59,14 @@ class Migration(migrations.Migration):
57 name='poll', 59 name='poll',
58 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers_stundet', to='poll.Poll', verbose_name='Poll'), 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_20161024_1559.py
@@ -1,30 +0,0 @@ @@ -1,30 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-10-24 18:59  
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-10-24 18:59 2 +# Generated by Django 1.10 on 2016-11-13 17:42
3 from __future__ import unicode_literals 3 from __future__ import unicode_literals
4 4
5 import django.contrib.auth.models 5 import django.contrib.auth.models