def update_referenced_parent_attributes(self, dependencies: list): """ Used by Formulas and constraints log their dependence on parent attributes This sets RuleBank.TableRules[mapped_class].referring_children dependencies is a list But, can't do this now, because meta_contains_role_name = False So, do it on the fly in logic_row (which is an ugh) """ meta_contains_role_name = False if meta_contains_role_name is False: return else: meta_data = rule_bank_withdraw.get_meta_data() child_meta = meta_data.tables[self.table] parent_role_name = dependencies[1] foreign_keys = child_meta.foreign_keys for each_foreign_key in foreign_keys: # eg, OrderDetail has OrderHeader, Product each_parent_class_name = each_foreign_key.name each_parent_role_name = each_foreign_key.key if parent_role_name == each_parent_role_name: # eg, OrderHeader rule_bank = RuleBank() if each_parent_class_name not in rule_bank.orm_objects: self._tables[rule_bank] = TableRules() table_rules = self._tables[rule_bank] if table_rules.referring_children is None: table_rules.referring_children = {} if parent_role_name not in table_rules.referring_children: table_rules.referring_children[parent_role_name] = [] table_rules.referring_children.append(dependencies[2]) engine_logger.debug( prt("child parent dependency: " + dependencies[1])) break
def deposit_rule(self, a_rule: 'AbstractRule'): if a_rule.table not in self.orm_objects: self.orm_objects[a_rule.table] = TableRules() table_rules = self.orm_objects[a_rule.table] table_rules.rules.append(a_rule) engine_logger.debug(prt(str(a_rule)))