# Pastebin pSKMbAKi from sir.schema import SCHEMA, generate_update_map, generate_model_map from sir.util import db_session from sir.trigger_generation.paths import last_model_in_path from sir.config import read_config from sqlalchemy.orm import class_mapper read_config() update_map = generate_update_map() model_map = generate_model_map() ids = ["12"] dbs = db_session()() i = 0 for key in update_map: index_model = model_map[key] foreign_keys = [fk.parent.name for fk in index_model.__table__.foreign_keys] ftables = [] for foreign_key in foreign_keys: try: ftables.append(getattr(index_model, foreign_key).prop.table.name) except Exception: print(foreign_key, key) print("="*50) for core_name, npath in update_map[key]: entity_model = SCHEMA[core_name].model if npath: path = ".".join(npath.split('.')[:-1]) else: path = None if path == "": print(key, ftables, core_name, npath) i += 1 elif path is None: continue else: last_model = class_mapper(last_model_in_path(entity_model, path)) pks = list(pk.in_(ids) for pk in last_model.mapper.primary_key) query = dbs.query(entity_model.id).join(*path.split(".")).filter(*pks) print("-"*50) print("On updating: `%s`, We update entity: `%s` via path: `%s`, %s" % (key, core_name, path, foreign_keys)) print(query) i += 1 print("-"*50) print("="*50) print(i)