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.
73 lines
3.1 KiB
73 lines
3.1 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
|
|
from maps.models import CourseRoute, CourseMap, PivotVertex, PivotCourseMap
|
|
from storage.models import Storage
|
|
|
|
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(", ")
|
|
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 = 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, content_type__model='topic').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()
|
|
|