Load app models

Load legacy models
This commit is contained in:
littlewolf 2019-10-04 00:14:16 +03:00
parent 673acb4bb9
commit 90dd896f13

View File

@ -2,6 +2,7 @@ from os.path import exists
from importlib.machinery import SourceFileLoader from importlib.machinery import SourceFileLoader
from django.apps import apps from django.apps import apps
from collections import OrderedDict from collections import OrderedDict
import transfer.models as legacy_models
def transfer_objects(data_type): def transfer_objects(data_type):
@ -15,7 +16,7 @@ def transfer_objects(data_type):
for model, card in card_module.card.items(): for model, card in card_module.card.items():
if "data_type" in card and data_type == card["data_type"]: if "data_type" in card and data_type == card["data_type"]:
card['name'] = model card['app_label'] = app.label
models_list[model] = card models_list[model] = card
if len(models_list) < 1: if len(models_list) < 1:
@ -24,14 +25,37 @@ def transfer_objects(data_type):
models_list = sort_by_dependencies(models_list) models_list = sort_by_dependencies(models_list)
print(f"==========================\r\n{models_list}\r\n==========================\r\n")
for model, card in models_list.items(): for model, card in models_list.items():
print(model) transfer_model(model, card)
print(card)
def transfer_model(model, card):
print(f"=================================================\r\n"
f"MODEL: {model}\r\n"
f"=================================================")
try:
app_model = apps.get_model(app_label=card['app_label'], model_name=model)
except LookupError as e:
print(f"ERROR: model {model} from {card['app_label']} can not be loaded: {e}")
return
for legacy_table, fields in card['fields'].items():
try:
legacy_model = apps.get_model(app_label="transfer", model_name=legacy_table)
except LookupError as e:
print(f"ERROR: legacy model {model} can not be loaded: {e}")
return
print(app_model)
print(legacy_model)
print(fields)
def sort_by_dependencies(data): def sort_by_dependencies(data):
"""Сортировка моделей по зависимостям"""
"""Сначала мы сортируем модели по зависимостям в обратном порядке, используя сортировку вставкой""" """Сначала мы сортируем модели по зависимостям в обратном порядке, используя сортировку вставкой"""
result = [] result = []
for model, card in data.items(): for model, card in data.items():
@ -45,7 +69,6 @@ def sort_by_dependencies(data):
result.append(model) result.append(model)
"""Затем мы создаём сортированный словарь из реверса получившегося результата""" """Затем мы создаём сортированный словарь из реверса получившегося результата"""
print(result)
result = OrderedDict( result = OrderedDict(
[(model, data[model]) for model in reversed(result)] [(model, data[model]) for model in reversed(result)]