зависимости

feature/fix_generate_pass
Andrey 8 years ago
parent a681f3fd3f
commit d3bf1db1a2
  1. 13
      access/migrations/0001_initial.py
  2. 19
      access/migrations/0003_remove_progresslesson_comment.py
  3. 9
      access/models/other.py
  4. 4
      achievements/migrations/0001_initial.py
  5. 5
      courses/migrations/0001_initial.py
  6. 25
      courses/migrations/0003_auto_20180111_1541.py
  7. 1
      courses/models.py
  8. 24
      csv/load_bills.py
  9. 42
      csv/load_courses.py
  10. 5
      csv/load_diploma.py
  11. 3
      csv/load_perm.py
  12. 6
      finance/migrations/0001_initial.py
  13. 20
      finance/migrations/0002_auto_20180112_1013.py
  14. 4
      finance/models.py
  15. 2
      library/migrations/0001_initial.py
  16. 2
      storage/migrations/0001_initial.py

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-01-11 14:34
# Generated by Django 1.11.6 on 2018-01-11 17:32
from __future__ import unicode_literals
import access.models.user
@ -76,8 +76,9 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Progress',
fields=[
('hidden_lessons', django.contrib.postgres.fields.ArrayField(base_field=models.UUIDField(editable=False, primary_key=True, verbose_name='Токен урока'), default=[], size=None, verbose_name='Список скрытых уроков')),
('course_token', models.UUIDField(editable=False, primary_key=True, serialize=False, verbose_name='Токен курса')),
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('hidden_lessons', django.contrib.postgres.fields.ArrayField(base_field=models.UUIDField(editable=False, unique=True, verbose_name='Токен урока'), default=[], size=None, verbose_name='Список скрытых уроков')),
('course_token', models.UUIDField(editable=False, unique=True, verbose_name='Токен курса')),
('teacher', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='teacher_progress', to=settings.AUTH_USER_MODEL, verbose_name='Преподователь по умолчанию')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Студент')),
],
@ -89,7 +90,8 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='ProgressLesson',
fields=[
('lesson_token', models.UUIDField(editable=False, primary_key=True, serialize=False, verbose_name='Токен урока')),
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('lesson_token', models.UUIDField(editable=False, unique=True, verbose_name='Токен урока')),
('comment', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=15, unique=True, verbose_name='Ссылки на комменты'), default=[], size=None)),
('date', models.DateTimeField(blank=True, null=True, verbose_name='Дата зачтения задания')),
('progress', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='access.Progress')),
@ -116,8 +118,9 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='UserAnswerBlock',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateTimeField(auto_now_add=True, verbose_name='Дата сдачи')),
('demand_token', models.UUIDField(editable=False, primary_key=True, serialize=False, verbose_name='Токен правила')),
('demand_token', models.UUIDField(editable=False, unique=True, verbose_name='Токен правила')),
('checker', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Проверяющий')),
('progress', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='access.ProgressLesson')),
],

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-01-12 10:57
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('access', '0002_init_group'),
]
operations = [
migrations.RemoveField(
model_name='progresslesson',
name='comment',
),
]

@ -46,14 +46,14 @@ class Account(models.Model):
class Progress(models.Model):
hidden_lessons = ArrayField(
models.UUIDField(verbose_name="Токен урока", primary_key=True, editable=False),
models.UUIDField(verbose_name="Токен урока", unique=True, editable=False),
default=[],
verbose_name='Список скрытых уроков',
)
teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name="Преподователь по умолчанию",
related_name='teacher_progress')
user = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name='Студент')
course_token = models.UUIDField(verbose_name="Токен курса", primary_key=True, editable=False)
course_token = models.UUIDField(verbose_name="Токен курса", unique=True, editable=False)
def __str__(self):
return '%s' % (self.user.email,)
@ -66,9 +66,8 @@ class Progress(models.Model):
class ProgressLesson(models.Model):
progress = models.ForeignKey(to=Progress)
lesson_token = models.UUIDField(verbose_name="Токен урока", primary_key=True, editable=False)
lesson_token = models.UUIDField(verbose_name="Токен урока", unique=True, editable=False)
teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name="Преподователь",)
comment = ArrayField(models.CharField(max_length=15, verbose_name='Ссылки на комменты', unique=True), default=[])
date = models.DateTimeField(verbose_name='Дата зачтения задания', blank=True, null=True)
class Meta:
@ -79,7 +78,7 @@ class ProgressLesson(models.Model):
class UserAnswerBlock(models.Model):
progress = models.ForeignKey(to=ProgressLesson)
date = models.DateTimeField(verbose_name='Дата сдачи', auto_now_add=True)
demand_token = models.UUIDField(verbose_name="Токен правила", primary_key=True, editable=False)
demand_token = models.UUIDField(verbose_name="Токен правила", unique=True, editable=False)
checker = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name="Проверяющий",)
class Meta:

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-01-11 14:34
# Generated by Django 1.11.6 on 2018-01-11 17:32
from __future__ import unicode_literals
from django.conf import settings
@ -12,8 +12,8 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('courses', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('courses', '0001_initial'),
]
operations = [

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-01-11 14:34
# Generated by Django 1.11.6 on 2018-01-11 17:32
from __future__ import unicode_literals
import django.contrib.postgres.fields
@ -26,7 +26,7 @@ class Migration(migrations.Migration):
('level', models.CharField(choices=[('B', 'Базовый'), ('A', 'Продвинутый'), ('E', 'Экспертный'), ('B+A', 'Базовый + Продвинутый')], default='B', max_length=3, verbose_name='Уровень')),
('direction', models.SmallIntegerField(choices=[(3, 'Бизнес'), (2, 'Веб-дизайн'), (1, 'Разработка'), (4, 'Рисование'), (5, 'Музыка')], verbose_name='Направление')),
('public', models.BooleanField(default=False, verbose_name='Опубликовать')),
('teachers', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=15, verbose_name='Ссылки на преподов'), default=[], size=None)),
('teacher_tokens', django.contrib.postgres.fields.ArrayField(base_field=models.UUIDField(editable=False, primary_key=True, verbose_name='Токен препода'), default=[], size=None, verbose_name='Преподователи курса')),
('image', models.URLField(blank=True, max_length=255, verbose_name='Изображение')),
('big_image', models.URLField(blank=True, max_length=255, verbose_name='Большое изображение')),
('big_mobile_image', models.URLField(blank=True, help_text='Большая картинка для мобильной версии', max_length=255, verbose_name='Под мобилку')),
@ -106,6 +106,7 @@ class Migration(migrations.Migration):
('title', models.CharField(max_length=255, verbose_name='Название')),
('description', models.TextField(blank=True, null=True, verbose_name='Описание')),
('icon', models.ImageField(blank=True, null=True, upload_to='', verbose_name='Иконка темы')),
('sort', models.SmallIntegerField(unique=True)),
('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='курс')),
],
options={

@ -1,25 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-01-11 15:41
from __future__ import unicode_literals
import django.contrib.postgres.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('courses', '0002_init_demands'),
]
operations = [
migrations.RemoveField(
model_name='course',
name='teachers',
),
migrations.AddField(
model_name='course',
name='teacher_tokens',
field=django.contrib.postgres.fields.ArrayField(base_field=models.UUIDField(editable=False, primary_key=True, verbose_name='Токен препода'), default=[], size=None, verbose_name='Преподователи курса'),
),
]

@ -103,6 +103,7 @@ class Topic(models.Model):
title = models.CharField(verbose_name='Название', max_length=255)
description = models.TextField(verbose_name='Описание', blank=True, null=True)
icon = models.ImageField(verbose_name='Иконка темы', null=True, blank=True)
sort = models.SmallIntegerField(unique=True)
class Meta:
verbose_name = "Тема"

@ -28,12 +28,11 @@ if __name__ == '__main__':
bill_kwarg = dict()
row = dict(row)
bill_kwarg['id'] = row.pop('id', None)
bill_kwarg['route'] = Course.objects.get(id=row.pop('course__id', None)).route.out_key
opener_id = row.pop('opener__id', None)
bill_kwarg['opener'] = get_user_model().objects.get(id=opener_id) if opener_id \
opener = row.pop('opener', None)
bill_kwarg['opener'] = get_user_model().objects.get(email=opener) if opener \
else get_user_model().objects.get(email="kate.gazukina@skillbox.ru")
email = row.pop('user__email', None)
email = row.pop('user', None)
try:
email = email[:email.index("\n")]
except ValueError:
@ -46,12 +45,15 @@ if __name__ == '__main__':
bill_kwarg['comment'] = row.pop('comment', None)
bill_kwarg['description'] = row.pop('description', None)
bill_kwarg['course_token'] = Course.objects.get(slug=row.pop('course', None)).token
try:
bill = Bill.objects.create(**bill_kwarg)
except IntegrityError:
pass
bill = Bill.objects.get(course_token=bill_kwarg['course_token'], user=bill_kwarg['user'])
method = row.pop('bill_method', None)
try:
price = int(row.pop('price', None))
except ValueError:
@ -71,12 +73,16 @@ if __name__ == '__main__':
inv.save()
if method == 'Y' and not row['status'] == 'W' and price:
row['yandex_pay'], _is_create = Payment.objects.get_or_create(
yandex_pay, _is_create = Payment.objects.get_or_create(
order_amount=price,
order_number=inv.id,
customer_number=bill.user.id,
customer_number=bill.user.out_key,
user=bill.user,
cps_email=bill.user.email,
shop_amount=real_price,
status='Processed' if 'P' else ('Success' if 'F' else 'Fail')
)
status=Payment.STATUS.PROCESSED if row['status'] == 'P' else
(Payment.STATUS.SUCCESS if row['status'] == 'F' else Payment.STATUS.FAIL)
)
inv.yandex_pay = yandex_pay
inv.save()

@ -1,7 +1,5 @@
import csv
import os
import random
import string
import sys
import django
@ -12,7 +10,7 @@ django.setup()
from courses.api import InApiTeacher
from django.contrib.auth import get_user_model
from courses.models import Course, Lesson, Topic
from courses.models import Course, Lesson, Topic, Demand, LessonDemand
from storage.models import File
if __name__ == '__main__':
@ -36,6 +34,8 @@ if __name__ == '__main__':
print('Плохо')
with open('./course/vertex.csv') as vertex_csv:
t_sort = 0
l_sort = 0
vertex_reader = csv.DictReader(vertex_csv)
for row in vertex_reader:
row = dict(row)
@ -52,51 +52,53 @@ if __name__ == '__main__':
pass
if model_type == 'topic':
course = Course.objects.get(id=row.pop('course', None))
t_sort += 1
course = Course.objects.get(slug=row.pop('course', None))
Topic.objects.create(
id=pk,
icon=row.pop('icon', None),
course=course,
description=description,
title=title,
sort=t_sort,
)
try:
topic_id = row.pop('topic', None)
last_pivot = PivotVertex.objects.filter(map_course=map_obj).last()
if model_type == 'tutorial':
l_sort += 1
topic = Topic.objects.get(id=topic_id)
small_vertex = Lesson.objects.create(
id=pk,
video=row.pop('video', None),
materials=materials,
material_tokens=materials,
topic=topic,
free=row['free'],
description=description,
title=title,
token=''.join(random.choice(string.ascii_letters) for x in range(15))
sort=l_sort,
)
PivotVertex.objects.create(
map_course=map_obj,
vertex=small_vertex,
sort=last_pivot.sort+1 if last_pivot else 1,
LessonDemand.objects.create(
lesson=small_vertex,
demand=Demand.objects.get(name="Стандартные требования"),
)
if model_type == 'task':
l_sort += 1
topic = Topic.objects.get(id=topic_id)
small_vertex = Lesson.objects.create(
id=pk,
materials=materials,
material_tokens=materials,
topic=topic,
description=description,
title=title,
valid_type=1,
token=''.join(random.choice(string.ascii_letters) for x in range(15))
sort=l_sort,
)
PivotVertex.objects.create(
map_course=map_obj,
vertex=small_vertex,
sort=last_pivot.sort+1 if last_pivot else 1,
LessonDemand.objects.create(
lesson=small_vertex,
demand=Demand.objects.get(name="Стандартные требования"),
)
except Topic.DoesNotExist:
pass

@ -20,9 +20,10 @@ if __name__ == '__main__':
achievements_reader = csv.DictReader(achievements_csv)
for row in achievements_reader:
a = Achievement.objects.get(id=row['id'])
a.users.add(get_user_model().objects.get(id=row['student_id']))
a.users.add(get_user_model().objects.get(email=row['user']))
with open('./achievement/diploma.csv') as achievements_csv:
achievements_reader = csv.DictReader(achievements_csv)
for row in achievements_reader:
Diploma.objects.create(**row)
user=get_user_model().objects.get(email=row.pop('user', None))
Diploma.objects.create(user=user, **row)

@ -13,8 +13,7 @@ django.setup()
from django.contrib.auth.models import Group
from django.contrib.auth import get_user_model
from access.models.other import Progress, ProgressLesson
from course_service.courses.models import Lesson, Course
from course_service.maps.api import OutApiRoute
from courses.models import Lesson, Course
if __name__ == '__main__':
Progress.objects.all().delete()

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-01-11 14:34
# Generated by Django 1.11.6 on 2018-01-11 17:32
from __future__ import unicode_literals
from django.conf import settings
@ -21,7 +21,7 @@ class Migration(migrations.Migration):
name='Bill',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('route', models.CharField(max_length=15, verbose_name='Токен роута')),
('course_token', models.UUIDField(editable=False, unique=True, verbose_name='Токен курса')),
('comment', models.TextField(blank=True, editable=False, help_text='Будет показано пользователю', verbose_name='Комментарий продавца')),
('description', models.TextField(blank=True, verbose_name='Внутренняя заметка')),
('opener', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Ответственный сотрудник')),
@ -54,6 +54,6 @@ class Migration(migrations.Migration):
),
migrations.AlterUniqueTogether(
name='bill',
unique_together=set([('route', 'user')]),
unique_together=set([('course_token', 'user')]),
),
]

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-01-12 10:13
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('finance', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='bill',
name='course_token',
field=models.UUIDField(editable=False, verbose_name='Токен курса'),
),
]

@ -7,7 +7,7 @@ from courses.models import Course, Lesson
class Bill(models.Model):
route = models.CharField(max_length=15, verbose_name='Токен роута')
course_token = models.UUIDField(verbose_name="Токен курса", editable=False)
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='Плательщик', related_name='bill_user')
opener = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='Ответственный сотрудник', null=True)
comment = models.TextField(verbose_name='Комментарий продавца', help_text='Будет показано пользователю',
@ -24,7 +24,7 @@ class Bill(models.Model):
verbose_name = 'Счет'
verbose_name_plural = 'Счета'
unique_together = (
('route', 'user',),
('course_token', 'user',),
)

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-01-11 14:34
# Generated by Django 1.11.6 on 2018-01-11 17:32
from __future__ import unicode_literals
import datetime

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-01-11 14:34
# Generated by Django 1.11.6 on 2018-01-11 17:32
from __future__ import unicode_literals
from django.db import migrations, models

Loading…
Cancel
Save