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
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'))
|
|
|