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

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 -*-
# 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
import access.models
@ -22,13 +22,12 @@ class Migration(migrations.Migration):
('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')),
('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')),
('last_name', models.CharField(blank=True, max_length=30, verbose_name='last name')),
('date_joined', models.DateTimeField(auto_now_add=True, verbose_name='date joined')),
('first_name', models.CharField(blank=True, default='Guest', max_length=63, verbose_name='first name')),
('last_name', models.CharField(blank=True, max_length=63, verbose_name='last name')),
('date_joined', models.DateTimeField(verbose_name='date joined')),
('is_staff', 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/')),
('phone', models.CharField(blank=True, max_length=15)),
('is_blocked', models.BooleanField(default=False, help_text='Определяет заблокирован ли пользователь. Поставьте флаг, если знаете, что это нехороший человек.', verbose_name='заблочен')),
],
options={
'verbose_name': 'user',
@ -39,11 +38,19 @@ class Migration(migrations.Migration):
],
),
migrations.CreateModel(
name='ActiveObject',
name='Account',
fields=[
('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(
name='ExtraPrivilege',
@ -51,5 +58,32 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('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 -*-
# 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 django.conf import settings
@ -12,37 +12,47 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('access', '0001_initial'),
('auth', '0008_alter_user_username_max_length'),
('courses', '0001_initial'),
('access', '0001_initial'),
]
operations = [
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='activeobject',
model_name='progress',
name='active_obj',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Vertex', verbose_name='Активный объект'),
),
migrations.AddField(
model_name='activeobject',
model_name='progress',
name='course',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='Курс'),
),
migrations.AddField(
model_name='activeobject',
model_name='progress',
name='user',
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(
model_name='user',
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 -*-
# 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 django.db import migrations, models
@ -8,14 +8,10 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0013_auto_20171017_0933'),
('access', '0002_auto_20171017_1606'),
]
operations = [
migrations.RenameModel(
old_name='ActiveObject',
new_name='Progress',
),
migrations.AlterField(
model_name='account',
name='gender',
@ -24,6 +20,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='invite',
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 -*-
# 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 django.db import migrations, models
@ -8,18 +8,18 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0003_account'),
('access', '0003_auto_20171017_1623'),
]
operations = [
migrations.AlterField(
model_name='account',
name='b_day',
field=models.DateField(blank=True, null=True),
name='gender',
field=models.SmallIntegerField(choices=[(2, 'female'), (0, 'undefined'), (1, 'male')], default=0),
),
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(0, 'undefined'), (1, 'male'), (2, 'female')], default=0),
model_name='invite',
name='hash',
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 -*-
# 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 django.db import migrations, models
@ -8,7 +8,7 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0007_auto_20171013_1247'),
('access', '0004_auto_20171018_1022'),
]
operations = [
@ -20,11 +20,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='invite',
name='hash',
field=models.CharField(default='bOpTjVJAphzdwkq', max_length=15),
),
migrations.AlterField(
model_name='user',
name='last_login',
field=models.DateTimeField(auto_now_add=True, verbose_name='last_login'),
field=models.CharField(default='iaTxuvvpFPbVQPt', max_length=15),
),
]

@ -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 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(Topic)
admin.site.register(Task)
admin.site.register(Vertex)
admin.site.register(Tutorial)
admin.site.register(MaterialDirection)
admin.site.register(Course)
admin.site.register(Skills)
admin.site.register(Achievements)

@ -1,5 +1,5 @@
# -*- 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 django.conf import settings
@ -15,7 +15,6 @@ class Migration(migrations.Migration):
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('contenttypes', '0002_remove_content_type_name'),
('storage', '0001_initial'),
('library', '0002_auto_20171013_1118'),
]
operations = [
@ -23,6 +22,7 @@ class Migration(migrations.Migration):
name='Achievements',
fields=[
('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={
'verbose_name': 'Достижение',
@ -36,22 +36,16 @@ class Migration(migrations.Migration):
('hidden', models.BooleanField(default=False, 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)),
('icon', models.ImageField(blank=True, null=True, upload_to='course', verbose_name='Иконка курса')),
('public', models.BooleanField(default=False, verbose_name='Опубликовать')),
('title', models.CharField(max_length=255, verbose_name='Заголовок')),
('description', models.TextField(blank=True, verbose_name='Описание')),
('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='Под мобилку')),
('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={
'verbose_name': 'Курс',
'verbose_name_plural': 'Курсы',
'ordering': ['sort'],
},
),
migrations.CreateModel(
@ -183,21 +177,11 @@ class Migration(migrations.Migration):
name='direction',
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(
model_name='course',
name='mentors',
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(
model_name='course',
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
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):
COURSE_LEVEL = (
('B', u'Базовый'),
@ -31,10 +17,16 @@ class Course(models.Model):
('E', u'Экспертный'),
('B+A', u'Базовый + Продвинутый')
)
COURSE_DIRECTION = (
(3, 'Бизнес'),
(2, 'Веб-дизайн'),
(1, 'Разработка'),
(4, 'Рисование')
)
hidden = models.BooleanField(verbose_name=u'Видно только оплатившим', default=False)
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)
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,
related_name='course_mentors')
public = models.BooleanField(verbose_name=u'Опубликовать', default=False)
@ -63,7 +55,7 @@ class Course(models.Model):
if type([]) == type(i):
acc[-1]['children'] = helper(i)
else:
acc.append(serializer(Vertex.manager.get(id=i)).data)
acc.append(serializer(Vertex.objects.get(id=i)).data)
return acc
return helper(course_map)
@ -83,7 +75,6 @@ class Course(models.Model):
class Meta:
verbose_name = u"Курс"
verbose_name_plural = u"Курсы"
ordering = ['sort']
class Skills(models.Model):
@ -102,14 +93,12 @@ class Skills(models.Model):
class SkillJ(models.Model):
skill = models.ForeignKey(to="Skills", 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)
class Meta:
verbose_name = u'Размер навыка'
verbose_name_plural = u'Размеры навыков'
ordering = ['id']
class Achievements(models.Model):

@ -5,6 +5,5 @@ urlpatterns = [
url(r'detail/([0-9]{1,99})/$', views.CourseDetailView.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'directions/$', views.DirectionListView.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 access.serializers import ExtraPrivilegeSerializer
from courses.models import Course, MaterialDirection, Vertex
from courses.models import Course, Vertex
from access.models import Progress, ExtraPrivilege
from courses.serializers import CourseDetailSerializer, CourseListSerializer, VertexSerializer, CourseTreeSerializer
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):
renderer_classes = (JSONRenderer,)
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
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)
for row in user_reader:
try:
@ -25,7 +25,7 @@ if __name__ == '__main__':
else:
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)
for row in account_reader:
row = dict(row)

@ -1,5 +1,5 @@
# -*- 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 django.conf import settings

@ -1,5 +1,5 @@
# -*- 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 django.conf import settings

@ -1,9 +1,10 @@
# -*- 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
import datetime
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
@ -33,9 +34,9 @@ class Migration(migrations.Migration):
('all_views', models.IntegerField(blank=True, default=0, verbose_name='Всего просмотров')),
],
options={
'ordering': ['-date'],
'verbose_name_plural': 'Статьи',
'verbose_name': 'Статья',
'verbose_name_plural': 'Статьи',
'ordering': ['-date'],
},
),
migrations.CreateModel(
@ -45,8 +46,8 @@ class Migration(migrations.Migration):
('name', models.CharField(max_length=255, verbose_name='Раздел')),
],
options={
'verbose_name_plural': 'Разделы статей',
'verbose_name': 'Раздел статьи',
'verbose_name_plural': 'Разделы статей',
},
),
migrations.CreateModel(
@ -56,8 +57,18 @@ class Migration(migrations.Migration):
('name', models.CharField(max_length=255, verbose_name='Теги')),
],
options={
'verbose_name_plural': 'Теги',
'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 -*-
# 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 django.conf import settings
@ -28,11 +28,25 @@ class Migration(migrations.Migration):
('children', models.ManyToManyField(blank=True, to='management.Comment')),
('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='Прикрепленые файлы')),
('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={
'verbose_name': 'Комментарий',
'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 -*-
# 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
import datetime

@ -1,5 +1,5 @@
# -*- 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 django.db import migrations, models

Loading…
Cancel
Save