def _get_on_change_args(self, args): res = {} values = common.EvalEnvironment(self, 'on_change') for arg in args: scope = values for i in arg.split('.'): if i not in scope: break scope = scope[i] else: res[arg] = scope return res
def expr_eval(self, expr): if not isinstance(expr, str): return expr ctx = self.get_eval() ctx['context'] = self.get_context() ctx['active_model'] = self.model_name ctx['active_id'] = self.id if self.parent and self.parent_name: ctx['_parent_' + self.parent_name] = \ common.EvalEnvironment(self.parent) val = PYSONDecoder(ctx).decode(expr) return val
def _get_active(self): if self.screen and self.screen.current_record: return common.EvalEnvironment(self.screen.current_record)