import csv import os import sys import django sys.path.append("../") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() from course_service.courses.api import InApiTeacher from django.contrib.auth import get_user_model from course_service.courses.models import Course, Vertex, Topic from course_service.maps.models import CourseRoute, CourseMap, PivotVertex, PivotCourseMap if __name__ == '__main__': CourseMap.objects.all().delete() CourseRoute.objects.all().delete() PivotVertex.objects.all().delete() PivotCourseMap.objects.all().delete() Vertex.objects.all().delete() Course.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(", ") row.pop('mentors', None).split("[")[1].split("]")[0].split(", ") course, _is_create = Course.objects.get_or_create(**row) try: for teacher in teachers: if teacher: teacher = get_user_model().objects.get(id=teacher) InApiTeacher.add_teacher(course.slug, teacher) except get_user_model().DoesNotExist: print('Плохо') with open('./course/vertex.csv') as vertex_csv: 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) extra_data = row.pop('extra_data', None) if model_type == 'topic': course = Course.objects.get(id=row.pop('course', None)) Topic.objects.create( id=extra_data['id'], icon=extra_data['icon'], course=course, description=description, title=title, ) if model_type == 'task': topic = Course.objects.get(id=row.pop('parent', None)) Vertex.objects.create( id=extra_data['id'], video=extra_data['video'], materials=extra_data['materials'], topic=topic, description=description, title=title, ) topic = row.pop('parent', None) parents = [Vertex.objects.get(object_id=parent, content_type__model='topic')] if parent else [] Vertex.objects.create_with_dependencies(model=model, course=course, parents=parents, **row) for course in Course.objects.all(): map_obj = CourseMap.objects.create(course=course) route_obj = CourseRoute.objects.create(name='''Основной шаблон по курсу "%s"''' % course.title) course.route = route_obj sort = 0 for vertex in Vertex.objects.filter(course=course).order_by("object_id"): PivotVertex.objects.create(map_course=map_obj, vertex=vertex, sort=sort) sort += 1 for small_vertex in Vertex.objects.filter(course=course, content_type__model='tutorial', vertex=vertex).order_by("object_id"): PivotVertex.objects.create(map_course=map_obj, vertex=small_vertex, sort=sort) sort += 1 for small_vertex in Vertex.objects.filter(course=course, content_type__model='task', vertex=vertex).order_by("object_id"): PivotVertex.objects.create(map_course=map_obj, vertex=small_vertex, sort=sort) sort += 1 PivotCourseMap.objects.create(map_course=map_obj, route=route_obj, sort=0) course.save()