commons.dynamicapp のソースコード

# coding: utf-8


[ドキュメント] class DynamicApp(): """ before after メソッドを動的に実行する。 """
[ドキュメント] def doBeforeAfterMethod(self, method_type, record_info, temp_object): """ json に指定されているbefore/ after メソッドを実行する。 Parameters ---------- method_type : str メソッドの種類('before'/ 'after') record_info : dict requestdict['records']/ sqldict['sqls']/ responsedict['records'] temp_object : object メソッド実行オブジェクト。AppCache クラスでインスタンスされる。 Returns ------- result : str メソッド実行結果('OK'/ 'ERROR') """ # before after メソッドが指定されているかチェック # 指定がない場合はリターン if method_type not in record_info: return 'OK' methods = record_info[method_type] if methods == '': return 'OK' result = 'OK' # メソッドが単一記述の場合 if isinstance(methods, str): method_name, arg = self.splitMethodStr(methods) result = self.doMethod(temp_object, method_name, arg) # メソッドが配列記述の場合 elif isinstance(methods, list): for method in methods: if method == '': continue method_name, arg = self.splitMethodStr(method) result = self.doMethod(temp_object, method_name, arg) if result != 'OK': break return result
[ドキュメント] def splitMethodStr(self, method_str): """ json に記載されているメソッドの文字列からメソッド名(method_name)と引数(arg)を取得する。 例)'setSql_InitOfTest(arg1, arg2)' -> method_name = 'setSql_InitOfTest' arg = ['arg1', 'arg2'] Parameters ---------- method_str : str メソッドの文字列 -> record_info[method_type] Returns ------- method_name : str メソッド名 arg : list 引数 """ split_str = method_str.split('(') method_name = split_str[0] arg = [x.strip('\') ') for x in split_str[1].split(',')] if arg[0] == '': arg = [] return method_name, arg
[ドキュメント] def doMethod(self, obj, method_name, arg): """ getattr でメソッドを実行する。 Parameters ---------- obj : object メソッド実行オブジェクト。 method_name : str 実行するメソッド名。 arg : list 引数。 Returns ------- result : str メソッド実行結果('OK'/ 'ERROR') """ result = getattr(obj, method_name)(*arg) return result