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