Commit 7099db9e360fd5f892698519a488d611c58d6c88

Authored by fbormann
1 parent 2e2905d7

modified the database a bit and changed migrations, if an error pops up, just do…

… the restart procedure in the database
Showing 41 changed files with 233 additions and 1225 deletions   Show diff stats
app/migrations/__init__.py
core/decorators.py
@@ -55,33 +55,33 @@ def notification_decorator(read = False, message = '', actor = None, users = [], @@ -55,33 +55,33 @@ def notification_decorator(read = False, message = '', actor = None, users = [],
55 #Do something before the call 55 #Do something before the call
56 56
57 response = view_function(request, *args, **kwargs) 57 response = view_function(request, *args, **kwargs)
58 - action = Action.objects.filter(name = not_action) 58 + action = Action.objects.filter(name = self.not_action)
59 resource = Resource.objects.filter(name = not_resource) 59 resource = Resource.objects.filter(name = not_resource)
60 -  
61 - if not action:  
62 - action = Action(name = not_action)  
63 - action.save()  
64 - else: 60 + print(resource_link)
  61 + if action.exists():
65 action = action[0] 62 action = action[0]
66 -  
67 - if not resource:  
68 - resource = Resource(name = not_resource)  
69 - resource.save()  
70 else: 63 else:
  64 + action = Action(name = self.not_action)
  65 + action.save()
  66 +
  67 + if resource.exists():
71 resource = resource[0] 68 resource = resource[0]
  69 + else:
  70 + resource = Resource(name = self.not_resource, link= resource_link)
  71 + print(resource)
  72 + resource.save()
72 73
73 action_resource = Action_Resource.objects.filter(action = action, resource = resource) 74 action_resource = Action_Resource.objects.filter(action = action, resource = resource)
74 75
75 - if not action_resource: 76 + if action_resource.exists():
  77 + action_resource = action_resource[0]
  78 + else:
76 action_resource = Action_Resource(action = action, resource = resource) 79 action_resource = Action_Resource(action = action, resource = resource)
77 action_resource.save() 80 action_resource.save()
78 - else:  
79 - action_resource = action_resource[0]  
80 -  
81 - if request.user.is_authenticated: #the user was authenticated by the view  
82 - notification = Notification(actor = request.user, message= message,  
83 - action_resource = action_resource, user = request.user)  
84 81
  82 + for user in users:
  83 + notification = Notification(user=user, actor= actor, message=message, action_resource= action_resource)
  84 + notification.save()
85 85
86 86
87 #Do something after the call 87 #Do something after the call
core/migrations/0001_initial.py
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 -# Generated by Django 1.10 on 2016-09-06 17:50 2 +# Generated by Django 1.10 on 2016-09-20 13:57
3 from __future__ import unicode_literals 3 from __future__ import unicode_literals
4 4
  5 +import autoslug.fields
5 from django.conf import settings 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
@@ -24,8 +25,8 @@ class Migration(migrations.Migration): @@ -24,8 +25,8 @@ class Migration(migrations.Migration):
24 ('created_date', models.DateField(auto_now_add=True, verbose_name='Created Date')), 25 ('created_date', models.DateField(auto_now_add=True, verbose_name='Created Date')),
25 ], 26 ],
26 options={ 27 options={
27 - 'verbose_name': 'Action',  
28 'verbose_name_plural': 'Actions', 28 'verbose_name_plural': 'Actions',
  29 + 'verbose_name': 'Action',
29 }, 30 },
30 ), 31 ),
31 migrations.CreateModel( 32 migrations.CreateModel(
@@ -35,22 +36,37 @@ class Migration(migrations.Migration): @@ -35,22 +36,37 @@ class Migration(migrations.Migration):
35 ('action', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action', verbose_name='Action_Applied')), 36 ('action', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action', verbose_name='Action_Applied')),
36 ], 37 ],
37 options={ 38 options={
38 - 'verbose_name': 'Action_Resource',  
39 'verbose_name_plural': 'Action_Resources', 39 'verbose_name_plural': 'Action_Resources',
  40 + 'verbose_name': 'Action_Resource',
  41 + },
  42 + ),
  43 + migrations.CreateModel(
  44 + name='Log',
  45 + fields=[
  46 + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  47 + ('datetime', models.DateTimeField(auto_now_add=True, verbose_name='Date and Time of action')),
  48 + ('action_resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource')),
  49 + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Actor')),
  50 + ],
  51 + options={
  52 + 'verbose_name_plural': 'Logs',
  53 + 'verbose_name': 'Log',
40 }, 54 },
41 ), 55 ),
42 migrations.CreateModel( 56 migrations.CreateModel(
43 name='Notification', 57 name='Notification',
44 fields=[ 58 fields=[
45 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 59 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
46 - ('message', models.TextField(verbose_name='message')), 60 + ('message', models.TextField(verbose_name='Message')),
47 ('read', models.BooleanField(default=False, verbose_name='Read')), 61 ('read', models.BooleanField(default=False, verbose_name='Read')),
  62 + ('datetime', models.DateTimeField(auto_now_add=True, verbose_name='Date and Time of action')),
48 ('action_resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource')), 63 ('action_resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource')),
49 - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Actor')), 64 + ('actor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notification_Performer', to=settings.AUTH_USER_MODEL, verbose_name='Perfomer')),
  65 + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_Actor', to=settings.AUTH_USER_MODEL, verbose_name='User')),
50 ], 66 ],
51 options={ 67 options={
52 - 'verbose_name': 'Action_Resource',  
53 - 'verbose_name_plural': 'Action_Resources', 68 + 'verbose_name_plural': 'Notifications',
  69 + 'verbose_name': 'Notification',
54 }, 70 },
55 ), 71 ),
56 migrations.CreateModel( 72 migrations.CreateModel(
@@ -58,11 +74,13 @@ class Migration(migrations.Migration): @@ -58,11 +74,13 @@ class Migration(migrations.Migration):
58 fields=[ 74 fields=[
59 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 75 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
60 ('name', models.CharField(max_length=100, verbose_name='Name')), 76 ('name', models.CharField(max_length=100, verbose_name='Name')),
  77 + ('slug', autoslug.fields.AutoSlugField(editable=False, null=True, populate_from='name', unique=True, verbose_name='Slug')),
61 ('created_date', models.DateField(auto_now_add=True, verbose_name='Created Date')), 78 ('created_date', models.DateField(auto_now_add=True, verbose_name='Created Date')),
  79 + ('url', models.CharField(default='', max_length=100, verbose_name='URL')),
62 ], 80 ],
63 options={ 81 options={
64 - 'verbose_name': 'Resource',  
65 'verbose_name_plural': 'Resources', 82 'verbose_name_plural': 'Resources',
  83 + 'verbose_name': 'Resource',
66 }, 84 },
67 ), 85 ),
68 migrations.AddField( 86 migrations.AddField(
core/migrations/0002_auto_20160907_0038.py
@@ -1,48 +0,0 @@ @@ -1,48 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-09-07 03:38  
3 -from __future__ import unicode_literals  
4 -  
5 -import datetime  
6 -from django.conf import settings  
7 -from django.db import migrations, models  
8 -import django.db.models.deletion  
9 -from django.utils.timezone import utc  
10 -  
11 -  
12 -class Migration(migrations.Migration):  
13 -  
14 - dependencies = [  
15 - migrations.swappable_dependency(settings.AUTH_USER_MODEL),  
16 - ('core', '0001_initial'),  
17 - ]  
18 -  
19 - operations = [  
20 - migrations.CreateModel(  
21 - name='Log',  
22 - fields=[  
23 - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),  
24 - ('datetime', models.DateTimeField(auto_now_add=True, verbose_name='Date and Time of action')),  
25 - ('action_resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource')),  
26 - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Actor')),  
27 - ],  
28 - options={  
29 - 'verbose_name_plural': 'Logs',  
30 - 'verbose_name': 'Log',  
31 - },  
32 - ),  
33 - migrations.AlterModelOptions(  
34 - name='notification',  
35 - options={'verbose_name': 'Notification', 'verbose_name_plural': 'Notifications'},  
36 - ),  
37 - migrations.AddField(  
38 - model_name='notification',  
39 - name='datetime',  
40 - field=models.DateTimeField(auto_now_add=True, default=datetime.datetime(2016, 9, 7, 3, 38, 49, 367825, tzinfo=utc), verbose_name='Date and Time of action'),  
41 - preserve_default=False,  
42 - ),  
43 - migrations.AlterField(  
44 - model_name='notification',  
45 - name='message',  
46 - field=models.TextField(verbose_name='Message'),  
47 - ),  
48 - ]  
core/migrations/0003_auto_20160908_1108.py
@@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-08 14:08  
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 - ('core', '0002_auto_20160907_0038'),  
15 - ]  
16 -  
17 - operations = [  
18 - migrations.AddField(  
19 - model_name='notification',  
20 - name='actor',  
21 - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notification_Performer', to=settings.AUTH_USER_MODEL, verbose_name='Perfomer'),  
22 - ),  
23 - migrations.AlterField(  
24 - model_name='notification',  
25 - name='user',  
26 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_Actor', to=settings.AUTH_USER_MODEL, verbose_name='User'),  
27 - ),  
28 - ]  
core/migrations/0004_auto_20160908_1151.py
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-08 14:51  
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', '0003_auto_20160908_1108'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AlterField(  
16 - model_name='resource',  
17 - name='name',  
18 - field=models.CharField(max_length=100, unique=True, verbose_name='Name'),  
19 - ),  
20 - ]  
core/migrations/0005_resource_link.py
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-12 14:36  
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', '0004_auto_20160908_1151'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AddField(  
16 - model_name='resource',  
17 - name='link',  
18 - field=models.CharField(default='', max_length=100, unique=True, verbose_name='URL'),  
19 - ),  
20 - ]  
core/migrations/0006_auto_20160912_1138.py
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-12 14:38  
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', '0005_resource_link'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AlterField(  
16 - model_name='resource',  
17 - name='link',  
18 - field=models.CharField(default='', max_length=100, verbose_name='URL'),  
19 - ),  
20 - ]  
core/migrations/0007_remove_resource_link.py
@@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-12 14:51  
3 -from __future__ import unicode_literals  
4 -  
5 -from django.db import migrations  
6 -  
7 -  
8 -class Migration(migrations.Migration):  
9 -  
10 - dependencies = [  
11 - ('core', '0006_auto_20160912_1138'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.RemoveField(  
16 - model_name='resource',  
17 - name='link',  
18 - ),  
19 - ]  
core/migrations/0008_resource_link.py
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-12 14:52  
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', '0007_remove_resource_link'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AddField(  
16 - model_name='resource',  
17 - name='link',  
18 - field=models.CharField(default='', max_length=100, verbose_name='URL'),  
19 - ),  
20 - ]  
core/migrations/0009_auto_20160916_0126.py
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-16 04:26  
3 -from __future__ import unicode_literals  
4 -  
5 -from django.db import migrations  
6 -  
7 -  
8 -class Migration(migrations.Migration):  
9 -  
10 - dependencies = [  
11 - ('core', '0008_resource_link'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.RenameField(  
16 - model_name='resource',  
17 - old_name='link',  
18 - new_name='url',  
19 - ),  
20 - ]  
core/models.py
1 from django.db import models 1 from django.db import models
2 from django.utils.translation import ugettext_lazy as _ 2 from django.utils.translation import ugettext_lazy as _
3 from users.models import User 3 from users.models import User
  4 +from autoslug.fields import AutoSlugField
4 # Create your models here. 5 # Create your models here.
5 6
6 class Action(models.Model): 7 class Action(models.Model):
@@ -32,7 +33,8 @@ class Resource(models.Model): @@ -32,7 +33,8 @@ class Resource(models.Model):
32 @link: Which URL made that resource able to find 33 @link: Which URL made that resource able to find
33 """ 34 """
34 35
35 - name = models.CharField(_('Name'), max_length =100, unique=True) 36 + name = models.CharField(_('Name'), max_length =100)
  37 + slug = AutoSlugField(_("Slug"), populate_from='name', unique=True, null=True)
36 created_date = models.DateField(_('Created Date'), auto_now_add=True) 38 created_date = models.DateField(_('Created Date'), auto_now_add=True)
37 url = models.CharField(_('URL'), max_length =100, default="") 39 url = models.CharField(_('URL'), max_length =100, default="")
38 40
courses/migrations/0001_initial.py
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-07-18 22:41  
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 - initial = True  
12 -  
13 - dependencies = [  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.CreateModel(  
18 - name='Course',  
19 - fields=[  
20 - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),  
21 - ('name', models.CharField(max_length=100, verbose_name='Nome')),  
22 - ('slug', models.SlugField(max_length=100, verbose_name='Identificador')),  
23 - ('objectivies', models.TextField(blank=True, verbose_name='Objetivos')),  
24 - ('content', models.TextField(blank=True, verbose_name='Conteúdo')),  
25 - ('max_students', models.PositiveIntegerField(blank=True, verbose_name='Máximo de Alunos')),  
26 - ('create_date', models.DateField(auto_now_add=True, verbose_name='Criação')),  
27 - ('init_register_date', models.DateField(verbose_name='Data de Cadastro (Início)')),  
28 - ('end_register_date', models.DateField(verbose_name='Data de Cadastro (Final)')),  
29 - ('init_date', models.DateField(verbose_name='Data de Início do Curso')),  
30 - ('end_date', models.DateField(verbose_name='Data de Final do Curso')),  
31 - ('image', models.ImageField(blank=True, upload_to='', verbose_name='Imagem')),  
32 - ],  
33 - options={  
34 - 'verbose_name_plural': 'Cursos',  
35 - 'verbose_name': 'Curso',  
36 - },  
37 - ),  
38 - migrations.CreateModel(  
39 - name='Module',  
40 - fields=[  
41 - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),  
42 - ('name', models.CharField(max_length=100, verbose_name='Nome')),  
43 - ('slug', models.SlugField(max_length=100, verbose_name='Identificador')),  
44 - ('description', models.TextField(blank=True, verbose_name='Descrição')),  
45 - ('visible', models.BooleanField(default=True, verbose_name='Visível')),  
46 - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='Curso')),  
47 - ],  
48 - options={  
49 - 'verbose_name_plural': 'Módulos',  
50 - 'verbose_name': 'Módulo',  
51 - },  
52 - ),  
53 - ] 1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-09-20 13:57
  3 +from __future__ import unicode_literals
  4 +
  5 +import autoslug.fields
  6 +from django.conf import settings
  7 +from django.db import migrations, models
  8 +import django.db.models.deletion
  9 +
  10 +
  11 +class Migration(migrations.Migration):
  12 +
  13 + initial = True
  14 +
  15 + dependencies = [
  16 + ('core', '0001_initial'),
  17 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  18 + ]
  19 +
  20 + operations = [
  21 + migrations.CreateModel(
  22 + name='Activity',
  23 + fields=[
  24 + ('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 + ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
  26 + ('limit_date', models.DateTimeField(verbose_name='Deliver Date')),
  27 + ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='student')),
  28 + ],
  29 + bases=('core.resource',),
  30 + ),
  31 + migrations.CreateModel(
  32 + name='Category',
  33 + fields=[
  34 + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  35 + ('name', models.CharField(max_length=100, unique=True, verbose_name='Name')),
  36 + ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
  37 + ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')),
  38 + ],
  39 + options={
  40 + 'verbose_name': 'Category',
  41 + 'verbose_name_plural': 'Categories',
  42 + },
  43 + ),
  44 + migrations.CreateModel(
  45 + name='Course',
  46 + fields=[
  47 + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  48 + ('name', models.CharField(max_length=100, verbose_name='Name')),
  49 + ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
  50 + ('objectivies', models.TextField(blank=True, verbose_name='Objectivies')),
  51 + ('content', models.TextField(blank=True, verbose_name='Content')),
  52 + ('max_students', models.PositiveIntegerField(blank=True, verbose_name='Maximum Students')),
  53 + ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')),
  54 + ('init_register_date', models.DateField(verbose_name='Register Date (Begin)')),
  55 + ('end_register_date', models.DateField(verbose_name='Register Date (End)')),
  56 + ('init_date', models.DateField(verbose_name='Begin of Course Date')),
  57 + ('end_date', models.DateField(verbose_name='End of Course Date')),
  58 + ('image', models.ImageField(blank=True, upload_to='courses/', verbose_name='Image')),
  59 + ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Category', verbose_name='Category')),
  60 + ('professors', models.ManyToManyField(related_name='courses', to=settings.AUTH_USER_MODEL, verbose_name='Professors')),
  61 + ('students', models.ManyToManyField(related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students')),
  62 + ],
  63 + options={
  64 + 'verbose_name': 'Course',
  65 + 'verbose_name_plural': 'Courses',
  66 + 'ordering': ('create_date', 'name'),
  67 + },
  68 + ),
  69 + migrations.CreateModel(
  70 + name='Material',
  71 + fields=[
  72 + ('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')),
  73 + ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
  74 + ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='student')),
  75 + ],
  76 + bases=('core.resource',),
  77 + ),
  78 + migrations.CreateModel(
  79 + name='Subject',
  80 + fields=[
  81 + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  82 + ('name', models.CharField(max_length=100, verbose_name='Name')),
  83 + ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
  84 + ('description', models.TextField(blank=True, verbose_name='Description')),
  85 + ('visible', models.BooleanField(default=False, verbose_name='Visible')),
  86 + ('init_date', models.DateField(verbose_name='Begin of Subject Date')),
  87 + ('end_date', models.DateField(verbose_name='End of Subject Date')),
  88 + ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
  89 + ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')),
  90 + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course')),
  91 + ('professors', models.ManyToManyField(related_name='subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors')),
  92 + ],
  93 + options={
  94 + 'verbose_name': 'Subject',
  95 + 'verbose_name_plural': 'Subjects',
  96 + 'ordering': ('create_date', 'name'),
  97 + },
  98 + ),
  99 + migrations.CreateModel(
  100 + name='Topic',
  101 + fields=[
  102 + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  103 + ('name', models.CharField(max_length=100, verbose_name='Name')),
  104 + ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
  105 + ('description', models.TextField(blank=True, verbose_name='Description')),
  106 + ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
  107 + ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')),
  108 + ('visible', models.BooleanField(default=False, verbose_name='Visible')),
  109 + ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Owner')),
  110 + ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Subject', verbose_name='Subject')),
  111 + ],
  112 + options={
  113 + 'verbose_name': 'Topic',
  114 + 'verbose_name_plural': 'Topics',
  115 + 'ordering': ('create_date', 'name'),
  116 + },
  117 + ),
  118 + migrations.AddField(
  119 + model_name='material',
  120 + name='topic',
  121 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Topic', verbose_name='Topic'),
  122 + ),
  123 + migrations.AddField(
  124 + model_name='activity',
  125 + name='topic',
  126 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Topic', verbose_name='Topic'),
  127 + ),
  128 + ]
courses/migrations/0002_auto_20160720_1837.py
@@ -1,47 +0,0 @@ @@ -1,47 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-07-20 21:37  
3 -from __future__ import unicode_literals  
4 -  
5 -import datetime  
6 -from django.db import migrations, models  
7 -import django.db.models.deletion  
8 -from django.utils.timezone import utc  
9 -  
10 -  
11 -class Migration(migrations.Migration):  
12 -  
13 - dependencies = [  
14 - ('courses', '0001_initial'),  
15 - ]  
16 -  
17 - operations = [  
18 - migrations.CreateModel(  
19 - name='Category',  
20 - fields=[  
21 - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),  
22 - ('name', models.CharField(max_length=100, verbose_name='Nome')),  
23 - ('slug', models.SlugField(max_length=100, verbose_name='Identificador')),  
24 - ('create_date', models.DateField(auto_now_add=True, verbose_name='Criação')),  
25 - ],  
26 - options={  
27 - 'verbose_name': 'Categoria',  
28 - 'verbose_name_plural': 'Categorias',  
29 - },  
30 - ),  
31 - migrations.AddField(  
32 - model_name='module',  
33 - name='create_date',  
34 - field=models.DateField(auto_now_add=True, default=datetime.datetime(2016, 7, 20, 21, 37, 26, 975666, tzinfo=utc), verbose_name='Criação'),  
35 - preserve_default=False,  
36 - ),  
37 - migrations.AlterField(  
38 - model_name='course',  
39 - name='image',  
40 - field=models.ImageField(blank=True, default='uploads/no_image.jpg', upload_to='uploads/', verbose_name='Imagem'),  
41 - ),  
42 - migrations.AddField(  
43 - model_name='course',  
44 - name='category',  
45 - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='courses.Category', verbose_name='Categoria'),  
46 - ),  
47 - ]  
courses/migrations/0003_auto_20160722_1735.py
@@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-07-22 20:35  
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 - ('courses', '0002_auto_20160720_1837'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AlterField(  
16 - model_name='category',  
17 - name='name',  
18 - field=models.CharField(max_length=100, unique=True, verbose_name='Nome'),  
19 - ),  
20 - migrations.AlterField(  
21 - model_name='course',  
22 - name='name',  
23 - field=models.CharField(max_length=100, unique=True, verbose_name='Nome'),  
24 - ),  
25 - ]  
courses/migrations/0004_auto_20160728_1625.py
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-07-28 19:25  
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 - ('courses', '0003_auto_20160722_1735'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AlterField(  
16 - model_name='course',  
17 - name='image',  
18 - field=models.ImageField(blank=True, default='no_image.jpg', upload_to='courses/', verbose_name='Imagem'),  
19 - ),  
20 - ]  
courses/migrations/0005_auto_20160815_0922.py
@@ -1,140 +0,0 @@ @@ -1,140 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-08-15 12:22  
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', '0004_auto_20160728_1625'),  
15 - ]  
16 -  
17 - operations = [  
18 - migrations.AlterModelOptions(  
19 - name='category',  
20 - options={'verbose_name': 'Category', 'verbose_name_plural': 'Categories'},  
21 - ),  
22 - migrations.AlterModelOptions(  
23 - name='course',  
24 - options={'verbose_name': 'Course', 'verbose_name_plural': 'Courses'},  
25 - ),  
26 - migrations.AlterModelOptions(  
27 - name='module',  
28 - options={'verbose_name': 'Module', 'verbose_name_plural': 'Modules'},  
29 - ),  
30 - migrations.AddField(  
31 - model_name='course',  
32 - name='user',  
33 - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User'),  
34 - ),  
35 - migrations.AlterField(  
36 - model_name='category',  
37 - name='create_date',  
38 - field=models.DateField(auto_now_add=True, verbose_name='Creation Date'),  
39 - ),  
40 - migrations.AlterField(  
41 - model_name='category',  
42 - name='name',  
43 - field=models.CharField(max_length=100, unique=True, verbose_name='Name'),  
44 - ),  
45 - migrations.AlterField(  
46 - model_name='category',  
47 - name='slug',  
48 - field=models.SlugField(max_length=100, verbose_name='Slug'),  
49 - ),  
50 - migrations.AlterField(  
51 - model_name='course',  
52 - name='category',  
53 - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='courses.Category', verbose_name='Category'),  
54 - ),  
55 - migrations.AlterField(  
56 - model_name='course',  
57 - name='content',  
58 - field=models.TextField(blank=True, verbose_name='Content'),  
59 - ),  
60 - migrations.AlterField(  
61 - model_name='course',  
62 - name='create_date',  
63 - field=models.DateField(auto_now_add=True, verbose_name='Creation Date'),  
64 - ),  
65 - migrations.AlterField(  
66 - model_name='course',  
67 - name='end_date',  
68 - field=models.DateField(verbose_name='End of Course Date'),  
69 - ),  
70 - migrations.AlterField(  
71 - model_name='course',  
72 - name='end_register_date',  
73 - field=models.DateField(verbose_name='Register Date (End)'),  
74 - ),  
75 - migrations.AlterField(  
76 - model_name='course',  
77 - name='image',  
78 - field=models.ImageField(blank=True, default='no_image.jpg', upload_to='courses/', verbose_name='Image'),  
79 - ),  
80 - migrations.AlterField(  
81 - model_name='course',  
82 - name='init_date',  
83 - field=models.DateField(verbose_name='Begin of Course Date'),  
84 - ),  
85 - migrations.AlterField(  
86 - model_name='course',  
87 - name='init_register_date',  
88 - field=models.DateField(verbose_name='Register Date (Begin)'),  
89 - ),  
90 - migrations.AlterField(  
91 - model_name='course',  
92 - name='max_students',  
93 - field=models.PositiveIntegerField(blank=True, verbose_name='Maximum Students'),  
94 - ),  
95 - migrations.AlterField(  
96 - model_name='course',  
97 - name='name',  
98 - field=models.CharField(max_length=100, unique=True, verbose_name='Name'),  
99 - ),  
100 - migrations.AlterField(  
101 - model_name='course',  
102 - name='objectivies',  
103 - field=models.TextField(blank=True, verbose_name='Objectivies'),  
104 - ),  
105 - migrations.AlterField(  
106 - model_name='course',  
107 - name='slug',  
108 - field=models.SlugField(max_length=100, verbose_name='Slug'),  
109 - ),  
110 - migrations.AlterField(  
111 - model_name='module',  
112 - name='course',  
113 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='Course'),  
114 - ),  
115 - migrations.AlterField(  
116 - model_name='module',  
117 - name='create_date',  
118 - field=models.DateField(auto_now_add=True, verbose_name='Creation Date'),  
119 - ),  
120 - migrations.AlterField(  
121 - model_name='module',  
122 - name='description',  
123 - field=models.TextField(blank=True, verbose_name='Description'),  
124 - ),  
125 - migrations.AlterField(  
126 - model_name='module',  
127 - name='name',  
128 - field=models.CharField(max_length=100, verbose_name='Name'),  
129 - ),  
130 - migrations.AlterField(  
131 - model_name='module',  
132 - name='slug',  
133 - field=models.SlugField(max_length=100, verbose_name='Slug'),  
134 - ),  
135 - migrations.AlterField(  
136 - model_name='module',  
137 - name='visible',  
138 - field=models.BooleanField(default=True, verbose_name='Visible'),  
139 - ),  
140 - ]  
courses/migrations/0006_auto_20160907_2259.py
@@ -1,41 +0,0 @@ @@ -1,41 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-08 01:59  
3 -from __future__ import unicode_literals  
4 -  
5 -import autoslug.fields  
6 -from django.db import migrations, models  
7 -import django.db.models.deletion  
8 -  
9 -  
10 -class Migration(migrations.Migration):  
11 -  
12 - dependencies = [  
13 - ('courses', '0005_auto_20160815_0922'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.CreateModel(  
18 - name='Subject',  
19 - fields=[  
20 - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),  
21 - ('name', models.CharField(max_length=100, verbose_name='Name')),  
22 - ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),  
23 - ('description', models.TextField(blank=True, verbose_name='Description')),  
24 - ('visible', models.BooleanField(default=True, verbose_name='Visible')),  
25 - ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),  
26 - ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')),  
27 - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course')),  
28 - ],  
29 - options={  
30 - 'verbose_name': 'Subject',  
31 - 'verbose_name_plural': 'Subjects',  
32 - },  
33 - ),  
34 - migrations.RemoveField(  
35 - model_name='module',  
36 - name='course',  
37 - ),  
38 - migrations.DeleteModel(  
39 - name='Module',  
40 - ),  
41 - ]  
courses/migrations/0007_topic.py
@@ -1,33 +0,0 @@ @@ -1,33 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-08 02:51  
3 -from __future__ import unicode_literals  
4 -  
5 -import autoslug.fields  
6 -from django.db import migrations, models  
7 -import django.db.models.deletion  
8 -  
9 -  
10 -class Migration(migrations.Migration):  
11 -  
12 - dependencies = [  
13 - ('courses', '0006_auto_20160907_2259'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.CreateModel(  
18 - name='Topic',  
19 - fields=[  
20 - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),  
21 - ('name', models.CharField(max_length=100, verbose_name='Name')),  
22 - ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),  
23 - ('description', models.TextField(blank=True, verbose_name='Description')),  
24 - ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),  
25 - ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')),  
26 - ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='topics', to='courses.Subject', verbose_name='Subject')),  
27 - ],  
28 - options={  
29 - 'verbose_name': 'Topic',  
30 - 'verbose_name_plural': 'Topics',  
31 - },  
32 - ),  
33 - ]  
courses/migrations/0008_auto_20160908_1332.py
@@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-08 16:32  
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', '0007_topic'),  
15 - ]  
16 -  
17 - operations = [  
18 - migrations.AddField(  
19 - model_name='subject',  
20 - name='professors',  
21 - field=models.ManyToManyField(related_name='subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),  
22 - ),  
23 - migrations.AddField(  
24 - model_name='topic',  
25 - name='owner',  
26 - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='topics', to=settings.AUTH_USER_MODEL, verbose_name='Owner'),  
27 - ),  
28 - ]  
courses/migrations/0009_auto_20160908_1625.py
@@ -1,23 +0,0 @@ @@ -1,23 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-08 19:25  
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', '0008_auto_20160908_1332'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AlterModelOptions(  
16 - name='subject',  
17 - options={'ordering': ('create_date',), 'verbose_name': 'Subject', 'verbose_name_plural': 'Subjects'},  
18 - ),  
19 - migrations.AlterModelOptions(  
20 - name='topic',  
21 - options={'ordering': ('create_date',), 'verbose_name': 'Topic', 'verbose_name_plural': 'Topics'},  
22 - ),  
23 - ]  
courses/migrations/0010_auto_20160914_2119.py
@@ -1,42 +0,0 @@ @@ -1,42 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-15 00:19  
3 -from __future__ import unicode_literals  
4 -  
5 -import autoslug.fields  
6 -from django.conf import settings  
7 -from django.db import migrations, models  
8 -  
9 -  
10 -class Migration(migrations.Migration):  
11 -  
12 - dependencies = [  
13 - migrations.swappable_dependency(settings.AUTH_USER_MODEL),  
14 - ('courses', '0009_auto_20160908_1625'),  
15 - ]  
16 -  
17 - operations = [  
18 - migrations.RemoveField(  
19 - model_name='course',  
20 - name='user',  
21 - ),  
22 - migrations.AddField(  
23 - model_name='course',  
24 - name='professors',  
25 - field=models.ManyToManyField(related_name='courses', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),  
26 - ),  
27 - migrations.AlterField(  
28 - model_name='category',  
29 - name='slug',  
30 - field=autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug'),  
31 - ),  
32 - migrations.AlterField(  
33 - model_name='course',  
34 - name='name',  
35 - field=models.CharField(max_length=100, verbose_name='Name'),  
36 - ),  
37 - migrations.AlterField(  
38 - model_name='course',  
39 - name='slug',  
40 - field=autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug'),  
41 - ),  
42 - ]  
courses/migrations/0011_auto_20160914_2126.py
@@ -1,49 +0,0 @@ @@ -1,49 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-15 00:26  
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 - ('courses', '0010_auto_20160914_2119'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.AlterModelOptions(  
18 - name='course',  
19 - options={'ordering': ('create_date', 'name'), 'verbose_name': 'Course', 'verbose_name_plural': 'Courses'},  
20 - ),  
21 - migrations.AlterModelOptions(  
22 - name='subject',  
23 - options={'ordering': ('create_date', 'name'), 'verbose_name': 'Subject', 'verbose_name_plural': 'Subjects'},  
24 - ),  
25 - migrations.AlterModelOptions(  
26 - name='topic',  
27 - options={'ordering': ('create_date', 'name'), 'verbose_name': 'Topic', 'verbose_name_plural': 'Topics'},  
28 - ),  
29 - migrations.AlterField(  
30 - model_name='course',  
31 - name='category',  
32 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Category', verbose_name='Category'),  
33 - ),  
34 - migrations.AlterField(  
35 - model_name='course',  
36 - name='image',  
37 - field=models.ImageField(blank=True, upload_to='courses/', verbose_name='Image'),  
38 - ),  
39 - migrations.AlterField(  
40 - model_name='subject',  
41 - name='visible',  
42 - field=models.BooleanField(default=False, verbose_name='Visible'),  
43 - ),  
44 - migrations.AlterField(  
45 - model_name='topic',  
46 - name='owner',  
47 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='topics', to=settings.AUTH_USER_MODEL, verbose_name='Owner'),  
48 - ),  
49 - ]  
courses/migrations/0012_course_students.py
@@ -1,22 +0,0 @@ @@ -1,22 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-15 02:57  
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 - dependencies = [  
12 - migrations.swappable_dependency(settings.AUTH_USER_MODEL),  
13 - ('courses', '0011_auto_20160914_2126'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.AddField(  
18 - model_name='course',  
19 - name='students',  
20 - field=models.ManyToManyField(related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),  
21 - ),  
22 - ]  
courses/migrations/0013_auto_20160916_0001.py
@@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-16 03:01  
3 -from __future__ import unicode_literals  
4 -  
5 -from django.db import migrations, models  
6 -import django.utils.timezone  
7 -  
8 -  
9 -class Migration(migrations.Migration):  
10 -  
11 - dependencies = [  
12 - ('courses', '0012_course_students'),  
13 - ]  
14 -  
15 - operations = [  
16 - migrations.AddField(  
17 - model_name='subject',  
18 - name='end_date',  
19 - field=models.DateField(default=django.utils.timezone.now, verbose_name='End of Subject Date'),  
20 - preserve_default=False,  
21 - ),  
22 - migrations.AddField(  
23 - model_name='subject',  
24 - name='init_date',  
25 - field=models.DateField(default=django.utils.timezone.now, verbose_name='Begin of Subject Date'),  
26 - preserve_default=False,  
27 - ),  
28 - ]  
courses/migrations/0013_auto_20160916_0126.py
@@ -1,48 +0,0 @@ @@ -1,48 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-16 04:26  
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 - ('core', '0009_auto_20160916_0126'),  
15 - ('courses', '0012_course_students'),  
16 - ]  
17 -  
18 - operations = [  
19 - migrations.CreateModel(  
20 - name='Activity',  
21 - fields=[  
22 - ('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')),  
23 - ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),  
24 - ('limit_date', models.DateTimeField(verbose_name='Deliver Date')),  
25 - ('grade', models.IntegerField(verbose_name='grade')),  
26 - ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL, verbose_name='student')),  
27 - ],  
28 - bases=('core.resource',),  
29 - ),  
30 - migrations.CreateModel(  
31 - name='Link',  
32 - fields=[  
33 - ('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')),  
34 - ('url_field', models.CharField(max_length=300, verbose_name='url')),  
35 - ],  
36 - bases=('core.resource',),  
37 - ),  
38 - migrations.AddField(  
39 - model_name='topic',  
40 - name='visible',  
41 - field=models.BooleanField(default=False, verbose_name='Visible'),  
42 - ),  
43 - migrations.AddField(  
44 - model_name='activity',  
45 - name='topic',  
46 - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='topic', to='courses.Topic', verbose_name='Topic'),  
47 - ),  
48 - ]  
courses/migrations/0014_merge_20160916_0255.py
@@ -1,16 +0,0 @@ @@ -1,16 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-16 05:55  
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', '0013_auto_20160916_0001'),  
12 - ('courses', '0013_auto_20160916_0126'),  
13 - ]  
14 -  
15 - operations = [  
16 - ]  
courses/models.py
@@ -71,8 +71,8 @@ class Topic(models.Model): @@ -71,8 +71,8 @@ class Topic(models.Model):
71 description = models.TextField(_('Description'), blank = True) 71 description = models.TextField(_('Description'), blank = True)
72 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True) 72 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
73 update_date = models.DateTimeField(_('Date of last update'), auto_now=True) 73 update_date = models.DateTimeField(_('Date of last update'), auto_now=True)
74 - subject = models.ForeignKey(Subject, verbose_name = _('Subject'), related_name="topics")  
75 - owner = models.ForeignKey(User, verbose_name = _('Owner'), related_name="topics") 74 + subject = models.ForeignKey(Subject, verbose_name = _('Subject'))
  75 + owner = models.ForeignKey(User, verbose_name = _('Owner'))
76 visible = models.BooleanField(_('Visible'), default=False) 76 visible = models.BooleanField(_('Visible'), default=False)
77 77
78 class Meta: 78 class Meta:
@@ -89,9 +89,9 @@ Activity is something that has a deadline and has to be delivered by the student @@ -89,9 +89,9 @@ Activity is something that has a deadline and has to be delivered by the student
89 """ 89 """
90 class Activity(Resource): 90 class Activity(Resource):
91 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True) 91 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
92 - topic = models.ForeignKey(Topic, verbose_name = _('Topic'), related_name="topic") 92 + topic = models.ForeignKey(Topic, verbose_name = _('Topic'))
93 limit_date = models.DateTimeField(_('Deliver Date')) 93 limit_date = models.DateTimeField(_('Deliver Date'))
94 - student = models.ForeignKey(User, verbose_name = _('student'), related_name="student") 94 + student = models.ForeignKey(User, verbose_name = _('student'))
95 95
96 96
97 """ 97 """
@@ -99,11 +99,7 @@ It represents any Material inside a topic, be it a file, a link, etc. @@ -99,11 +99,7 @@ It represents any Material inside a topic, be it a file, a link, etc.
99 """ 99 """
100 class Material(Resource): 100 class Material(Resource):
101 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True) 101 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
102 - topic = models.ForeignKey(Topic, verbose_name = _('Topic'), related_name="topic")  
103 - student = models.ForeignKey(User, verbose_name = _('student'), related_name="student") 102 + topic = models.ForeignKey(Topic, verbose_name = _('Topic'))
  103 + student = models.ForeignKey(User, verbose_name = _('student'))
  104 +
104 105
105 -"""  
106 -It is one kind of possible resources available inside a Topic.  
107 -"""  
108 -class Link(Material):  
109 - url_field = models.CharField(_('url'), max_length= 300)  
users/migrations/0001_initial.py
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-07-28 19:25  
3 -from __future__ import unicode_literals  
4 -  
5 -import django.contrib.auth.models  
6 -import django.core.validators  
7 -from django.db import migrations, models  
8 -import re  
9 -  
10 -  
11 -class Migration(migrations.Migration):  
12 -  
13 - initial = True  
14 -  
15 - dependencies = [  
16 - ('auth', '0007_alter_validators_add_error_messages'),  
17 - ]  
18 -  
19 - operations = [  
20 - migrations.CreateModel(  
21 - name='User',  
22 - fields=[  
23 - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),  
24 - ('password', models.CharField(max_length=128, verbose_name='password')),  
25 - ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),  
26 - ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),  
27 - ('login', models.CharField(help_text='Um nome curto que será usado para identificá-lo de forma única na plataforma e também para acessá-la', max_length=35, unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[\\w.@+-]+$', 32), 'Informe um nome de usuário válido. Este valor deve conter apenas letras, números e os caracteres: @/./+/-/_ .', 'invalid')], verbose_name='Login')),  
28 - ('email', models.EmailField(max_length=254, unique=True, verbose_name='E-mail')),  
29 - ('name', models.CharField(blank=True, max_length=100, verbose_name='Nome')),  
30 - ('city', models.CharField(blank=True, max_length=90, verbose_name='Cidade')),  
31 - ('state', models.CharField(blank=True, max_length=30, verbose_name='Estado')),  
32 - ('gender', models.CharField(choices=[('M', 'Masculino'), ('F', 'Feminino')], max_length=1, verbose_name='Sexo')),  
33 - ('image', models.ImageField(blank=True, default='no_image.jpg', upload_to='users/', verbose_name='Imagem')),  
34 - ('birth_date', models.DateField(blank=True, verbose_name='Data de Nascimento')),  
35 - ('phone', models.CharField(blank=True, max_length=30, verbose_name='Telefone')),  
36 - ('cpf', models.CharField(blank=True, max_length=15, verbose_name='Cpf')),  
37 - ('type_profile', models.IntegerField(choices=[(1, 'Administrador'), (2, 'Professor'), (3, 'Aluno')], verbose_name='Tipo')),  
38 - ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Data de Cadastro')),  
39 - ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),  
40 - ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),  
41 - ],  
42 - options={  
43 - 'verbose_name_plural': 'Usuários',  
44 - 'verbose_name': 'Usuário',  
45 - },  
46 - managers=[  
47 - ('objects', django.contrib.auth.models.UserManager()),  
48 - ],  
49 - ),  
50 - ] 1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-09-20 13:57
  3 +from __future__ import unicode_literals
  4 +
  5 +import django.contrib.auth.models
  6 +import django.core.validators
  7 +from django.db import migrations, models
  8 +import re
  9 +
  10 +
  11 +class Migration(migrations.Migration):
  12 +
  13 + initial = True
  14 +
  15 + dependencies = [
  16 + ('auth', '0008_alter_user_username_max_length'),
  17 + ]
  18 +
  19 + operations = [
  20 + migrations.CreateModel(
  21 + name='User',
  22 + fields=[
  23 + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  24 + ('password', models.CharField(max_length=128, verbose_name='password')),
  25 + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
  26 + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
  27 + ('username', models.CharField(help_text='A short name that will be used to identify you in the platform and to access it', max_length=35, unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[\\w.@+-]+$', 32), 'Type a valid username. This fields should only contain letters, numbers and the characteres: @/./+/-/_ .', 'invalid')], verbose_name='Login')),
  28 + ('email', models.EmailField(max_length=254, unique=True, verbose_name='Mail')),
  29 + ('name', models.CharField(blank=True, max_length=100, verbose_name='Name')),
  30 + ('city', models.CharField(blank=True, max_length=90, verbose_name='City')),
  31 + ('state', models.CharField(blank=True, max_length=30, verbose_name='State')),
  32 + ('gender', models.CharField(choices=[('M', 'Male'), ('F', 'Female')], max_length=1, verbose_name='Gender')),
  33 + ('image', models.ImageField(blank=True, upload_to='users/', verbose_name='Image')),
  34 + ('birth_date', models.DateField(blank=True, null=True, verbose_name='Birth Date')),
  35 + ('phone', models.CharField(blank=True, max_length=30, verbose_name='Phone')),
  36 + ('cpf', models.CharField(blank=True, max_length=15, verbose_name='Cpf')),
  37 + ('type_profile', models.IntegerField(blank=True, choices=[(1, 'Professor'), (2, 'Student')], default=2, null=True, verbose_name='Type')),
  38 + ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Create Date')),
  39 + ('is_staff', models.BooleanField(default=False, verbose_name='Administrador')),
  40 + ('is_active', models.BooleanField(default=True, verbose_name='Active')),
  41 + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),
  42 + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),
  43 + ],
  44 + options={
  45 + 'verbose_name': 'User',
  46 + 'verbose_name_plural': 'Users',
  47 + },
  48 + managers=[
  49 + ('objects', django.contrib.auth.models.UserManager()),
  50 + ],
  51 + ),
  52 + ]
users/migrations/0002_auto_20160728_1629.py
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-07-28 19:29  
3 -from __future__ import unicode_literals  
4 -  
5 -from django.db import migrations  
6 -  
7 -  
8 -class Migration(migrations.Migration):  
9 -  
10 - dependencies = [  
11 - ('users', '0001_initial'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.RenameField(  
16 - model_name='user',  
17 - old_name='login',  
18 - new_name='username',  
19 - ),  
20 - ]  
users/migrations/0003_auto_20160728_1631.py
@@ -1,30 +0,0 @@ @@ -1,30 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-07-28 19:31  
3 -from __future__ import unicode_literals  
4 -  
5 -from django.db import migrations, models  
6 -  
7 -  
8 -class Migration(migrations.Migration):  
9 -  
10 - dependencies = [  
11 - ('users', '0002_auto_20160728_1629'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AddField(  
16 - model_name='user',  
17 - name='is_active',  
18 - field=models.BooleanField(default=True, verbose_name='Ativo'),  
19 - ),  
20 - migrations.AddField(  
21 - model_name='user',  
22 - name='is_staff',  
23 - field=models.BooleanField(default=False, verbose_name='Administrador'),  
24 - ),  
25 - migrations.AlterField(  
26 - model_name='user',  
27 - name='type_profile',  
28 - field=models.IntegerField(choices=[(1, 'Professor'), (2, 'Aluno')], verbose_name='Tipo'),  
29 - ),  
30 - ]  
users/migrations/0004_auto_20160728_1634.py
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-07-28 19: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 - ('users', '0003_auto_20160728_1631'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AlterField(  
16 - model_name='user',  
17 - name='birth_date',  
18 - field=models.DateField(blank=True, null=True, verbose_name='Data de Nascimento'),  
19 - ),  
20 - ]  
users/migrations/0005_auto_20160728_1636.py
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-07-28 19:36  
3 -from __future__ import unicode_literals  
4 -  
5 -from django.db import migrations, models  
6 -  
7 -  
8 -class Migration(migrations.Migration):  
9 -  
10 - dependencies = [  
11 - ('users', '0004_auto_20160728_1634'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AlterField(  
16 - model_name='user',  
17 - name='type_profile',  
18 - field=models.IntegerField(blank=True, choices=[(1, 'Professor'), (2, 'Aluno')], null=True, verbose_name='Tipo'),  
19 - ),  
20 - ]  
users/migrations/0006_auto_20160815_0922.py
@@ -1,81 +0,0 @@ @@ -1,81 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-08-15 12:22  
3 -from __future__ import unicode_literals  
4 -  
5 -import django.core.validators  
6 -from django.db import migrations, models  
7 -import re  
8 -  
9 -  
10 -class Migration(migrations.Migration):  
11 -  
12 - dependencies = [  
13 - ('users', '0005_auto_20160728_1636'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.AlterModelOptions(  
18 - name='user',  
19 - options={'verbose_name': 'User', 'verbose_name_plural': 'Users'},  
20 - ),  
21 - migrations.AlterField(  
22 - model_name='user',  
23 - name='birth_date',  
24 - field=models.DateField(blank=True, null=True, verbose_name='Birth Date'),  
25 - ),  
26 - migrations.AlterField(  
27 - model_name='user',  
28 - name='city',  
29 - field=models.CharField(blank=True, max_length=90, verbose_name='City'),  
30 - ),  
31 - migrations.AlterField(  
32 - model_name='user',  
33 - name='date_created',  
34 - field=models.DateTimeField(auto_now_add=True, verbose_name='Create Date'),  
35 - ),  
36 - migrations.AlterField(  
37 - model_name='user',  
38 - name='email',  
39 - field=models.EmailField(max_length=254, unique=True, verbose_name='Mail'),  
40 - ),  
41 - migrations.AlterField(  
42 - model_name='user',  
43 - name='gender',  
44 - field=models.CharField(choices=[('M', 'Male'), ('F', 'Female')], max_length=1, verbose_name='Gender'),  
45 - ),  
46 - migrations.AlterField(  
47 - model_name='user',  
48 - name='image',  
49 - field=models.ImageField(blank=True, default='no_image.jpg', upload_to='users/', verbose_name='Image'),  
50 - ),  
51 - migrations.AlterField(  
52 - model_name='user',  
53 - name='is_active',  
54 - field=models.BooleanField(default=True, verbose_name='Active'),  
55 - ),  
56 - migrations.AlterField(  
57 - model_name='user',  
58 - name='name',  
59 - field=models.CharField(blank=True, max_length=100, verbose_name='Name'),  
60 - ),  
61 - migrations.AlterField(  
62 - model_name='user',  
63 - name='phone',  
64 - field=models.CharField(blank=True, max_length=30, verbose_name='Phone'),  
65 - ),  
66 - migrations.AlterField(  
67 - model_name='user',  
68 - name='state',  
69 - field=models.CharField(blank=True, max_length=30, verbose_name='State'),  
70 - ),  
71 - migrations.AlterField(  
72 - model_name='user',  
73 - name='type_profile',  
74 - field=models.IntegerField(blank=True, choices=[(1, 'Professor'), (2, 'Student')], null=True, verbose_name='Type'),  
75 - ),  
76 - migrations.AlterField(  
77 - model_name='user',  
78 - name='username',  
79 - field=models.CharField(help_text='A short name that will be used to identify you in the platform and to access it', max_length=35, unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[\\w.@+-]+$', 32), 'Type a valid username. This fields should only contain letters, numbers and the characteres: @/./+/-/_ .', 'invalid')], verbose_name='Login'),  
80 - ),  
81 - ]  
users/migrations/0007_auto_20160825_1801.py
@@ -1,22 +0,0 @@ @@ -1,22 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-08-25 21:01  
3 -from __future__ import unicode_literals  
4 -  
5 -import django.core.validators  
6 -from django.db import migrations, models  
7 -import re  
8 -  
9 -  
10 -class Migration(migrations.Migration):  
11 -  
12 - dependencies = [  
13 - ('users', '0006_auto_20160815_0922'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.AlterField(  
18 - model_name='user',  
19 - name='username',  
20 - field=models.CharField(help_text='A short name that will be used to identify you in the platform and to access it', max_length=35, unique=True, validators=[django.core.validators.RegexValidator(re.compile(b'^[\\w.@+-]+$'), 'Type a valid username. This fields should only contain letters, numbers and the characteres: @/./+/-/_ .', b'invalid')], verbose_name='Login'),  
21 - ),  
22 - ]  
users/migrations/0008_auto_20160902_2123.py
@@ -1,27 +0,0 @@ @@ -1,27 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-03 00:23  
3 -from __future__ import unicode_literals  
4 -  
5 -import django.core.validators  
6 -from django.db import migrations, models  
7 -import re  
8 -  
9 -  
10 -class Migration(migrations.Migration):  
11 -  
12 - dependencies = [  
13 - ('users', '0007_auto_20160825_1801'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.AlterField(  
18 - model_name='user',  
19 - name='type_profile',  
20 - field=models.IntegerField(blank=True, choices=[(1, 'Professor'), (2, 'Student')], default=2, null=True, verbose_name='Type'),  
21 - ),  
22 - migrations.AlterField(  
23 - model_name='user',  
24 - name='username',  
25 - field=models.CharField(help_text='A short name that will be used to identify you in the platform and to access it', max_length=35, unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[\\w.@+-]+$', 32), 'Type a valid username. This fields should only contain letters, numbers and the characteres: @/./+/-/_ .', 'invalid')], verbose_name='Login'),  
26 - ),  
27 - ]  
users/migrations/0009_auto_20160906_1450.py
@@ -1,22 +0,0 @@ @@ -1,22 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-06 17:50  
3 -from __future__ import unicode_literals  
4 -  
5 -import django.core.validators  
6 -from django.db import migrations, models  
7 -import re  
8 -  
9 -  
10 -class Migration(migrations.Migration):  
11 -  
12 - dependencies = [  
13 - ('users', '0008_auto_20160902_2123'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.AlterField(  
18 - model_name='user',  
19 - name='username',  
20 - field=models.CharField(help_text='A short name that will be used to identify you in the platform and to access it', max_length=35, unique=True, validators=[django.core.validators.RegexValidator(re.compile(b'^[\\w.@+-]+$'), 'Type a valid username. This fields should only contain letters, numbers and the characteres: @/./+/-/_ .', b'invalid')], verbose_name='Login'),  
21 - ),  
22 - ]  
users/migrations/0010_auto_20160906_2332.py
@@ -1,22 +0,0 @@ @@ -1,22 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.9.7 on 2016-09-07 02:32  
3 -from __future__ import unicode_literals  
4 -  
5 -import django.core.validators  
6 -from django.db import migrations, models  
7 -import re  
8 -  
9 -  
10 -class Migration(migrations.Migration):  
11 -  
12 - dependencies = [  
13 - ('users', '0009_auto_20160906_1450'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.AlterField(  
18 - model_name='user',  
19 - name='username',  
20 - field=models.CharField(help_text='A short name that will be used to identify you in the platform and to access it', max_length=35, unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[\\w.@+-]+$', 32), 'Type a valid username. This fields should only contain letters, numbers and the characteres: @/./+/-/_ .', 'invalid')], verbose_name='Login'),  
21 - ),  
22 - ]  
users/migrations/0011_auto_20160908_1108.py
@@ -1,22 +0,0 @@ @@ -1,22 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-08 14:08  
3 -from __future__ import unicode_literals  
4 -  
5 -import django.core.validators  
6 -from django.db import migrations, models  
7 -import re  
8 -  
9 -  
10 -class Migration(migrations.Migration):  
11 -  
12 - dependencies = [  
13 - ('users', '0010_auto_20160906_2332'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.AlterField(  
18 - model_name='user',  
19 - name='username',  
20 - field=models.CharField(help_text='A short name that will be used to identify you in the platform and to access it', max_length=35, unique=True, validators=[django.core.validators.RegexValidator(re.compile(b'^[\\w.@+-]+$'), 'Type a valid username. This fields should only contain letters, numbers and the characteres: @/./+/-/_ .', b'invalid')], verbose_name='Login'),  
21 - ),  
22 - ]  
users/migrations/0012_auto_20160908_1625.py
@@ -1,22 +0,0 @@ @@ -1,22 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-08 19:25  
3 -from __future__ import unicode_literals  
4 -  
5 -import django.core.validators  
6 -from django.db import migrations, models  
7 -import re  
8 -  
9 -  
10 -class Migration(migrations.Migration):  
11 -  
12 - dependencies = [  
13 - ('users', '0011_auto_20160908_1108'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.AlterField(  
18 - model_name='user',  
19 - name='username',  
20 - field=models.CharField(help_text='A short name that will be used to identify you in the platform and to access it', max_length=35, unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[\\w.@+-]+$', 32), 'Type a valid username. This fields should only contain letters, numbers and the characteres: @/./+/-/_ .', 'invalid')], verbose_name='Login'),  
21 - ),  
22 - ]  
users/migrations/0013_auto_20160915_2334.py
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -# Generated by Django 1.10 on 2016-09-16 02: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 - ('users', '0012_auto_20160908_1625'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AlterField(  
16 - model_name='user',  
17 - name='image',  
18 - field=models.ImageField(blank=True, upload_to='users/', verbose_name='Image'),  
19 - ),  
20 - ]