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.
 
 
 
 
 
 

110 lines
3.1 KiB

# coding=utf-8
import os
import django
import sys
import simplejson as json
sys.path.append("/var/www/projects/lms/")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from __migrate.post_fixtures import show_progress
from courses.models import Course
from finance.models import Price, Bill, ServiceRequest
from access.models import User
_fixture = json.load(open('fixtures/courses.json'))
user_pk = 1
prices = []
bills = []
requests = []
def new_index(model, key, obj):
if str(key) in pk_map[model]:
return obj.objects.get(id=pk_map[model][str(key)])
return None
# Пример записи маршрута
pk_map = json.load(open('pk_maps.json'))
if 'finance.price' not in pk_map.keys():
pk_map['finance.price'] = {}
if 'finance.bill' not in pk_map.keys():
pk_map['finance.bill'] = {}
if 'finance.servicerequest' not in pk_map.keys():
pk_map['finance.servicerequest'] = {}
for i in _fixture:
if i['model'] == 'courses.price':
prices.append(i)
elif i['model'] == 'courses.bill':
bills.append(i)
elif i['model'] == 'courses.servicerequest':
requests.append(i)
print u'\nPrice'
_now = 0
big_len = len(prices)
show_progress(big_len, _now)
for i in prices:
f, c = Price.objects.get_or_create(
m_type=i['fields']['m_type'],
public=i['fields']['public'],
title=i['fields']['title'],
cost=i['fields']['cost'],
course=new_index('courses.course', i['fields']['course'], Course),
description=i['fields']['description']
)
_now += 1
show_progress(big_len, _now)
pk_map['finance.price'][str(i['pk'])] = str(f.id)
print u'\nBill'
_now = 0
big_len = len(bills)
show_progress(big_len, _now)
for i in bills:
s = Bill.objects.create(
status=i['fields']['status'],
user=new_index('access.user', i['fields']['user'], User),
manager=new_index('access.user', i['fields']['manager'], User),
service=new_index('finance.price', i['fields']['service'], Price),
key=i['fields']['key'],
out_id=i['fields']['out_id'],
date=i['fields']['date'],
status_changed=i['fields']['status_changed'],
comment=i['fields']['comment'],
finish_date=i['fields']['finish_date'],
salt=i['fields']['salt'],
)
_now += 1
show_progress(big_len, _now)
pk_map['finance.bill'][str(i['pk'])] = str(s.id)
print u'\nServiceRequest'
_now = 0
big_len = len(requests)
show_progress(big_len, _now)
for i in requests:
c = ServiceRequest.objects.create(
status=i['fields']['status'],
student=new_index('access.user', i['fields']['student'], User),
course=new_index('courses.course', i['fields']['course'], Course),
manager=new_index('access.user', i['fields']['manager'], User),
cancel_description=i['fields']['cancel_description'],
charge=i['fields']['charge'],
date=i['fields']['date'],
f_date=i['fields']['f_date'],
send=i['fields']['send'],
)
_now += 1
show_progress(big_len, _now)
pk_map['finance.servicerequest'][str(i['pk'])] = str(c.id)
json.dump(pk_map, open('pk_maps.json', 'w'))