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.
 
 
 
 
 
 

60 lines
2.3 KiB

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'):
map_obj.append(vertex.id)
theme_map=[]
for small_vertex in vertex.children.all():
theme_map.append(small_vertex.id)
map_obj.append(theme_map)
CourseMap.objects.get_or_create(dependent_elements=map_obj, course=course)