Удаление модели направлений

feature/fix_generate_pass
Andrey 8 years ago
parent 2e938e53e7
commit 8fbdb28e92
  1. 50
      access/migrations/0001_initial.py
  2. 40
      access/migrations/0002_auto_20171017_1606.py
  3. 27
      access/migrations/0003_account.py
  4. 10
      access/migrations/0003_auto_20171017_1623.py
  5. 14
      access/migrations/0004_auto_20171018_1022.py
  6. 38
      access/migrations/0005_auto_20171013_1222.py
  7. 11
      access/migrations/0005_auto_20171018_1025.py
  8. 25
      access/migrations/0006_auto_20171013_1242.py
  9. 30
      access/migrations/0007_auto_20171013_1247.py
  10. 30
      access/migrations/0009_auto_20171016_1634.py
  11. 30
      access/migrations/0010_auto_20171016_1709.py
  12. 30
      access/migrations/0012_auto_20171017_0924.py
  13. 35
      access/migrations/0013_auto_20171017_0933.py
  14. 51
      access/migrations/0015_auto_20171017_1514.py
  15. 3
      courses/admin.py
  16. 20
      courses/migrations/0001_initial.py
  17. 23
      courses/migrations/0004_auto_20171018_1025.py
  18. 27
      courses/models.py
  19. 1
      courses/urls.py
  20. 10
      courses/views.py
  21. 24
      csv/load_courses.py
  22. 4
      csv/load_users.py
  23. 2
      finance/migrations/0001_initial.py
  24. 2
      journals/migrations/0001_initial.py
  25. 21
      library/migrations/0001_initial.py
  26. 26
      library/migrations/0002_auto_20171013_1118.py
  27. 18
      management/migrations/0001_initial.py
  28. 2
      service/migrations/0001_initial.py
  29. 2
      storage/migrations/0001_initial.py

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 11:18 # Generated by Django 1.11.6 on 2017-10-17 16:06
from __future__ import unicode_literals from __future__ import unicode_literals
import access.models import access.models
@ -22,13 +22,12 @@ class Migration(migrations.Migration):
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
('email', models.EmailField(max_length=254, unique=True, verbose_name='email address')), ('email', models.EmailField(max_length=254, unique=True, verbose_name='email address')),
('first_name', models.CharField(blank=True, default='Guest', max_length=30, verbose_name='first name')), ('first_name', models.CharField(blank=True, default='Guest', max_length=63, verbose_name='first name')),
('last_name', models.CharField(blank=True, max_length=30, verbose_name='last name')), ('last_name', models.CharField(blank=True, max_length=63, verbose_name='last name')),
('date_joined', models.DateTimeField(auto_now_add=True, verbose_name='date joined')), ('date_joined', models.DateTimeField(verbose_name='date joined')),
('is_staff', models.BooleanField(default=False, help_text='Определяет разрешение пользователя на вход в административную часть.', verbose_name='флаг персонала')), ('is_staff', models.BooleanField(default=False, help_text='Определяет разрешение пользователя на вход в административную часть.', verbose_name='флаг персонала')),
('is_active', models.BooleanField(default=False, help_text='Определяет активен ли пользователь в системе. Снимите флаг, вместо удаления пользователя.', verbose_name='активен')), ('is_active', models.BooleanField(default=False, help_text='Определяет активен ли пользователь в системе. Снимите флаг, вместо удаления пользователя.', verbose_name='активен')),
('photo', models.ImageField(blank=True, default='user/photo/default_avatar.png', null=True, upload_to='user/photo/')), ('is_blocked', models.BooleanField(default=False, help_text='Определяет заблокирован ли пользователь. Поставьте флаг, если знаете, что это нехороший человек.', verbose_name='заблочен')),
('phone', models.CharField(blank=True, max_length=15)),
], ],
options={ options={
'verbose_name': 'user', 'verbose_name': 'user',
@ -39,11 +38,19 @@ class Migration(migrations.Migration):
], ],
), ),
migrations.CreateModel( migrations.CreateModel(
name='ActiveObject', name='Account',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('success', models.BooleanField(default=False, verbose_name='Завершён ли курс')), ('b_day', models.DateField(blank=True, null=True)),
('city', models.CharField(blank=True, max_length=63, null=True)),
('gender', models.SmallIntegerField(choices=[(1, 'male'), (0, 'undefined'), (2, 'female')], default=0)),
('photo', models.ImageField(blank=True, default='user/photo/default_avatar.png', null=True, upload_to='user/photo/')),
('phone', models.CharField(blank=True, max_length=15, null=True)),
], ],
options={
'verbose_name': 'Дополнительная информация о пользователе',
'verbose_name_plural': 'Дополнительная информация о пользователе',
},
), ),
migrations.CreateModel( migrations.CreateModel(
name='ExtraPrivilege', name='ExtraPrivilege',
@ -51,5 +58,32 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('is_done', models.BooleanField(default=False, verbose_name='Выполнено?')), ('is_done', models.BooleanField(default=False, verbose_name='Выполнено?')),
], ],
options={
'verbose_name': 'Доп право',
'verbose_name_plural': 'Доп права пользователя',
},
),
migrations.CreateModel(
name='Invite',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('hash', models.CharField(default='NduzOxMZQyaOJIb', max_length=15)),
('date', models.DateTimeField(blank=True, null=True)),
],
options={
'verbose_name': 'Приглошение в систему',
'verbose_name_plural': 'Приглошения в систему',
},
),
migrations.CreateModel(
name='Progress',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('success', models.BooleanField(default=False, verbose_name='Завершён ли курс')),
],
options={
'verbose_name': 'Прогресс пользователя',
'verbose_name_plural': 'Прогресс пользователя',
},
), ),
] ]

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 11:18 # Generated by Django 1.11.6 on 2017-10-17 16:06
from __future__ import unicode_literals from __future__ import unicode_literals
from django.conf import settings from django.conf import settings
@ -12,37 +12,47 @@ class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
('access', '0001_initial'),
('auth', '0008_alter_user_username_max_length'), ('auth', '0008_alter_user_username_max_length'),
('courses', '0001_initial'), ('courses', '0001_initial'),
('access', '0001_initial'),
] ]
operations = [ operations = [
migrations.AddField( migrations.AddField(
model_name='extraprivilege', model_name='progress',
name='subject',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Vertex', verbose_name='Объект'),
),
migrations.AddField(
model_name='extraprivilege',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Правообладатель'),
),
migrations.AddField(
model_name='activeobject',
name='active_obj', name='active_obj',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Vertex', verbose_name='Активный объект'), field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Vertex', verbose_name='Активный объект'),
), ),
migrations.AddField( migrations.AddField(
model_name='activeobject', model_name='progress',
name='course', name='course',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='Курс'), field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='Курс'),
), ),
migrations.AddField( migrations.AddField(
model_name='activeobject', model_name='progress',
name='user', name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Студент'), field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Студент'),
), ),
migrations.AddField(
model_name='invite',
name='owner',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='extraprivilege',
name='subject',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Vertex', verbose_name='Объект'),
),
migrations.AddField(
model_name='extraprivilege',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Правообладатель'),
),
migrations.AddField(
model_name='account',
name='owner',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
migrations.AddField( migrations.AddField(
model_name='user', model_name='user',
name='groups', name='groups',

@ -1,27 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 11:56
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('access', '0002_auto_20171013_1118'),
]
operations = [
migrations.CreateModel(
name='Account',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('b_day', models.DateTimeField(blank=True, null=True)),
('city', models.CharField(max_length=63, null=True)),
('gender', models.SmallIntegerField(choices=[(2, 'female'), (1, 'male'), (0, 'undefined')], default=0)),
('owner', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-17 14:50 # Generated by Django 1.11.6 on 2017-10-17 16:23
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import migrations, models from django.db import migrations, models
@ -8,14 +8,10 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('access', '0013_auto_20171017_0933'), ('access', '0002_auto_20171017_1606'),
] ]
operations = [ operations = [
migrations.RenameModel(
old_name='ActiveObject',
new_name='Progress',
),
migrations.AlterField( migrations.AlterField(
model_name='account', model_name='account',
name='gender', name='gender',
@ -24,6 +20,6 @@ class Migration(migrations.Migration):
migrations.AlterField( migrations.AlterField(
model_name='invite', model_name='invite',
name='hash', name='hash',
field=models.CharField(default='lQNTPwtkiSKGcAk', max_length=15), field=models.CharField(default='CMrIVEzSAMFLaRx', max_length=15),
), ),
] ]

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 12:00 # Generated by Django 1.11.6 on 2017-10-18 10:22
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import migrations, models from django.db import migrations, models
@ -8,18 +8,18 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('access', '0003_account'), ('access', '0003_auto_20171017_1623'),
] ]
operations = [ operations = [
migrations.AlterField( migrations.AlterField(
model_name='account', model_name='account',
name='b_day', name='gender',
field=models.DateField(blank=True, null=True), field=models.SmallIntegerField(choices=[(2, 'female'), (0, 'undefined'), (1, 'male')], default=0),
), ),
migrations.AlterField( migrations.AlterField(
model_name='account', model_name='invite',
name='gender', name='hash',
field=models.SmallIntegerField(choices=[(0, 'undefined'), (1, 'male'), (2, 'female')], default=0), field=models.CharField(default='eyCJRNJduvUlzpu', max_length=15),
), ),
] ]

@ -1,38 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 12:22
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0004_auto_20171013_1200'),
]
operations = [
migrations.RemoveField(
model_name='user',
name='phone',
),
migrations.RemoveField(
model_name='user',
name='photo',
),
migrations.AddField(
model_name='account',
name='phone',
field=models.CharField(blank=True, max_length=15),
),
migrations.AddField(
model_name='account',
name='photo',
field=models.ImageField(blank=True, default='user/photo/default_avatar.png', null=True, upload_to='user/photo/'),
),
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(1, 'male'), (0, 'undefined'), (2, 'female')], default=0),
),
]

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-16 11:59 # Generated by Django 1.11.6 on 2017-10-18 10:25
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import migrations, models from django.db import migrations, models
@ -8,7 +8,7 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('access', '0007_auto_20171013_1247'), ('access', '0004_auto_20171018_1022'),
] ]
operations = [ operations = [
@ -20,11 +20,6 @@ class Migration(migrations.Migration):
migrations.AlterField( migrations.AlterField(
model_name='invite', model_name='invite',
name='hash', name='hash',
field=models.CharField(default='bOpTjVJAphzdwkq', max_length=15), field=models.CharField(default='iaTxuvvpFPbVQPt', max_length=15),
),
migrations.AlterField(
model_name='user',
name='last_login',
field=models.DateTimeField(auto_now_add=True, verbose_name='last_login'),
), ),
] ]

@ -1,25 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 12:42
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0005_auto_20171013_1222'),
]
operations = [
migrations.AddField(
model_name='user',
name='is_blocked',
field=models.BooleanField(default=False, help_text='Определяет заблокирован ли пользователь. Поставьте флаг, если знаете, что это нехороший человек.', verbose_name='заблочен'),
),
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(2, 'female'), (0, 'undefined'), (1, 'male')], default=0),
),
]

@ -1,30 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 12:47
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('access', '0006_auto_20171013_1242'),
]
operations = [
migrations.CreateModel(
name='Invite',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('hash', models.CharField(default='ukCbBjPYGTGLOGs', max_length=15)),
('owner', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(2, 'female'), (1, 'male'), (0, 'undefined')], default=0),
),
]

@ -1,30 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-16 16:34
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0008_auto_20171016_1159'),
]
operations = [
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(0, 'undefined'), (2, 'female'), (1, 'male')], default=0),
),
migrations.AlterField(
model_name='invite',
name='hash',
field=models.CharField(default='vwiZvxTTDrJJUUF', max_length=15),
),
migrations.AlterField(
model_name='user',
name='last_login',
field=models.DateTimeField(auto_now_add=True, verbose_name='last login'),
),
]

@ -1,30 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-16 17:09
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0009_auto_20171016_1634'),
]
operations = [
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(1, 'male'), (2, 'female'), (0, 'undefined')], default=0),
),
migrations.AlterField(
model_name='invite',
name='hash',
field=models.CharField(default='QtrdrGbAnXtRHSL', max_length=15),
),
migrations.AlterField(
model_name='user',
name='last_login',
field=models.DateTimeField(blank=True, null=True, verbose_name='last login'),
),
]

@ -1,30 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-17 09:24
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0011_auto_20171017_0800'),
]
operations = [
migrations.AddField(
model_name='invite',
name='date',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(0, 'undefined'), (2, 'female'), (1, 'male')], default=0),
),
migrations.AlterField(
model_name='invite',
name='hash',
field=models.CharField(default='JnNSTfEkoDEclgp', max_length=15),
),
]

@ -1,35 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-17 09:33
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0012_auto_20171017_0924'),
]
operations = [
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(0, 'undefined'), (1, 'male'), (2, 'female')], default=0),
),
migrations.AlterField(
model_name='invite',
name='hash',
field=models.CharField(default='RGmRBoJxBvpmTzm', max_length=15),
),
migrations.AlterField(
model_name='user',
name='first_name',
field=models.CharField(blank=True, default='Guest', max_length=63, verbose_name='first name'),
),
migrations.AlterField(
model_name='user',
name='last_name',
field=models.CharField(blank=True, max_length=63, verbose_name='last name'),
),
]

@ -1,51 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-17 15:14
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0014_auto_20171017_1450'),
]
operations = [
migrations.AlterModelOptions(
name='account',
options={'verbose_name': 'Дополнительная информация о пользователе', 'verbose_name_plural': 'Дополнительная информация о пользователе'},
),
migrations.AlterModelOptions(
name='extraprivilege',
options={'verbose_name': 'Доп право', 'verbose_name_plural': 'Доп права пользователя'},
),
migrations.AlterModelOptions(
name='invite',
options={'verbose_name': 'Приглошение в систему', 'verbose_name_plural': 'Приглошения в систему'},
),
migrations.AlterModelOptions(
name='progress',
options={'verbose_name': 'Прогресс пользователя', 'verbose_name_plural': 'Прогресс пользователя'},
),
migrations.AlterField(
model_name='account',
name='city',
field=models.CharField(blank=True, max_length=63, null=True),
),
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(2, 'female'), (1, 'male'), (0, 'undefined')], default=0),
),
migrations.AlterField(
model_name='account',
name='phone',
field=models.CharField(blank=True, max_length=15, null=True),
),
migrations.AlterField(
model_name='invite',
name='hash',
field=models.CharField(default='EwxzlFyTLohcDNa', max_length=15),
),
]

@ -1,14 +1,13 @@
from django.contrib import admin from django.contrib import admin
from courses.models import Course, Skills, Achievements, SkillJ,\ from courses.models import Course, Skills, Achievements, SkillJ,\
CourseMap, Topic, Task, Vertex, Diploma, MaterialDirection, Tutorial CourseMap, Topic, Task, Vertex, Diploma, Tutorial
admin.site.register(CourseMap) admin.site.register(CourseMap)
admin.site.register(Topic) admin.site.register(Topic)
admin.site.register(Task) admin.site.register(Task)
admin.site.register(Vertex) admin.site.register(Vertex)
admin.site.register(Tutorial) admin.site.register(Tutorial)
admin.site.register(MaterialDirection)
admin.site.register(Course) admin.site.register(Course)
admin.site.register(Skills) admin.site.register(Skills)
admin.site.register(Achievements) admin.site.register(Achievements)

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 11:18 # Generated by Django 1.11.6 on 2017-10-17 16:06
from __future__ import unicode_literals from __future__ import unicode_literals
from django.conf import settings from django.conf import settings
@ -15,7 +15,6 @@ class Migration(migrations.Migration):
migrations.swappable_dependency(settings.AUTH_USER_MODEL), migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('contenttypes', '0002_remove_content_type_name'), ('contenttypes', '0002_remove_content_type_name'),
('storage', '0001_initial'), ('storage', '0001_initial'),
('library', '0002_auto_20171013_1118'),
] ]
operations = [ operations = [
@ -23,6 +22,7 @@ class Migration(migrations.Migration):
name='Achievements', name='Achievements',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('icon', models.ImageField(blank=True, null=True, upload_to='diplomas', verbose_name='Отображение достижения')),
], ],
options={ options={
'verbose_name': 'Достижение', 'verbose_name': 'Достижение',
@ -36,22 +36,16 @@ class Migration(migrations.Migration):
('hidden', models.BooleanField(default=False, verbose_name='Видно только оплатившим')), ('hidden', models.BooleanField(default=False, verbose_name='Видно только оплатившим')),
('level', models.CharField(choices=[('B', 'Базовый'), ('A', 'Продвинутый'), ('E', 'Экспертный'), ('B+A', 'Базовый + Продвинутый')], default='B', max_length=3, verbose_name='Уровень')), ('level', models.CharField(choices=[('B', 'Базовый'), ('A', 'Продвинутый'), ('E', 'Экспертный'), ('B+A', 'Базовый + Продвинутый')], default='B', max_length=3, verbose_name='Уровень')),
('slug', models.SlugField(blank=True, default='', editable=False, max_length=255, unique=True)), ('slug', models.SlugField(blank=True, default='', editable=False, max_length=255, unique=True)),
('icon', models.ImageField(blank=True, null=True, upload_to='course', verbose_name='Иконка курса')),
('public', models.BooleanField(default=False, verbose_name='Опубликовать')), ('public', models.BooleanField(default=False, verbose_name='Опубликовать')),
('title', models.CharField(max_length=255, verbose_name='Заголовок')), ('title', models.CharField(max_length=255, verbose_name='Заголовок')),
('description', models.TextField(blank=True, verbose_name='Описание')), ('description', models.TextField(blank=True, verbose_name='Описание')),
('image', models.ImageField(blank=True, upload_to='course', verbose_name='Изображение')), ('image', models.ImageField(blank=True, upload_to='course', verbose_name='Изображение')),
('big_image', models.ImageField(blank=True, upload_to='course', verbose_name='Большое изображение')), ('big_image', models.ImageField(blank=True, upload_to='course', verbose_name='Большое изображение')),
('big_mobile_image', models.ImageField(blank=True, help_text='Большая картинка для мобильной версии', null=True, upload_to='course', verbose_name='Под мобилку')), ('big_mobile_image', models.ImageField(blank=True, help_text='Большая картинка для мобильной версии', null=True, upload_to='course', verbose_name='Под мобилку')),
('preview', models.CharField(blank=True, default='', max_length=255, verbose_name='Трэйл')),
('sort', models.IntegerField(default=0, verbose_name='Порядок сортировки')),
('min_price', models.IntegerField(default=0, verbose_name='Цена от')),
('buy_icon', models.ImageField(blank=True, null=True, upload_to='course', verbose_name='Картинка покупки')),
], ],
options={ options={
'verbose_name': 'Курс', 'verbose_name': 'Курс',
'verbose_name_plural': 'Курсы', 'verbose_name_plural': 'Курсы',
'ordering': ['sort'],
}, },
), ),
migrations.CreateModel( migrations.CreateModel(
@ -183,21 +177,11 @@ class Migration(migrations.Migration):
name='direction', name='direction',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.MaterialDirection', verbose_name='Направление'), field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.MaterialDirection', verbose_name='Направление'),
), ),
migrations.AddField(
model_name='course',
name='keywords',
field=models.ManyToManyField(blank=True, to='library.Tags', verbose_name='Ключевые слова'),
),
migrations.AddField( migrations.AddField(
model_name='course', model_name='course',
name='mentors', name='mentors',
field=models.ManyToManyField(blank=True, related_name='course_mentors', to=settings.AUTH_USER_MODEL, verbose_name='Кураторы'), field=models.ManyToManyField(blank=True, related_name='course_mentors', to=settings.AUTH_USER_MODEL, verbose_name='Кураторы'),
), ),
migrations.AddField(
model_name='course',
name='recommend',
field=models.ManyToManyField(blank=True, help_text='Курсы, которые стоит порекомендовать вместе с этим', related_name='_course_recommend_+', to='courses.Course', verbose_name='Связанные курсы'),
),
migrations.AddField( migrations.AddField(
model_name='course', model_name='course',
name='teachers', name='teachers',

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-18 10:25
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('courses', '0003_auto_20171018_1022'),
]
operations = [
migrations.AlterModelOptions(
name='skillj',
options={'verbose_name': 'Размер навыка', 'verbose_name_plural': 'Размеры навыков'},
),
migrations.RemoveField(
model_name='skillj',
name='size',
),
]

@ -10,20 +10,6 @@ from management.models import Comment
from storage.models import Storage from storage.models import Storage
class MaterialDirection(models.Model):
title = models.CharField(verbose_name=u'Заголовок', max_length=255)
color = models.CharField(verbose_name=u'Цвет', max_length=50)
description = models.TextField(verbose_name=u'Описание', blank=True)
mentors = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Кураторы')
def __str__(self):
return self.title
class Meta:
verbose_name = u'Направление'
verbose_name_plural = u'Направления'
class Course(models.Model): class Course(models.Model):
COURSE_LEVEL = ( COURSE_LEVEL = (
('B', u'Базовый'), ('B', u'Базовый'),
@ -31,10 +17,16 @@ class Course(models.Model):
('E', u'Экспертный'), ('E', u'Экспертный'),
('B+A', u'Базовый + Продвинутый') ('B+A', u'Базовый + Продвинутый')
) )
COURSE_DIRECTION = (
(3, 'Бизнес'),
(2, 'Веб-дизайн'),
(1, 'Разработка'),
(4, 'Рисование')
)
hidden = models.BooleanField(verbose_name=u'Видно только оплатившим', default=False) hidden = models.BooleanField(verbose_name=u'Видно только оплатившим', default=False)
level = models.CharField(verbose_name=u'Уровень', choices=COURSE_LEVEL, default='B', max_length=3) level = models.CharField(verbose_name=u'Уровень', choices=COURSE_LEVEL, default='B', max_length=3)
slug = models.SlugField(max_length=255, editable=False, blank=True, default='', unique=True) slug = models.SlugField(max_length=255, editable=False, blank=True, default='', unique=True)
direction = models.ForeignKey(MaterialDirection, verbose_name=u'Направление', null=True) direction = models.SmallIntegerField(choices=COURSE_DIRECTION, verbose_name=u'Направление', null=True)
mentors = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Кураторы', blank=True, mentors = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Кураторы', blank=True,
related_name='course_mentors') related_name='course_mentors')
public = models.BooleanField(verbose_name=u'Опубликовать', default=False) public = models.BooleanField(verbose_name=u'Опубликовать', default=False)
@ -63,7 +55,7 @@ class Course(models.Model):
if type([]) == type(i): if type([]) == type(i):
acc[-1]['children'] = helper(i) acc[-1]['children'] = helper(i)
else: else:
acc.append(serializer(Vertex.manager.get(id=i)).data) acc.append(serializer(Vertex.objects.get(id=i)).data)
return acc return acc
return helper(course_map) return helper(course_map)
@ -83,7 +75,6 @@ class Course(models.Model):
class Meta: class Meta:
verbose_name = u"Курс" verbose_name = u"Курс"
verbose_name_plural = u"Курсы" verbose_name_plural = u"Курсы"
ordering = ['sort']
class Skills(models.Model): class Skills(models.Model):
@ -102,14 +93,12 @@ class Skills(models.Model):
class SkillJ(models.Model): class SkillJ(models.Model):
skill = models.ForeignKey(to="Skills", verbose_name=u'Навык') skill = models.ForeignKey(to="Skills", verbose_name=u'Навык')
lesson = models.ForeignKey(to="Vertex", verbose_name=u'Урок') lesson = models.ForeignKey(to="Vertex", verbose_name=u'Урок')
size = models.IntegerField(verbose_name=u'Размер', default=0)
def __str__(self): return '%s %s' % (self.skill, self.size) def __str__(self): return '%s %s' % (self.skill, self.size)
class Meta: class Meta:
verbose_name = u'Размер навыка' verbose_name = u'Размер навыка'
verbose_name_plural = u'Размеры навыков' verbose_name_plural = u'Размеры навыков'
ordering = ['id']
class Achievements(models.Model): class Achievements(models.Model):

@ -5,6 +5,5 @@ urlpatterns = [
url(r'detail/([0-9]{1,99})/$', views.CourseDetailView.as_view()), url(r'detail/([0-9]{1,99})/$', views.CourseDetailView.as_view()),
url(r'vertex/([0-9]{1,99})/$', views.VertexDetail.as_view()), url(r'vertex/([0-9]{1,99})/$', views.VertexDetail.as_view()),
url(r'tree/(?P<slug>[-\w]+)/$', views.TreeView.as_view()), url(r'tree/(?P<slug>[-\w]+)/$', views.TreeView.as_view()),
url(r'directions/$', views.DirectionListView.as_view()),
url(r'^$', views.CourseListView.as_view()), url(r'^$', views.CourseListView.as_view()),
] ]

@ -3,20 +3,12 @@ from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response from rest_framework.response import Response
from access.serializers import ExtraPrivilegeSerializer from access.serializers import ExtraPrivilegeSerializer
from courses.models import Course, MaterialDirection, Vertex from courses.models import Course, Vertex
from access.models import Progress, ExtraPrivilege from access.models import Progress, ExtraPrivilege
from courses.serializers import CourseDetailSerializer, CourseListSerializer, VertexSerializer, CourseTreeSerializer from courses.serializers import CourseDetailSerializer, CourseListSerializer, VertexSerializer, CourseTreeSerializer
from finance.models import Bill from finance.models import Bill
class DirectionListView(APIView):
renderer_classes = (JSONRenderer,)
status_code = 200
def get(self, _request):
return Response([direction.title for direction in MaterialDirection.objects.all()], self.status_code)
class TreeView(APIView): class TreeView(APIView):
renderer_classes = (JSONRenderer,) renderer_classes = (JSONRenderer,)
status_code = 200 status_code = 200

@ -0,0 +1,24 @@
import os, sys, django, csv
sys.path.append("../")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from courses.models import Course
if __name__ == '__main__':
with open('./course/course.csv') as user_csv:
user_reader = csv.DictReader(user_csv)
for row in user_reader:
row = dict(row)
teachers = row.pop('teachers', None).split("[")[1].split("]")[0].split(", ")
mentors = row.pop('mentors', None).split("[")[1].split("]")[0].split(", ")
course, _is_create = Course.objects.get_or_create(**row)
for teacher in teachers:
if teacher:
course.teachers.add(teacher)
for mentor in mentors:
if mentor:
course.mentors.add(mentor)

@ -8,7 +8,7 @@ from django.contrib.auth import get_user_model
from access.models import Account from access.models import Account
if __name__ == '__main__': if __name__ == '__main__':
with open('../csv/access/users.csv') as user_csv: with open('./access/users.csv') as user_csv:
user_reader = csv.DictReader(user_csv) user_reader = csv.DictReader(user_csv)
for row in user_reader: for row in user_reader:
try: try:
@ -25,7 +25,7 @@ if __name__ == '__main__':
else: else:
raise e raise e
with open('../csv/access/account.csv') as account_csv: with open('./access/account.csv') as account_csv:
account_reader = csv.DictReader(account_csv) account_reader = csv.DictReader(account_csv)
for row in account_reader: for row in account_reader:
row = dict(row) row = dict(row)

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 11:18 # Generated by Django 1.11.6 on 2017-10-17 16:06
from __future__ import unicode_literals from __future__ import unicode_literals
from django.conf import settings from django.conf import settings

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 11:18 # Generated by Django 1.11.6 on 2017-10-17 16:06
from __future__ import unicode_literals from __future__ import unicode_literals
from django.conf import settings from django.conf import settings

@ -1,9 +1,10 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.9.3 on 2017-10-12 16:50 # Generated by Django 1.11.6 on 2017-10-17 16:06
from __future__ import unicode_literals from __future__ import unicode_literals
import datetime import datetime
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
@ -33,9 +34,9 @@ class Migration(migrations.Migration):
('all_views', models.IntegerField(blank=True, default=0, verbose_name='Всего просмотров')), ('all_views', models.IntegerField(blank=True, default=0, verbose_name='Всего просмотров')),
], ],
options={ options={
'ordering': ['-date'],
'verbose_name_plural': 'Статьи',
'verbose_name': 'Статья', 'verbose_name': 'Статья',
'verbose_name_plural': 'Статьи',
'ordering': ['-date'],
}, },
), ),
migrations.CreateModel( migrations.CreateModel(
@ -45,8 +46,8 @@ class Migration(migrations.Migration):
('name', models.CharField(max_length=255, verbose_name='Раздел')), ('name', models.CharField(max_length=255, verbose_name='Раздел')),
], ],
options={ options={
'verbose_name_plural': 'Разделы статей',
'verbose_name': 'Раздел статьи', 'verbose_name': 'Раздел статьи',
'verbose_name_plural': 'Разделы статей',
}, },
), ),
migrations.CreateModel( migrations.CreateModel(
@ -56,8 +57,18 @@ class Migration(migrations.Migration):
('name', models.CharField(max_length=255, verbose_name='Теги')), ('name', models.CharField(max_length=255, verbose_name='Теги')),
], ],
options={ options={
'verbose_name_plural': 'Теги',
'verbose_name': 'Тег', 'verbose_name': 'Тег',
'verbose_name_plural': 'Теги',
}, },
), ),
migrations.AddField(
model_name='article',
name='section',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='library.ArticleSection', verbose_name='Раздел'),
),
migrations.AddField(
model_name='article',
name='tags',
field=models.ManyToManyField(blank=True, to='library.Tags', verbose_name='Теги'),
),
] ]

@ -1,26 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 11:18
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('library', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='article',
name='section',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='library.ArticleSection', verbose_name='Раздел'),
),
migrations.AddField(
model_name='article',
name='tags',
field=models.ManyToManyField(blank=True, to='library.Tags', verbose_name='Теги'),
),
]

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 11:18 # Generated by Django 1.11.6 on 2017-10-17 16:06
from __future__ import unicode_literals from __future__ import unicode_literals
from django.conf import settings from django.conf import settings
@ -28,11 +28,25 @@ class Migration(migrations.Migration):
('children', models.ManyToManyField(blank=True, to='management.Comment')), ('children', models.ManyToManyField(blank=True, to='management.Comment')),
('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
('files', models.ManyToManyField(blank=True, editable=False, to='storage.Storage', verbose_name='Прикрепленые файлы')), ('files', models.ManyToManyField(blank=True, editable=False, to='storage.Storage', verbose_name='Прикрепленые файлы')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comment_owner', to=settings.AUTH_USER_MODEL, verbose_name='Автор')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Автор')),
], ],
options={ options={
'verbose_name': 'Комментарий', 'verbose_name': 'Комментарий',
'verbose_name_plural': 'Комментарии', 'verbose_name_plural': 'Комментарии',
}, },
), ),
migrations.CreateModel(
name='Like',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('is_positive', models.BooleanField(default=True)),
('object_id', models.PositiveIntegerField()),
('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Автор')),
],
options={
'verbose_name': 'Лайк-дизлайк',
'verbose_name_plural': 'Лайки-дизлайки',
},
),
] ]

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 11:18 # Generated by Django 1.11.6 on 2017-10-17 16:06
from __future__ import unicode_literals from __future__ import unicode_literals
import datetime import datetime

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-13 11:18 # Generated by Django 1.11.6 on 2017-10-17 16:06
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import migrations, models from django.db import migrations, models

Loading…
Cancel
Save