From bf9838af2c2d0971e3d00e736fd0756e30b0ffd8 Mon Sep 17 00:00:00 2001 From: Matheus Lins Date: Sun, 13 Nov 2016 16:34:57 -0300 Subject: [PATCH] model and tamplatetags exercises --- app/migrations/0001_initial.py | 4 ++-- core/migrations/0001_initial.py | 29 ++++++++++++++++++++++------- core/migrations/0002_auto_20161024_1559.py | 50 -------------------------------------------------- core/migrations/0003_auto_20161101_1457.py | 26 -------------------------- core/migrations/0004_auto_20161110_1215.py | 21 --------------------- courses/admin.py | 34 +++++++++++++++++----------------- courses/migrations/0001_initial.py | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------ courses/migrations/0002_auto_20161024_1559.py | 105 --------------------------------------------------------------------------------------------------------- courses/migrations/0002_exercise.py | 25 +++++++++++++++++++++++++ courses/migrations/0003_remove_course_image.py | 19 ------------------- courses/migrations/0004_course_coordenator.py | 23 ----------------------- courses/models.py | 8 ++++++++ courses/templates/subject/form_view_student.html | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------ courses/templatetags/list_topic_exercises.py | 27 +++++++++++++++++++++++++++ courses/templatetags/list_topic_foruns.py | 6 ++++++ exam/migrations/0001_initial.py | 22 +++++++++++++++++----- exam/migrations/0002_auto_20161024_1559.py | 30 ------------------------------ files/migrations/0001_initial.py | 11 +++++++---- files/migrations/0002_topicfile_professor.py | 24 ------------------------ forum/migrations/0001_initial.py | 13 +++++++++---- forum/migrations/0002_auto_20161024_1559.py | 35 ----------------------------------- links/migrations/0001_initial.py | 5 +++-- links/migrations/0002_link_image.py | 20 -------------------- poll/migrations/0001_initial.py | 22 +++++++++++++++++----- poll/migrations/0002_auto_20161024_1559.py | 30 ------------------------------ users/migrations/0001_initial.py | 2 +- 26 files changed, 285 insertions(+), 454 deletions(-) delete mode 100644 core/migrations/0002_auto_20161024_1559.py delete mode 100644 core/migrations/0003_auto_20161101_1457.py delete mode 100644 core/migrations/0004_auto_20161110_1215.py delete mode 100644 courses/migrations/0002_auto_20161024_1559.py create mode 100644 courses/migrations/0002_exercise.py delete mode 100644 courses/migrations/0003_remove_course_image.py delete mode 100644 courses/migrations/0004_course_coordenator.py create mode 100644 courses/templatetags/list_topic_exercises.py delete mode 100644 exam/migrations/0002_auto_20161024_1559.py delete mode 100644 files/migrations/0002_topicfile_professor.py delete mode 100644 forum/migrations/0002_auto_20161024_1559.py delete mode 100644 links/migrations/0002_link_image.py delete mode 100644 poll/migrations/0002_auto_20161024_1559.py diff --git a/app/migrations/0001_initial.py b/app/migrations/0001_initial.py index aa59a62..edc238c 100644 --- a/app/migrations/0001_initial.py +++ b/app/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-11-03 22:03 +# Generated by Django 1.10 on 2016-11-13 17:47 from __future__ import unicode_literals from django.db import migrations, models @@ -26,8 +26,8 @@ class Migration(migrations.Migration): ('default_from_email', models.EmailField(blank=True, max_length=254, verbose_name='Default from email')), ], options={ - 'verbose_name_plural': 'Amadeus SMTP settings', 'verbose_name': 'Amadeus SMTP setting', + 'verbose_name_plural': 'Amadeus SMTP settings', }, ), ] diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py index 9a5d26f..6fff7e8 100644 --- a/core/migrations/0001_initial.py +++ b/core/migrations/0001_initial.py @@ -1,8 +1,10 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 +# Generated by Django 1.10 on 2016-11-13 17:47 from __future__ import unicode_literals import autoslug.fields +from django.conf import settings +import django.contrib.postgres.fields.jsonb from django.db import migrations, models import django.db.models.deletion @@ -12,6 +14,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -24,29 +27,34 @@ class Migration(migrations.Migration): ('created_date', models.DateField(auto_now_add=True, verbose_name='Created Date')), ], options={ - 'verbose_name_plural': 'Actions', 'verbose_name': 'Action', + 'verbose_name_plural': 'Actions', }, ), migrations.CreateModel( name='Action_Resource', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('action', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action', verbose_name='Action_Applied')), ], options={ - 'verbose_name_plural': 'Action_Resources', 'verbose_name': 'Action_Resource', + 'verbose_name_plural': 'Action_Resources', }, ), migrations.CreateModel( name='Log', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('component', models.TextField(verbose_name='Component (Module / App)')), + ('context', django.contrib.postgres.fields.jsonb.JSONField(blank=True, verbose_name='Context')), ('datetime', models.DateTimeField(auto_now_add=True, verbose_name='Date and Time of action')), + ('action_resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Actor')), ], options={ - 'verbose_name_plural': 'Logs', 'verbose_name': 'Log', + 'verbose_name_plural': 'Logs', }, ), migrations.CreateModel( @@ -57,8 +65,8 @@ class Migration(migrations.Migration): ('icon', models.CharField(max_length=50, unique=True, verbose_name='Icon')), ], options={ - 'verbose_name_plural': 'Amadeus Mime Types', 'verbose_name': 'Amadeus Mime Type', + 'verbose_name_plural': 'Amadeus Mime Types', }, ), migrations.CreateModel( @@ -69,10 +77,12 @@ class Migration(migrations.Migration): ('read', models.BooleanField(default=False, verbose_name='Read')), ('datetime', models.DateTimeField(auto_now_add=True, verbose_name='Date and Time of action')), ('action_resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource')), + ('actor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notification_Performer', to=settings.AUTH_USER_MODEL, verbose_name='Perfomer')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_Actor', to=settings.AUTH_USER_MODEL, verbose_name='User')), ], options={ - 'verbose_name_plural': 'Notifications', 'verbose_name': 'Notification', + 'verbose_name_plural': 'Notifications', }, ), migrations.CreateModel( @@ -85,8 +95,13 @@ class Migration(migrations.Migration): ('url', models.CharField(default='', max_length=100, verbose_name='URL')), ], options={ - 'verbose_name_plural': 'Resources', 'verbose_name': 'Resource', + 'verbose_name_plural': 'Resources', }, ), + migrations.AddField( + model_name='action_resource', + name='resource', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Resource', verbose_name='Resource'), + ), ] diff --git a/core/migrations/0002_auto_20161024_1559.py b/core/migrations/0002_auto_20161024_1559.py deleted file mode 100644 index ab9d172..0000000 --- a/core/migrations/0002_auto_20161024_1559.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('core', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='notification', - name='actor', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notification_Performer', to=settings.AUTH_USER_MODEL, verbose_name='Perfomer'), - ), - migrations.AddField( - model_name='notification', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_Actor', to=settings.AUTH_USER_MODEL, verbose_name='User'), - ), - migrations.AddField( - model_name='log', - name='action_resource', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource'), - ), - migrations.AddField( - model_name='log', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Actor'), - ), - migrations.AddField( - model_name='action_resource', - name='action', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action', verbose_name='Action_Applied'), - ), - migrations.AddField( - model_name='action_resource', - name='resource', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Resource', verbose_name='Resource'), - ), - ] diff --git a/core/migrations/0003_auto_20161101_1457.py b/core/migrations/0003_auto_20161101_1457.py deleted file mode 100644 index 4d94e07..0000000 --- a/core/migrations/0003_auto_20161101_1457.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-11-01 17:57 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0002_auto_20161024_1559'), - ] - - operations = [ - migrations.AddField( - model_name='log', - name='component', - field=models.TextField(default='', verbose_name='Component (Module / App)'), - preserve_default=False, - ), - migrations.AddField( - model_name='log', - name='context', - field=models.TextField(blank=True, verbose_name='Context'), - ), - ] diff --git a/core/migrations/0004_auto_20161110_1215.py b/core/migrations/0004_auto_20161110_1215.py deleted file mode 100644 index c0c6f41..0000000 --- a/core/migrations/0004_auto_20161110_1215.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-11-10 15:15 -from __future__ import unicode_literals - -import django.contrib.postgres.fields.jsonb -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0003_auto_20161101_1457'), - ] - - operations = [ - migrations.AlterField( - model_name='log', - name='context', - field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, verbose_name='Context'), - ), - ] diff --git a/courses/admin.py b/courses/admin.py index af61d38..9d07e93 100644 --- a/courses/admin.py +++ b/courses/admin.py @@ -1,39 +1,39 @@ from django.contrib import admin -from .models import CourseCategory, Course, Subject,Topic, Activity, Material, CategorySubject +from .models import CourseCategory, Course, Subject, Topic, Activity, Material, CategorySubject, Exercise class CategoryAdmin(admin.ModelAdmin): - list_display = ['name', 'slug'] - search_fields = ['name', 'slug'] + list_display = ['name', 'slug'] + search_fields = ['name', 'slug'] class CategorySubjectAdmin(admin.ModelAdmin): - list_display = ['name', 'slug'] - search_fields = ['name', 'slug'] + list_display = ['name', 'slug'] + search_fields = ['name', 'slug'] class CourseAdmin(admin.ModelAdmin): - list_display = ['name', 'slug'] - search_fields = ['name', 'slug'] + list_display = ['name', 'slug'] + search_fields = ['name', 'slug'] class SubjectAdmin(admin.ModelAdmin): - list_display = ['name', 'slug'] - search_fields = ['name', 'slug'] + list_display = ['name', 'slug'] + search_fields = ['name', 'slug'] class TopicAdmin(admin.ModelAdmin): - list_display = ['name', 'slug'] - search_fields = ['name', 'slug'] + list_display = ['name', 'slug'] + search_fields = ['name', 'slug'] class ActivityAdmin(admin.ModelAdmin): - list_display = ['name', 'slug'] - search_fields = ['name', 'slug'] + list_display = ['name', 'slug'] + search_fields = ['name', 'slug'] class MaterialAdmin(admin.ModelAdmin): - list_display = ['name', 'slug'] - search_fields = ['name', 'slug'] + list_display = ['name', 'slug'] + search_fields = ['name', 'slug'] admin.site.register(CourseCategory, CategoryAdmin) admin.site.register(Course, CourseAdmin) admin.site.register(Subject, SubjectAdmin) admin.site.register(Topic, TopicAdmin) -admin.site.register(Activity,ActivityAdmin) -admin.site.register(Material,MaterialAdmin) +admin.site.register(Activity, ActivityAdmin) +admin.site.register(Material, MaterialAdmin) admin.site.register(CategorySubject, CategorySubjectAdmin) diff --git a/courses/migrations/0001_initial.py b/courses/migrations/0001_initial.py index 508abb2..8762129 100644 --- a/courses/migrations/0001_initial.py +++ b/courses/migrations/0001_initial.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 +# Generated by Django 1.10 on 2016-11-13 17:47 from __future__ import unicode_literals import autoslug.fields +from django.conf import settings from django.db import migrations, models import django.db.models.deletion import s3direct.fields @@ -14,6 +15,7 @@ class Migration(migrations.Migration): dependencies = [ ('core', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -23,6 +25,7 @@ class Migration(migrations.Migration): ('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')), ('limit_date', models.DateField(verbose_name='Deliver Date')), ('all_students', models.BooleanField(default=False, verbose_name='All Students')), + ('students', models.ManyToManyField(related_name='activities', to=settings.AUTH_USER_MODEL, verbose_name='Students')), ], bases=('core.resource',), ), @@ -32,10 +35,11 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('pdf', s3direct.fields.S3DirectField()), ('name', models.CharField(max_length=100)), + ('diet', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='courses.Activity')), ], options={ - 'verbose_name_plural': 'Activitys Files', 'verbose_name': 'Activity File', + 'verbose_name_plural': 'Activitys Files', }, ), migrations.CreateModel( @@ -47,8 +51,8 @@ class Migration(migrations.Migration): ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')), ], options={ - 'verbose_name_plural': 'Categories', 'verbose_name': 'Category', + 'verbose_name_plural': 'Categories', }, ), migrations.CreateModel( @@ -65,13 +69,12 @@ class Migration(migrations.Migration): ('end_register_date', models.DateField(verbose_name='Register Date (End)')), ('init_date', models.DateField(verbose_name='Begin of Course Date')), ('end_date', models.DateField(verbose_name='End of Course Date')), - ('image', models.ImageField(blank=True, upload_to='courses/', verbose_name='Image')), ('public', models.BooleanField(default=False, verbose_name='Public')), ], options={ - 'ordering': ('create_date', 'name'), - 'verbose_name_plural': 'Courses', 'verbose_name': 'Course', + 'verbose_name_plural': 'Courses', + 'ordering': ('create_date', 'name'), }, ), migrations.CreateModel( @@ -83,8 +86,8 @@ class Migration(migrations.Migration): ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')), ], options={ - 'verbose_name_plural': 'Categories', 'verbose_name': 'Category', + 'verbose_name_plural': 'Categories', }, ), migrations.CreateModel( @@ -109,6 +112,7 @@ class Migration(migrations.Migration): fields=[ ('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')), ('all_students', models.BooleanField(default=False, verbose_name='All Students')), + ('students', models.ManyToManyField(related_name='materials', to=settings.AUTH_USER_MODEL, verbose_name='Students')), ], bases=('core.resource',), ), @@ -124,11 +128,15 @@ class Migration(migrations.Migration): ('end_date', models.DateField(verbose_name='End of Subject Date')), ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')), ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')), + ('category', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subject_category', to='courses.CategorySubject', verbose_name='Category')), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course')), + ('professors', models.ManyToManyField(related_name='professors_subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors')), + ('students', models.ManyToManyField(blank=True, related_name='subject_student', to=settings.AUTH_USER_MODEL, verbose_name='Students')), ], options={ - 'ordering': ('create_date', 'name'), - 'verbose_name_plural': 'Subjects', 'verbose_name': 'Subject', + 'verbose_name_plural': 'Subjects', + 'ordering': ('create_date', 'name'), }, ), migrations.CreateModel( @@ -138,10 +146,11 @@ class Migration(migrations.Migration): ('name', models.CharField(max_length=100, verbose_name='Name')), ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), ('description', models.TextField(blank=True, verbose_name='Description')), + ('subjects', models.ManyToManyField(to='courses.Subject')), ], options={ - 'verbose_name_plural': 'subject categories', 'verbose_name': 'subject category', + 'verbose_name_plural': 'subject categories', }, ), migrations.CreateModel( @@ -154,11 +163,53 @@ class Migration(migrations.Migration): ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')), ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')), ('visible', models.BooleanField(default=False, verbose_name='Visible')), + ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Owner')), + ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Subject', verbose_name='Subject')), ], options={ - 'ordering': ('create_date', 'name'), - 'verbose_name_plural': 'Topics', 'verbose_name': 'Topic', + 'verbose_name_plural': 'Topics', + 'ordering': ('create_date', 'name'), }, ), + migrations.AddField( + model_name='material', + name='topic', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materials', to='courses.Topic', verbose_name='Topic'), + ), + migrations.AddField( + model_name='linkmaterial', + name='material', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_link', to='courses.Material', verbose_name='Material'), + ), + migrations.AddField( + model_name='filematerial', + name='material', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_file', to='courses.Material', verbose_name='Material'), + ), + migrations.AddField( + model_name='course', + name='category', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='course_category', to='courses.CourseCategory', verbose_name='Category'), + ), + migrations.AddField( + model_name='course', + name='coordenator', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='course_coordenator', to=settings.AUTH_USER_MODEL, verbose_name='Coordenator'), + ), + migrations.AddField( + model_name='course', + name='professors', + field=models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors'), + ), + migrations.AddField( + model_name='course', + name='students', + field=models.ManyToManyField(blank=True, related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'), + ), + migrations.AddField( + model_name='activity', + name='topic', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activities', to='courses.Topic', verbose_name='Topic'), + ), ] diff --git a/courses/migrations/0002_auto_20161024_1559.py b/courses/migrations/0002_auto_20161024_1559.py deleted file mode 100644 index 793eec0..0000000 --- a/courses/migrations/0002_auto_20161024_1559.py +++ /dev/null @@ -1,105 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('courses', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='topic', - name='owner', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Owner'), - ), - migrations.AddField( - model_name='topic', - name='subject', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Subject', verbose_name='Subject'), - ), - migrations.AddField( - model_name='subjectcategory', - name='subjects', - field=models.ManyToManyField(to='courses.Subject'), - ), - migrations.AddField( - model_name='subject', - name='category', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subject_category', to='courses.CategorySubject', verbose_name='Category'), - ), - migrations.AddField( - model_name='subject', - name='course', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course'), - ), - migrations.AddField( - model_name='subject', - name='professors', - field=models.ManyToManyField(related_name='professors_subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors'), - ), - migrations.AddField( - model_name='subject', - name='students', - field=models.ManyToManyField(blank=True, related_name='subject_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'), - ), - migrations.AddField( - model_name='material', - name='students', - field=models.ManyToManyField(related_name='materials', to=settings.AUTH_USER_MODEL, verbose_name='Students'), - ), - migrations.AddField( - model_name='material', - name='topic', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materials', to='courses.Topic', verbose_name='Topic'), - ), - migrations.AddField( - model_name='linkmaterial', - name='material', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_link', to='courses.Material', verbose_name='Material'), - ), - migrations.AddField( - model_name='filematerial', - name='material', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_file', to='courses.Material', verbose_name='Material'), - ), - migrations.AddField( - model_name='course', - name='category', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='course_category', to='courses.CourseCategory', verbose_name='Category'), - ), - migrations.AddField( - model_name='course', - name='professors', - field=models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors'), - ), - migrations.AddField( - model_name='course', - name='students', - field=models.ManyToManyField(blank=True, related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'), - ), - migrations.AddField( - model_name='activityfile', - name='diet', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='courses.Activity'), - ), - migrations.AddField( - model_name='activity', - name='students', - field=models.ManyToManyField(related_name='activities', to=settings.AUTH_USER_MODEL, verbose_name='Students'), - ), - migrations.AddField( - model_name='activity', - name='topic', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activities', to='courses.Topic', verbose_name='Topic'), - ), - ] diff --git a/courses/migrations/0002_exercise.py b/courses/migrations/0002_exercise.py new file mode 100644 index 0000000..709d21a --- /dev/null +++ b/courses/migrations/0002_exercise.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2016-11-13 19:30 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Exercise', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('file', models.FileField(upload_to='uploads/%Y/%m/%d')), + ('name', models.CharField(max_length=100)), + ('exercise', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_exercise', to='courses.Material', verbose_name='Material')), + ], + ), + ] diff --git a/courses/migrations/0003_remove_course_image.py b/courses/migrations/0003_remove_course_image.py deleted file mode 100644 index 582b9f2..0000000 --- a/courses/migrations/0003_remove_course_image.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-11-06 12:35 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0002_auto_20161024_1559'), - ] - - operations = [ - migrations.RemoveField( - model_name='course', - name='image', - ), - ] diff --git a/courses/migrations/0004_course_coordenator.py b/courses/migrations/0004_course_coordenator.py deleted file mode 100644 index 8e3ff39..0000000 --- a/courses/migrations/0004_course_coordenator.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-11-08 15:00 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('courses', '0003_remove_course_image'), - ] - - operations = [ - migrations.AddField( - model_name='course', - name='coordenator', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='course_coordenator', to=settings.AUTH_USER_MODEL, verbose_name='Coordenator'), - ), - ] diff --git a/courses/models.py b/courses/models.py index 1ecf84f..b98300d 100644 --- a/courses/models.py +++ b/courses/models.py @@ -157,6 +157,14 @@ class LinkMaterial(models.Model): name = models.CharField(max_length=100) description = models.TextField() url = models.URLField('Link', max_length=300) +""" +It represents the Exercises inside topic. +""" + +class Exercise(models.Model): + exercise = models.ForeignKey(Material, verbose_name = _('Material'), related_name='material_exercise') + file = models.FileField(upload_to='uploads/%Y/%m/%d') + name = models.CharField(max_length=100) """ It is a category for each subject. diff --git a/courses/templates/subject/form_view_student.html b/courses/templates/subject/form_view_student.html index 9d8a60d..09dd424 100644 --- a/courses/templates/subject/form_view_student.html +++ b/courses/templates/subject/form_view_student.html @@ -1,12 +1,12 @@ - {% load static i18n list_topic_foruns permission_tags widget_tweaks professor_access%} +{% load static i18n list_topic_foruns permission_tags widget_tweaks professor_access%} +{% professor_subject topic.subject user as professor_links %} - - {% block javascript %} - - - - - {% endblock %} + {% block javascript %} + + + + + {% endblock %}
@@ -34,16 +34,65 @@
+ + {% if not professor_links %} +
+
+
+

{% trans 'Material' %}

+
+
+ {# materiais do tópico no modo de visualização #} +
    + {% list_topic_file request topic %} + {% list_topic_link request topic%} +
+
+
+ {# avaliações d topico #} +
+
+

{% trans 'Activities' %}

+
+
+ + {# avaliações do tópico no modo de visualização #} +
    + {% list_topic_poll request topic %} + {% list_topic_foruns request topic %} +
+
+
+
+
+

{% trans 'Exercises' %}

+
+
+ {# exercício do tópico no modo de visualização #} +
    + {% list_topic_poll request topic %} + {% list_topic_foruns request topic %} +
+
+
+ {# exercício do tópico no modo de edição #} +
    + {% list_topic_file_edit request topic %} + {% list_topic_link_edit request topic%} +
+
+
+ {% include "exercise/create_exercise.html" %} +
+ {% endif %} +
- {% professor_subject topic.subject user as professor_links %} - {% if professor_links%} + {% if professor_links %} {% include "links/create_link.html" %} {% include "links/delete_link.html" %} - {% else %} - {% include "exercise/create_exercise.html" %} {% endif %} diff --git a/courses/templatetags/list_topic_exercises.py b/courses/templatetags/list_topic_exercises.py new file mode 100644 index 0000000..39d8593 --- /dev/null +++ b/courses/templatetags/list_topic_exercises.py @@ -0,0 +1,27 @@ +from django import template +from .models import Exercise + +register = template.Library() + + +@register.inclusion_tag('subject/form_view_student.html') +def list_topic_exercise(request, exercise): + context = { + 'request': request, + } + + context['exercises'] = Exercise.objects.filter(exercise = exercise) + + return context + + +@register.inclusion_tag('topic/list_file_edit.html') +def list_topic_exercise_edit(request, exercise): + context = { + 'request': request, + } + + context['exercises'] = Exercise.objects.filter(exercise = exercise) + context['exercise'] = exercise + + return context diff --git a/courses/templatetags/list_topic_foruns.py b/courses/templatetags/list_topic_foruns.py index d14b0b5..28e2b98 100644 --- a/courses/templatetags/list_topic_foruns.py +++ b/courses/templatetags/list_topic_foruns.py @@ -11,6 +11,7 @@ register = template.Library() Template tag to load all the foruns of a post """ + @register.inclusion_tag('topic/list_topic_foruns.html') def list_topic_foruns(request, topic): context = { @@ -21,6 +22,7 @@ def list_topic_foruns(request, topic): return context + @register.inclusion_tag('subject/poll_item_actions.html') def list_topic_poll(request, topic): context = { @@ -44,6 +46,7 @@ def list_topic_poll_teacher(request, topic): return context + @register.inclusion_tag('topic/list_file.html') def list_topic_file(request, topic): context = { @@ -55,6 +58,7 @@ def list_topic_file(request, topic): return context + @register.inclusion_tag('topic/list_file_edit.html') def list_topic_file_edit(request, topic): context = { @@ -66,6 +70,7 @@ def list_topic_file_edit(request, topic): return context + @register.inclusion_tag('topic/link_topic_list_edit.html') def list_topic_link_edit(request,topic): context = { @@ -75,6 +80,7 @@ def list_topic_link_edit(request,topic): context['topic'] = topic return context + @register.inclusion_tag('topic/link_topic_list.html') def list_topic_link(request,topic): context = { diff --git a/exam/migrations/0001_initial.py b/exam/migrations/0001_initial.py index 95f2ece..81703fe 100644 --- a/exam/migrations/0001_initial.py +++ b/exam/migrations/0001_initial.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 +# Generated by Django 1.10 on 2016-11-13 17:47 from __future__ import unicode_literals +from django.conf import settings from django.db import migrations, models import django.db.models.deletion @@ -12,6 +13,7 @@ class Migration(migrations.Migration): dependencies = [ ('courses', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -23,9 +25,9 @@ class Migration(migrations.Migration): ('order', models.PositiveSmallIntegerField(verbose_name='Order')), ], options={ - 'ordering': ('order',), - 'verbose_name_plural': 'Answers', 'verbose_name': 'Answer', + 'verbose_name_plural': 'Answers', + 'ordering': ('order',), }, ), migrations.CreateModel( @@ -37,8 +39,8 @@ class Migration(migrations.Migration): ('answer', models.ManyToManyField(related_name='student_answer', to='exam.Answer', verbose_name='Answers Students')), ], options={ - 'verbose_name_plural': 'Answers Student', 'verbose_name': 'Answer Stundent', + 'verbose_name_plural': 'Answers Student', }, ), migrations.CreateModel( @@ -49,8 +51,8 @@ class Migration(migrations.Migration): ('exibe', models.BooleanField(default=False, verbose_name='Exibe?')), ], options={ - 'verbose_name_plural': 'Exams', 'verbose_name': 'Exam', + 'verbose_name_plural': 'Exams', }, bases=('courses.activity',), ), @@ -59,4 +61,14 @@ class Migration(migrations.Migration): name='exam', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student_exam', to='exam.Exam', verbose_name='Exam'), ), + migrations.AddField( + model_name='answersstudent', + name='student', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL, verbose_name='Student'), + ), + migrations.AddField( + model_name='answer', + name='exam', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='exam.Exam', verbose_name='Answers'), + ), ] diff --git a/exam/migrations/0002_auto_20161024_1559.py b/exam/migrations/0002_auto_20161024_1559.py deleted file mode 100644 index 870a4fc..0000000 --- a/exam/migrations/0002_auto_20161024_1559.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('exam', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='answersstudent', - name='student', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL, verbose_name='Student'), - ), - migrations.AddField( - model_name='answer', - name='exam', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='exam.Exam', verbose_name='Answers'), - ), - ] diff --git a/files/migrations/0001_initial.py b/files/migrations/0001_initial.py index 1e2f60a..62ddbc5 100644 --- a/files/migrations/0001_initial.py +++ b/files/migrations/0001_initial.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 +# Generated by Django 1.10 on 2016-11-13 17:47 from __future__ import unicode_literals +from django.conf import settings from django.db import migrations, models import django.db.models.deletion import files.models @@ -12,8 +13,9 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('core', '0001_initial'), ('courses', '0001_initial'), + ('core', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -24,11 +26,12 @@ class Migration(migrations.Migration): ('description', models.TextField(blank=True, verbose_name='Description')), ('file_url', models.FileField(upload_to=files.models.file_path, verbose_name='File')), ('file_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='topic_files', to='core.MimeType', verbose_name='Type file')), + ('professor', models.ManyToManyField(related_name='file_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors')), ], options={ - 'ordering': ('-id',), - 'verbose_name_plural': 'Files', 'verbose_name': 'File', + 'verbose_name_plural': 'Files', + 'ordering': ('-id',), }, bases=('courses.material',), ), diff --git a/files/migrations/0002_topicfile_professor.py b/files/migrations/0002_topicfile_professor.py deleted file mode 100644 index eb54807..0000000 --- a/files/migrations/0002_topicfile_professor.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('files', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='topicfile', - name='professor', - field=models.ManyToManyField(related_name='file_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors'), - ), - ] diff --git a/forum/migrations/0001_initial.py b/forum/migrations/0001_initial.py index 392462d..30c7e58 100644 --- a/forum/migrations/0001_initial.py +++ b/forum/migrations/0001_initial.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 +# Generated by Django 1.10 on 2016-11-13 17:47 from __future__ import unicode_literals +from django.conf import settings from django.db import migrations, models import django.db.models.deletion @@ -12,6 +13,7 @@ class Migration(migrations.Migration): dependencies = [ ('courses', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -24,8 +26,8 @@ class Migration(migrations.Migration): ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Create Date')), ], options={ - 'verbose_name_plural': 'Foruns', 'verbose_name': 'Forum', + 'verbose_name_plural': 'Foruns', }, bases=('courses.activity',), ), @@ -36,10 +38,12 @@ class Migration(migrations.Migration): ('message', models.TextField(verbose_name='Post message')), ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')), ('post_date', models.DateTimeField(auto_now_add=True, verbose_name='Post Date')), + ('forum', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Forum', verbose_name='Forum')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor')), ], options={ - 'verbose_name_plural': 'Posts', 'verbose_name': 'Post', + 'verbose_name_plural': 'Posts', }, ), migrations.CreateModel( @@ -50,10 +54,11 @@ class Migration(migrations.Migration): ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')), ('answer_date', models.DateTimeField(auto_now_add=True, verbose_name='Answer Date')), ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Post', verbose_name='Post')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor')), ], options={ - 'verbose_name_plural': 'Post Answers', 'verbose_name': 'Post Answer', + 'verbose_name_plural': 'Post Answers', }, ), ] diff --git a/forum/migrations/0002_auto_20161024_1559.py b/forum/migrations/0002_auto_20161024_1559.py deleted file mode 100644 index b104eec..0000000 --- a/forum/migrations/0002_auto_20161024_1559.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('forum', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='postanswer', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor'), - ), - migrations.AddField( - model_name='post', - name='forum', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Forum', verbose_name='Forum'), - ), - migrations.AddField( - model_name='post', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor'), - ), - ] diff --git a/links/migrations/0001_initial.py b/links/migrations/0001_initial.py index 4554e58..facb49e 100644 --- a/links/migrations/0001_initial.py +++ b/links/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 +# Generated by Django 1.10 on 2016-11-13 17:47 from __future__ import unicode_literals from django.db import migrations, models @@ -21,10 +21,11 @@ class Migration(migrations.Migration): ('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')), ('link_url', models.URLField()), ('link_description', models.CharField(max_length=200)), + ('image', models.ImageField(blank=True, upload_to='links/')), ], options={ - 'verbose_name_plural': 'Links', 'verbose_name': 'Link', + 'verbose_name_plural': 'Links', }, bases=('courses.material',), ), diff --git a/links/migrations/0002_link_image.py b/links/migrations/0002_link_image.py deleted file mode 100644 index 4bdc9cd..0000000 --- a/links/migrations/0002_link_image.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-28 18:34 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('links', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='link', - name='image', - field=models.ImageField(blank=True, upload_to='links/'), - ), - ] diff --git a/poll/migrations/0001_initial.py b/poll/migrations/0001_initial.py index 5c60777..9e03899 100644 --- a/poll/migrations/0001_initial.py +++ b/poll/migrations/0001_initial.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 +# Generated by Django 1.10 on 2016-11-13 17:47 from __future__ import unicode_literals +from django.conf import settings from django.db import migrations, models import django.db.models.deletion @@ -12,6 +13,7 @@ class Migration(migrations.Migration): dependencies = [ ('courses', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -23,9 +25,9 @@ class Migration(migrations.Migration): ('order', models.PositiveSmallIntegerField(verbose_name='Order')), ], options={ - 'ordering': ('order',), - 'verbose_name_plural': 'Answers', 'verbose_name': 'Answer', + 'verbose_name_plural': 'Answers', + 'ordering': ('order',), }, ), migrations.CreateModel( @@ -37,8 +39,8 @@ class Migration(migrations.Migration): ('answer', models.ManyToManyField(related_name='answers_stundet', to='poll.Answer', verbose_name='Answers Students')), ], options={ - 'verbose_name_plural': 'Answers Student', 'verbose_name': 'Answer Stundent', + 'verbose_name_plural': 'Answers Student', }, ), migrations.CreateModel( @@ -47,8 +49,8 @@ class Migration(migrations.Migration): ('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')), ], options={ - 'verbose_name_plural': 'Polls', 'verbose_name': 'Poll', + 'verbose_name_plural': 'Polls', }, bases=('courses.activity',), ), @@ -57,4 +59,14 @@ class Migration(migrations.Migration): name='poll', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers_stundet', to='poll.Poll', verbose_name='Poll'), ), + migrations.AddField( + model_name='answersstudent', + name='student', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers_stundent', to=settings.AUTH_USER_MODEL, verbose_name='Student'), + ), + migrations.AddField( + model_name='answer', + name='poll', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='poll.Poll', verbose_name='Answers'), + ), ] diff --git a/poll/migrations/0002_auto_20161024_1559.py b/poll/migrations/0002_auto_20161024_1559.py deleted file mode 100644 index 7fac928..0000000 --- a/poll/migrations/0002_auto_20161024_1559.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('poll', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='answersstudent', - name='student', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers_stundent', to=settings.AUTH_USER_MODEL, verbose_name='Student'), - ), - migrations.AddField( - model_name='answer', - name='poll', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='poll.Poll', verbose_name='Answers'), - ), - ] diff --git a/users/migrations/0001_initial.py b/users/migrations/0001_initial.py index a3042d8..0d464b1 100644 --- a/users/migrations/0001_initial.py +++ b/users/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-24 18:59 +# Generated by Django 1.10 on 2016-11-13 17:42 from __future__ import unicode_literals import django.contrib.auth.models -- libgit2 0.21.2