diff --git a/core/admin.py b/core/admin.py index 4881288..dcba4fb 100644 --- a/core/admin.py +++ b/core/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from .models import Action, Resource, Action_Resource, Log +from .models import Action, Resource, Action_Resource, Log, MymeType class ActionAdmin(admin.ModelAdmin): list_display = ['name', 'created_date'] @@ -18,7 +18,12 @@ class LogAdmin(admin.ModelAdmin): list_display = ['datetime', 'user', 'action_resource'] search_fields = ['user'] +class MymeTypeAdmin(admin.ModelAdmin): + list_display = ['typ', 'icon'] + search_fields = ['typ', 'icon'] + admin.site.register(Action, ActionAdmin) admin.site.register(Resource, ResourceAdmin) admin.site.register(Action_Resource, ActionResourceAdmin) -admin.site.register(Log, LogAdmin) \ No newline at end of file +admin.site.register(Log, LogAdmin) +admin.site.register(MymeType, MymeTypeAdmin) \ No newline at end of file diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py index 4a98a5b..f9418e1 100644 --- a/core/migrations/0001_initial.py +++ b/core/migrations/0001_initial.py @@ -1,9 +1,8 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-05 13:37 +# Generated by Django 1.10 on 2016-10-17 15:49 from __future__ import unicode_literals import autoslug.fields -from django.conf import settings from django.db import migrations, models import django.db.models.deletion @@ -13,7 +12,6 @@ class Migration(migrations.Migration): initial = True dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -25,19 +23,18 @@ class Migration(migrations.Migration): ('created_date', models.DateField(auto_now_add=True, verbose_name='Created Date')), ], options={ - 'verbose_name': 'Action', 'verbose_name_plural': 'Actions', + 'verbose_name': 'Action', }, ), 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': 'Action_Resource', 'verbose_name_plural': 'Action_Resources', + 'verbose_name': 'Action_Resource', }, ), migrations.CreateModel( @@ -45,12 +42,22 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('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': 'Log', 'verbose_name_plural': 'Logs', + 'verbose_name': 'Log', + }, + ), + migrations.CreateModel( + name='MymeType', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('typ', models.CharField(max_length=100, unique=True, verbose_name='Type')), + ('icon', models.CharField(max_length=50, unique=True, verbose_name='Icon')), + ], + options={ + 'verbose_name_plural': 'Amadeus Myme Types', + 'verbose_name': 'Amadeus Myme Type', }, ), migrations.CreateModel( @@ -61,12 +68,10 @@ 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': 'Notification', 'verbose_name_plural': 'Notifications', + 'verbose_name': 'Notification', }, ), migrations.CreateModel( @@ -79,13 +84,8 @@ class Migration(migrations.Migration): ('url', models.CharField(default='', max_length=100, verbose_name='URL')), ], options={ - 'verbose_name': 'Resource', 'verbose_name_plural': 'Resources', + 'verbose_name': 'Resource', }, ), - 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_20161017_1249.py b/core/migrations/0002_auto_20161017_1249.py new file mode 100644 index 0000000..608f951 --- /dev/null +++ b/core/migrations/0002_auto_20161017_1249.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2016-10-17 15:49 +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 = [ + ('core', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + 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/0002_mymetype.py b/core/migrations/0002_mymetype.py deleted file mode 100644 index a813883..0000000 --- a/core/migrations/0002_mymetype.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-12 17:29 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='MymeType', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('typ', models.CharField(max_length=100, unique=True, verbose_name='Type')), - ('icon', models.CharField(max_length=50, unique=True, verbose_name='Icon')), - ], - options={ - 'verbose_name_plural': 'Amadeus Myme Types', - 'verbose_name': 'Amadeus Myme Type', - }, - ), - ] diff --git a/courses/admin.py b/courses/admin.py index e5e1b46..af61d38 100644 --- a/courses/admin.py +++ b/courses/admin.py @@ -1,11 +1,15 @@ from django.contrib import admin -from .models import CourseCategory, Course, Subject,Topic, Activity, Material +from .models import CourseCategory, Course, Subject,Topic, Activity, Material, CategorySubject class CategoryAdmin(admin.ModelAdmin): list_display = ['name', 'slug'] search_fields = ['name', 'slug'] +class CategorySubjectAdmin(admin.ModelAdmin): + list_display = ['name', 'slug'] + search_fields = ['name', 'slug'] + class CourseAdmin(admin.ModelAdmin): list_display = ['name', 'slug'] search_fields = ['name', 'slug'] @@ -32,3 +36,4 @@ admin.site.register(Subject, SubjectAdmin) admin.site.register(Topic, TopicAdmin) admin.site.register(Activity,ActivityAdmin) admin.site.register(Material,MaterialAdmin) +admin.site.register(CategorySubject, CategorySubjectAdmin) diff --git a/courses/forms.py b/courses/forms.py index 826f15b..5d18c1c 100644 --- a/courses/forms.py +++ b/courses/forms.py @@ -192,7 +192,7 @@ class ActivityForm(forms.ModelForm): class FileMaterialForm(forms.ModelForm): class Meta: model = FileMaterial - fields = ['material', 'file', 'name'] + fields = ['name', 'file'] class LinkMaterialForm(forms.ModelForm): class Meta: diff --git a/courses/migrations/0001_initial.py b/courses/migrations/0001_initial.py index ed91baf..f9694bc 100644 --- a/courses/migrations/0001_initial.py +++ b/courses/migrations/0001_initial.py @@ -1,9 +1,8 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-05 13:37 +# Generated by Django 1.10 on 2016-10-17 15:49 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,7 +13,6 @@ class Migration(migrations.Migration): initial = True dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('core', '0001_initial'), ] @@ -23,9 +21,8 @@ class Migration(migrations.Migration): name='Activity', 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')), - ('limit_date', models.DateTimeField(verbose_name='Deliver Date')), + ('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',), ), @@ -35,15 +32,14 @@ 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': 'Activity File', 'verbose_name_plural': 'Activitys Files', + 'verbose_name': 'Activity File', }, ), migrations.CreateModel( - name='Category', + name='CategorySubject', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, unique=True, verbose_name='Name')), @@ -51,8 +47,8 @@ class Migration(migrations.Migration): ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')), ], options={ - 'verbose_name': 'Category', 'verbose_name_plural': 'Categories', + 'verbose_name': 'Category', }, ), migrations.CreateModel( @@ -70,22 +66,48 @@ class Migration(migrations.Migration): ('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')), - ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Category', verbose_name='Category')), - ('professors', models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors')), - ('students', models.ManyToManyField(related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students')), ], options={ - 'verbose_name': 'Course', 'ordering': ('create_date', 'name'), 'verbose_name_plural': 'Courses', + 'verbose_name': 'Course', }, ), migrations.CreateModel( + name='CourseCategory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100, unique=True, verbose_name='Name')), + ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), + ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')), + ], + options={ + 'verbose_name_plural': 'Categories', + 'verbose_name': 'Category', + }, + ), + migrations.CreateModel( + name='FileMaterial', + 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)), + ], + ), + migrations.CreateModel( + name='LinkMaterial', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100)), + ('description', models.TextField()), + ('url', models.URLField(max_length=300, verbose_name='Link')), + ], + ), + migrations.CreateModel( name='Material', 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',), ), @@ -101,13 +123,11 @@ 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')), - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course')), - ('professors', models.ManyToManyField(related_name='subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors')), ], options={ - 'verbose_name': 'Subject', 'ordering': ('create_date', 'name'), 'verbose_name_plural': 'Subjects', + 'verbose_name': 'Subject', }, ), migrations.CreateModel( @@ -117,11 +137,10 @@ 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': 'subject category', 'verbose_name_plural': 'subject categories', + 'verbose_name': 'subject category', }, ), migrations.CreateModel( @@ -134,23 +153,11 @@ 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={ - 'verbose_name': 'Topic', 'ordering': ('create_date', 'name'), 'verbose_name_plural': 'Topics', + 'verbose_name': 'Topic', }, ), - 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='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_20161017_1249.py b/courses/migrations/0002_auto_20161017_1249.py new file mode 100644 index 0000000..d2ad680 --- /dev/null +++ b/courses/migrations/0002_auto_20161017_1249.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2016-10-17 15:49 +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 = [ + ('courses', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + 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(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(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_subject_students.py b/courses/migrations/0002_subject_students.py deleted file mode 100644 index cc00c9d..0000000 --- a/courses/migrations/0002_subject_students.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-05 21:02 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('courses', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='subject', - name='students', - field=models.ManyToManyField(related_name='subject_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'), - ), - ] diff --git a/courses/migrations/0003_auto_20161007_1612.py b/courses/migrations/0003_auto_20161007_1612.py deleted file mode 100644 index 6ec5dd6..0000000 --- a/courses/migrations/0003_auto_20161007_1612.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-07 19:12 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0002_subject_students'), - ] - - operations = [ - migrations.RenameModel( - old_name='Category', - new_name='CourseCategory', - ), - migrations.AlterField( - model_name='activity', - name='limit_date', - field=models.DateField(verbose_name='Deliver Date'), - ), - migrations.AlterField( - model_name='subject', - name='professors', - field=models.ManyToManyField(related_name='professors_subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors'), - ), - ] diff --git a/courses/migrations/0004_auto_20161011_1951.py b/courses/migrations/0004_auto_20161011_1951.py deleted file mode 100644 index 567bfa3..0000000 --- a/courses/migrations/0004_auto_20161011_1951.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-11 22:51 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0003_auto_20161007_1612'), - ] - - operations = [ - migrations.AlterField( - 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'), - ), - ] diff --git a/courses/migrations/0005_file.py b/courses/migrations/0005_file.py deleted file mode 100644 index bd45634..0000000 --- a/courses/migrations/0005_file.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-13 17:29 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0002_mymetype'), - ('courses', '0004_auto_20161011_1951'), - ] - - operations = [ - migrations.CreateModel( - name='File', - fields=[ - ('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')), - ('description', models.TextField(blank=True, verbose_name='Description')), - ('content', models.FileField(upload_to='uploads/courses/subject/topic/%Y/%m/%d/')), - ('typ', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='file', to='core.MymeType', verbose_name='Type')), - ], - options={ - 'verbose_name': 'Topic file', - 'verbose_name_plural': 'Topic files', - }, - bases=('courses.material',), - ), - ] diff --git a/courses/migrations/0006_auto_20161017_0117.py b/courses/migrations/0006_auto_20161017_0117.py deleted file mode 100644 index ac44462..0000000 --- a/courses/migrations/0006_auto_20161017_0117.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-17 04:17 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0002_mymetype'), - ('courses', '0005_file'), - ] - - operations = [ - migrations.RemoveField( - model_name='file', - name='material_ptr', - ), - migrations.RemoveField( - model_name='file', - name='typ', - ), - migrations.DeleteModel( - name='File', - ), - ] diff --git a/courses/migrations/0007_filematerial_linkmaterial.py b/courses/migrations/0007_filematerial_linkmaterial.py deleted file mode 100644 index 05b13f9..0000000 --- a/courses/migrations/0007_filematerial_linkmaterial.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-17 04:55 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0006_auto_20161017_0117'), - ] - - operations = [ - migrations.CreateModel( - name='FileMaterial', - 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)), - ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_file', to='courses.Material', verbose_name='Material')), - ], - ), - migrations.CreateModel( - name='LinkMaterial', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100)), - ('description', models.TextField()), - ('url', models.URLField(max_length=300, verbose_name='Link')), - ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_link', to='courses.Material', verbose_name='Material')), - ], - ), - ] diff --git a/courses/models.py b/courses/models.py index 3ed8ef9..416983a 100644 --- a/courses/models.py +++ b/courses/models.py @@ -18,6 +18,18 @@ class CourseCategory(models.Model): def __str__(self): return self.name +class CategorySubject(models.Model): + name = models.CharField(_('Name'), max_length=100, unique=True) + slug = AutoSlugField(_("Slug"), populate_from='name', unique=True) + create_date = models.DateField(_('Creation Date'), auto_now_add=True) + + class Meta: + verbose_name = _('Category') + verbose_name_plural = _('Categories') + + def __str__(self): + return self.name + class Course(models.Model): name = models.CharField(_('Name'), max_length = 100) @@ -54,6 +66,7 @@ class Subject(models.Model): create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True) update_date = models.DateTimeField(_('Date of last update'), auto_now=True) course = models.ForeignKey(Course, verbose_name = _('Course'), related_name="subjects") + category = models.ForeignKey(CategorySubject, verbose_name = _('Category'), related_name='subject_category',null=True) professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='professors_subjects') students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='subject_student') diff --git a/courses/static/js/material.js b/courses/static/js/material.js new file mode 100644 index 0000000..f62bfdb --- /dev/null +++ b/courses/static/js/material.js @@ -0,0 +1,82 @@ +function getCookie(name) { + var cookieValue = null; + if (document.cookie && document.cookie !== '') { + var cookies = document.cookie.split(';'); + for (var i = 0; i < cookies.length; i++) { + var cookie = jQuery.trim(cookies[i]); + // Does this cookie string begin with the name we want? + if (cookie.substring(0, name.length + 1) === (name + '=')) { + cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); + break; + } + } + } + return cookieValue; +} + + +function createMaterial(url, topic) { + $.ajax({ + url: url, + data: {'topic': topic}, + success: function(data) { + $(".material_form").html(data); + $("#id_topic").val(topic); + + setMaterialCreateFormSubmit(); + } + }); + + $("#editFileModal").modal(); +} + +function setMaterialCreateFormSubmit() { + + var frm = $('#material_create'); + frm.submit(function () { + $.ajax({ + type: frm.attr('method'), + url: frm.attr('action'), + data: frm.serialize(), + success: function (data) { + data = data.split('-'); + + $('.foruns_list').append("