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.
 
 
 
 
 
 

67 lines
2.0 KiB

# coding=utf-8
import os
import django
import sys
import simplejson
sys.path.append("/var/www/projects/codemy/")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from courses.models import Course, CourseTheme, Lesson, Exam, Homework
excludes = ['teachers', 'image', 'big_image', 'token', 'public', 'comments', 'materials', ]
data = simplejson.load(open('courses_dump.json'))
_map = {}
results = []
def get_kwargs(fields):
result = {}
for key, value in fields.items():
print(key, value)
if key not in excludes:
if key in _map:
if type(value) == list:
_result = []
for _tmp in value:
_result.append(_map[key][_tmp])
value = _result
else:
value = _map[key][value] if key in _map else value
result[key] = value
results.append(result)
return result
def add_in_map(model, key, value):
if model not in _map:
_map[model] = {}
_map[model][key] = value
for model in data:
if model['model'] == 'courses.course':
course, c = Course.objects.get_or_create(**(dict(get_kwargs(model['fields']))))
add_in_map('course', model['pk'], course)
elif model['model'] == 'courses.coursetheme':
course, c = CourseTheme.objects.get_or_create(**(dict(get_kwargs(model['fields']))))
add_in_map('theme', model['pk'], course)
elif model['model'] == 'courses.lesson':
course, c = Lesson.objects.get_or_create(**(dict(get_kwargs(model['fields']))))
add_in_map('lesson', model['pk'], course)
elif model['model'] == 'courses.exam':
course, c = Exam.objects.get_or_create(**(dict(get_kwargs(model['fields']))))
add_in_map('exam', model['pk'], course)
elif model['model'] == 'courses.homework':
course, c = Homework.objects.get_or_create(**(dict(get_kwargs(model['fields']))))
add_in_map('homework', model['pk'], course)
print(results)
#print(data[0])