import os, sys, django, csv from django.db import IntegrityError sys.path.append("../") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() from courses.models import Course, Vertex, CourseMap from storage.models import Storage if __name__ == '__main__': CourseMap.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(", ") mentors = 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: course.teachers.add(teacher) for mentor in mentors: if mentor: course.mentors.add(mentor) except IntegrityError: pass with open('./course/storage.csv') as storage_csv: storage_reader = csv.DictReader(storage_csv) for row in storage_reader: if row['original']: Storage.objects.get_or_create(**row) with open('./course/vertex.csv') as vertex_csv: vertex_reader = csv.DictReader(vertex_csv) for row in vertex_reader: row = dict(row) model = row.pop('type', None) parent = row.pop('parent', None) course = Course.objects.get(id=row.pop('course', 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 = [] for vertex in Vertex.objects.filter(course=course, content_type__model='topic').order_by("object_id"): map_obj.append(vertex.id) theme_map = [] for small_vertex in vertex.children.all().order_by("object_id"): theme_map.append(small_vertex.id) map_obj.append(theme_map) CourseMap.objects.get_or_create(dependent_elements=map_obj, course=course)