Commit dfab3d15363ad13e3646570e3e0d0a10babe306d

Authored by Gustavo Bernardo
1 parent 770e7dff

Updating database to fix issue with the procedure to remove user [Issue: #6]

core/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-09-22 05:46
  2 +# Generated by Django 1.10 on 2016-09-30 15:39
3 3 from __future__ import unicode_literals
4 4  
5 5 import autoslug.fields
6   -from django.conf import settings
7 6 from django.db import migrations, models
8 7 import django.db.models.deletion
9 8  
... ... @@ -13,7 +12,6 @@ class Migration(migrations.Migration):
13 12 initial = True
14 13  
15 14 dependencies = [
16   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
17 15 ]
18 16  
19 17 operations = [
... ... @@ -33,7 +31,6 @@ class Migration(migrations.Migration):
33 31 name='Action_Resource',
34 32 fields=[
35 33 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
36   - ('action', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action', verbose_name='Action_Applied')),
37 34 ],
38 35 options={
39 36 'verbose_name': 'Action_Resource',
... ... @@ -45,8 +42,6 @@ class Migration(migrations.Migration):
45 42 fields=[
46 43 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
47 44 ('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 45 ],
51 46 options={
52 47 'verbose_name': 'Log',
... ... @@ -61,8 +56,6 @@ class Migration(migrations.Migration):
61 56 ('read', models.BooleanField(default=False, verbose_name='Read')),
62 57 ('datetime', models.DateTimeField(auto_now_add=True, verbose_name='Date and Time of action')),
63 58 ('action_resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource')),
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')),
66 59 ],
67 60 options={
68 61 'verbose_name': 'Notification',
... ... @@ -74,7 +67,7 @@ class Migration(migrations.Migration):
74 67 fields=[
75 68 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
76 69 ('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')),
  70 + ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
78 71 ('created_date', models.DateField(auto_now_add=True, verbose_name='Created Date')),
79 72 ('url', models.CharField(default='', max_length=100, verbose_name='URL')),
80 73 ],
... ... @@ -83,9 +76,4 @@ class Migration(migrations.Migration):
83 76 'verbose_name_plural': 'Resources',
84 77 },
85 78 ),
86   - migrations.AddField(
87   - model_name='action_resource',
88   - name='resource',
89   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Resource', verbose_name='Resource'),
90   - ),
91 79 ]
... ...
core/migrations/0002_auto_20160930_0124.py
... ... @@ -1,21 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-09-30 04:24
3   -from __future__ import unicode_literals
4   -
5   -import autoslug.fields
6   -from django.db import migrations
7   -
8   -
9   -class Migration(migrations.Migration):
10   -
11   - dependencies = [
12   - ('core', '0001_initial'),
13   - ]
14   -
15   - operations = [
16   - migrations.AlterField(
17   - model_name='resource',
18   - name='slug',
19   - field=autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug'),
20   - ),
21   - ]
core/migrations/0002_auto_20160930_1239.py 0 → 100644
... ... @@ -0,0 +1,50 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-09-30 15:39
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.conf import settings
  6 +from django.db import migrations, models
  7 +import django.db.models.deletion
  8 +
  9 +
  10 +class Migration(migrations.Migration):
  11 +
  12 + initial = True
  13 +
  14 + dependencies = [
  15 + ('core', '0001_initial'),
  16 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  17 + ]
  18 +
  19 + operations = [
  20 + migrations.AddField(
  21 + model_name='notification',
  22 + name='actor',
  23 + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notification_Performer', to=settings.AUTH_USER_MODEL, verbose_name='Perfomer'),
  24 + ),
  25 + migrations.AddField(
  26 + model_name='notification',
  27 + name='user',
  28 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_Actor', to=settings.AUTH_USER_MODEL, verbose_name='User'),
  29 + ),
  30 + migrations.AddField(
  31 + model_name='log',
  32 + name='action_resource',
  33 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource'),
  34 + ),
  35 + migrations.AddField(
  36 + model_name='log',
  37 + name='user',
  38 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Actor'),
  39 + ),
  40 + migrations.AddField(
  41 + model_name='action_resource',
  42 + name='action',
  43 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action', verbose_name='Action_Applied'),
  44 + ),
  45 + migrations.AddField(
  46 + model_name='action_resource',
  47 + name='resource',
  48 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Resource', verbose_name='Resource'),
  49 + ),
  50 + ]
... ...
courses/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-09-28 20:27
  2 +# Generated by Django 1.10 on 2016-09-30 15:39
3 3 from __future__ import unicode_literals
4 4  
5 5 import autoslug.fields
6   -from django.conf import settings
7 6 from django.db import migrations, models
8 7 import django.db.models.deletion
9 8  
... ... @@ -13,8 +12,7 @@ class Migration(migrations.Migration):
13 12 initial = True
14 13  
15 14 dependencies = [
16   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
17   - ('core', '0001_initial'),
  15 + ('core', '0002_auto_20160930_1239'),
18 16 ]
19 17  
20 18 operations = [
... ... @@ -23,7 +21,7 @@ class Migration(migrations.Migration):
23 21 fields=[
24 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')),
25 23 ('limit_date', models.DateTimeField(verbose_name='Deliver Date')),
26   - ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='student')),
  24 + ('all_students', models.BooleanField(default=False, verbose_name='All Students')),
27 25 ],
28 26 bases=('core.resource',),
29 27 ),
... ... @@ -55,21 +53,18 @@ class Migration(migrations.Migration):
55 53 ('init_date', models.DateField(verbose_name='Begin of Course Date')),
56 54 ('end_date', models.DateField(verbose_name='End of Course Date')),
57 55 ('image', models.ImageField(blank=True, upload_to='courses/', verbose_name='Image')),
58   - ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Category', verbose_name='Category')),
59   - ('professors', models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors')),
60   - ('students', models.ManyToManyField(related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students')),
61 56 ],
62 57 options={
  58 + 'ordering': ('create_date', 'name'),
63 59 'verbose_name': 'Course',
64 60 'verbose_name_plural': 'Courses',
65   - 'ordering': ('create_date', 'name'),
66 61 },
67 62 ),
68 63 migrations.CreateModel(
69 64 name='Material',
70 65 fields=[
71 66 ('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')),
72   - ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='student')),
  67 + ('all_students', models.BooleanField(default=False, verbose_name='All Students')),
73 68 ],
74 69 bases=('core.resource',),
75 70 ),
... ... @@ -85,13 +80,11 @@ class Migration(migrations.Migration):
85 80 ('end_date', models.DateField(verbose_name='End of Subject Date')),
86 81 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
87 82 ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')),
88   - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course')),
89   - ('professors', models.ManyToManyField(related_name='subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors')),
90 83 ],
91 84 options={
  85 + 'ordering': ('create_date', 'name'),
92 86 'verbose_name': 'Subject',
93 87 'verbose_name_plural': 'Subjects',
94   - 'ordering': ('create_date', 'name'),
95 88 },
96 89 ),
97 90 migrations.CreateModel(
... ... @@ -101,7 +94,6 @@ class Migration(migrations.Migration):
101 94 ('name', models.CharField(max_length=100, verbose_name='Name')),
102 95 ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
103 96 ('description', models.TextField(blank=True, verbose_name='Description')),
104   - ('subjects', models.ManyToManyField(to='courses.Subject')),
105 97 ],
106 98 options={
107 99 'verbose_name': 'subject category',
... ... @@ -118,23 +110,11 @@ class Migration(migrations.Migration):
118 110 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
119 111 ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')),
120 112 ('visible', models.BooleanField(default=False, verbose_name='Visible')),
121   - ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Owner')),
122   - ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Subject', verbose_name='Subject')),
123 113 ],
124 114 options={
  115 + 'ordering': ('create_date', 'name'),
125 116 'verbose_name': 'Topic',
126 117 'verbose_name_plural': 'Topics',
127   - 'ordering': ('create_date', 'name'),
128 118 },
129 119 ),
130   - migrations.AddField(
131   - model_name='material',
132   - name='topic',
133   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Topic', verbose_name='Topic'),
134   - ),
135   - migrations.AddField(
136   - model_name='activity',
137   - name='topic',
138   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Topic', verbose_name='Topic'),
139   - ),
140 120 ]
... ...
courses/migrations/0002_auto_20160930_0124.py
... ... @@ -1,56 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-09-30 04:24
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', '0001_initial'),
15   - ]
16   -
17   - operations = [
18   - migrations.RemoveField(
19   - model_name='activity',
20   - name='student',
21   - ),
22   - migrations.RemoveField(
23   - model_name='material',
24   - name='student',
25   - ),
26   - migrations.AddField(
27   - model_name='activity',
28   - name='all_students',
29   - field=models.BooleanField(default=False, verbose_name='All Students'),
30   - ),
31   - migrations.AddField(
32   - model_name='activity',
33   - name='students',
34   - field=models.ManyToManyField(related_name='activities', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
35   - ),
36   - migrations.AddField(
37   - model_name='material',
38   - name='all_students',
39   - field=models.BooleanField(default=False, verbose_name='All Students'),
40   - ),
41   - migrations.AddField(
42   - model_name='material',
43   - name='students',
44   - field=models.ManyToManyField(related_name='materials', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
45   - ),
46   - migrations.AlterField(
47   - model_name='activity',
48   - name='topic',
49   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activities', to='courses.Topic', verbose_name='Topic'),
50   - ),
51   - migrations.AlterField(
52   - model_name='material',
53   - name='topic',
54   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materials', to='courses.Topic', verbose_name='Topic'),
55   - ),
56   - ]
courses/migrations/0002_auto_20160930_1239.py 0 → 100644
... ... @@ -0,0 +1,80 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-09-30 15:39
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.conf import settings
  6 +from django.db import migrations, models
  7 +import django.db.models.deletion
  8 +
  9 +
  10 +class Migration(migrations.Migration):
  11 +
  12 + initial = True
  13 +
  14 + dependencies = [
  15 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  16 + ('courses', '0001_initial'),
  17 + ]
  18 +
  19 + operations = [
  20 + migrations.AddField(
  21 + model_name='topic',
  22 + name='owner',
  23 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Owner'),
  24 + ),
  25 + migrations.AddField(
  26 + model_name='topic',
  27 + name='subject',
  28 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Subject', verbose_name='Subject'),
  29 + ),
  30 + migrations.AddField(
  31 + model_name='subjectcategory',
  32 + name='subjects',
  33 + field=models.ManyToManyField(to='courses.Subject'),
  34 + ),
  35 + migrations.AddField(
  36 + model_name='subject',
  37 + name='course',
  38 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course'),
  39 + ),
  40 + migrations.AddField(
  41 + model_name='subject',
  42 + name='professors',
  43 + field=models.ManyToManyField(related_name='subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
  44 + ),
  45 + migrations.AddField(
  46 + model_name='material',
  47 + name='students',
  48 + field=models.ManyToManyField(related_name='materials', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
  49 + ),
  50 + migrations.AddField(
  51 + model_name='material',
  52 + name='topic',
  53 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materials', to='courses.Topic', verbose_name='Topic'),
  54 + ),
  55 + migrations.AddField(
  56 + model_name='course',
  57 + name='category',
  58 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Category', verbose_name='Category'),
  59 + ),
  60 + migrations.AddField(
  61 + model_name='course',
  62 + name='professors',
  63 + field=models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
  64 + ),
  65 + migrations.AddField(
  66 + model_name='course',
  67 + name='students',
  68 + field=models.ManyToManyField(related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
  69 + ),
  70 + migrations.AddField(
  71 + model_name='activity',
  72 + name='students',
  73 + field=models.ManyToManyField(related_name='activities', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
  74 + ),
  75 + migrations.AddField(
  76 + model_name='activity',
  77 + name='topic',
  78 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activities', to='courses.Topic', verbose_name='Topic'),
  79 + ),
  80 + ]
... ...
forum/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-09-28 20:27
  2 +# Generated by Django 1.10 on 2016-09-30 15:39
3 3 from __future__ import unicode_literals
4 4  
5   -from django.conf import settings
6 5 from django.db import migrations, models
7 6 import django.db.models.deletion
8 7  
... ... @@ -12,8 +11,7 @@ class Migration(migrations.Migration):
12 11 initial = True
13 12  
14 13 dependencies = [
15   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16   - ('courses', '0001_initial'),
  14 + ('courses', '0002_auto_20160930_1239'),
17 15 ]
18 16  
19 17 operations = [
... ... @@ -38,8 +36,6 @@ class Migration(migrations.Migration):
38 36 ('message', models.TextField(verbose_name='Post message')),
39 37 ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')),
40 38 ('post_date', models.DateTimeField(auto_now_add=True, verbose_name='Post Date')),
41   - ('forum', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Forum', verbose_name='Forum')),
42   - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor')),
43 39 ],
44 40 options={
45 41 'verbose_name': 'Post',
... ... @@ -54,7 +50,6 @@ class Migration(migrations.Migration):
54 50 ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')),
55 51 ('answer_date', models.DateTimeField(auto_now_add=True, verbose_name='Answer Date')),
56 52 ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Post', verbose_name='Post')),
57   - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor')),
58 53 ],
59 54 options={
60 55 'verbose_name': 'Post Answer',
... ...
forum/migrations/0002_auto_20160930_1239.py 0 → 100644
... ... @@ -0,0 +1,35 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-09-30 15:39
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.conf import settings
  6 +from django.db import migrations, models
  7 +import django.db.models.deletion
  8 +
  9 +
  10 +class Migration(migrations.Migration):
  11 +
  12 + initial = True
  13 +
  14 + dependencies = [
  15 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  16 + ('forum', '0001_initial'),
  17 + ]
  18 +
  19 + operations = [
  20 + migrations.AddField(
  21 + model_name='postanswer',
  22 + name='user',
  23 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor'),
  24 + ),
  25 + migrations.AddField(
  26 + model_name='post',
  27 + name='forum',
  28 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Forum', verbose_name='Forum'),
  29 + ),
  30 + migrations.AddField(
  31 + model_name='post',
  32 + name='user',
  33 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor'),
  34 + ),
  35 + ]
... ...
poll/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-09-28 20:27
  2 +# Generated by Django 1.10 on 2016-09-30 15:40
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.db import migrations, models
... ... @@ -11,7 +11,7 @@ class Migration(migrations.Migration):
11 11 initial = True
12 12  
13 13 dependencies = [
14   - ('courses', '0001_initial'),
  14 + ('courses', '0002_auto_20160930_1239'),
15 15 ]
16 16  
17 17 operations = [
... ... @@ -23,20 +23,19 @@ class Migration(migrations.Migration):
23 23 ('order', models.PositiveSmallIntegerField(verbose_name='Order')),
24 24 ],
25 25 options={
26   - 'verbose_name': 'Answer',
27 26 'verbose_name_plural': 'Answers',
28 27 'ordering': ('order',),
  28 + 'verbose_name': 'Answer',
29 29 },
30 30 ),
31 31 migrations.CreateModel(
32 32 name='Poll',
33 33 fields=[
34 34 ('activity_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='courses.Activity')),
35   - ('question', models.CharField(max_length=300, verbose_name='Question')),
36 35 ],
37 36 options={
38   - 'verbose_name': 'Poll',
39 37 'verbose_name_plural': 'Polls',
  38 + 'verbose_name': 'Poll',
40 39 },
41 40 bases=('courses.activity',),
42 41 ),
... ...
poll/migrations/0002_remove_poll_question.py
... ... @@ -1,19 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-09-30 04:24
3   -from __future__ import unicode_literals
4   -
5   -from django.db import migrations
6   -
7   -
8   -class Migration(migrations.Migration):
9   -
10   - dependencies = [
11   - ('poll', '0001_initial'),
12   - ]
13   -
14   - operations = [
15   - migrations.RemoveField(
16   - model_name='poll',
17   - name='question',
18   - ),
19   - ]
users/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-09-21 02:52
  2 +# Generated by Django 1.10 on 2016-09-30 15:40
3 3 from __future__ import unicode_literals
4 4  
5 5 import django.contrib.auth.models
... ...