From 90dd896f131294880fb32f8c6649da70f94f997f Mon Sep 17 00:00:00 2001 From: littlewolf Date: Fri, 4 Oct 2019 00:14:16 +0300 Subject: [PATCH] Load app models Load legacy models --- apps/transfer/utils.py | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/apps/transfer/utils.py b/apps/transfer/utils.py index 708b0151..700d3e3e 100644 --- a/apps/transfer/utils.py +++ b/apps/transfer/utils.py @@ -2,6 +2,7 @@ from os.path import exists from importlib.machinery import SourceFileLoader from django.apps import apps from collections import OrderedDict +import transfer.models as legacy_models def transfer_objects(data_type): @@ -15,7 +16,7 @@ def transfer_objects(data_type): for model, card in card_module.card.items(): if "data_type" in card and data_type == card["data_type"]: - card['name'] = model + card['app_label'] = app.label models_list[model] = card if len(models_list) < 1: @@ -24,14 +25,37 @@ def transfer_objects(data_type): models_list = sort_by_dependencies(models_list) - print(f"==========================\r\n{models_list}\r\n==========================\r\n") - for model, card in models_list.items(): - print(model) - print(card) + transfer_model(model, 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): + """Сортировка моделей по зависимостям""" + """Сначала мы сортируем модели по зависимостям в обратном порядке, используя сортировку вставкой""" result = [] for model, card in data.items(): @@ -45,7 +69,6 @@ def sort_by_dependencies(data): result.append(model) """Затем мы создаём сортированный словарь из реверса получившегося результата""" - print(result) result = OrderedDict( [(model, data[model]) for model in reversed(result)]