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.
 
 
 
 
 
 

91 lines
3.8 KiB

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()