You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

89 lines
3.3 KiB

import csv
import os
import sys
import django
sys.path.append("../")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from courses.api import InApiTeacher
from django.contrib.auth import get_user_model
from courses.models import Course, Lesson, Topic, Demand, LessonDemand
from storage.models import File
if __name__ == '__main__':
Topic.objects.all().delete()
# 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(", ")
# course, _is_create = Course.objects.get_or_create(**row)
#
# try:
# for teacher in teachers:
# teacher = teacher.replace("\'", "")
# if teacher:
# teacher = get_user_model().objects.get(email=teacher).out_key
# InApiTeacher.add_teacher(course.slug, teacher)
#
# except get_user_model().DoesNotExist:
# print('Плохо')
with open('./course/old_new_id.csv', 'w') as write_id_csv:
writer = csv.writer(write_id_csv)
writer.writerow(['old_id', 'new_id'])
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)
model_type = row.pop('type', None)
description = row.pop('description', None)
title = row.pop('title', None)
pk = row.pop('id', None)
materials = []
try:
m = row.pop('materials', None)
if m:
materials = [File.objects.get(id=i).key for i in m.split("[")[1].split("]")[0].split(", ")]
except ValueError:
pass
if model_type == 'topic':
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,
)
else:
topic_id = row.pop('topic', None)
l_sort += 1
topic = Topic.objects.get(id=topic_id)
small_vertex = Lesson.objects.create(
video=row.pop('video', None),
material_tokens=materials,
topic=topic,
free=row['free'],
description=description,
title=title,
sort=l_sort,
)
writer.writerow([pk, small_vertex.token])
if model_type == 'task':
LessonDemand.objects.create(
lesson=small_vertex,
demand=Demand.objects.get(name="Стандартные требования"),
)