Aestate
AopContainer.py
Go to the documentation of this file.
1 import types
2 
3 from aestate.util.CompulsoryRun import Compulsory
4 
5 
6 class AopModelObject(object):
7  """
8  此类为AopModel提供所有操作
9  """
10 
11  def __init__(self, before=None, after=None,
12  before_args=None, before_kwargs=None,
13  after_args=None, after_kwargs=None):
14  # 初始化所有字段
15  self.__before_func__ = before
16  self.__before_args_data__ = before_args
17  self.__before_kwargs_data__ = before_kwargs
18 
19  self.__after_func__ = after
20  self.__after_args_data__ = after_args
21  self.__after_kwargs_data__ = after_kwargs
22 
23  def set_args(self, *args, **kwargs):
24  self.args = args
25  self.kwargs = kwargs
26 
27  def start(self):
28  """
29  主操作
30  """
31  # self.func = args[0]
32  self.init_fields()
33  # wraps(self.func)(self)
34  self.init_attr()
35 
36  # 解析参数需要
37  # self.before_parse()
38  # 执行before操作
39  self.before_run()
40  # 执行原始数据
41  result = Compulsory.run_function(
42  func=self.func, args=self.args, kwargs=self.kwargs)
43  # after解析
44  # self.after_parse(result)
45  # after操作
46  self.after_run(result)
47  # 返回原始数据
48  return result
49 
50  def init_fields(self):
51  # 定义名称规则
52  self.after = 'after'
53  self.after_args = 'after_args'
54  self.after_kwargs = 'after_kwargs'
55 
56  self.before = 'before'
57  self.before_args = 'before_args'
58  self.before_kwargs = 'before_kwargs'
59 
60  self.__after__ = '__after_func__'
61  self.__after_args__ = '__after_args__'
62  self.__after_kwargs__ = '__after_kwargs__'
63 
64  # 得到before参数的名称
68 
69  # 得到after参数的名称
70 
74 
75  def __get__(self, instance, cls):
76  if instance is None:
77  return self
78  else:
79  return types.MethodType(self, instance)
80 
81  def format_name(self, name):
82  """
83  格式化名称字符串
84  """
85  return '{}{}'.format(name, self.func.__name__)
86 
87  def setters(self, i1, i2, i3, k1, v1, k2, v2, k3, v3):
88  """
89  批量设置
90  """
91  if i1 in self.__dict__.keys():
92  setattr(self, v1, self.__dict__[k1])
93  if i2 in self.__dict__.keys():
94  setattr(self, v2, self.__dict__[k2])
95  if i3 in self.__dict__.keys():
96  setattr(self, v3, self.__dict__[k3])
97 
98  def init_attr(self):
99  """
100  初始化cls下的字段
101  通过使用setters下的setter()功能批量解析是否需要before或者after操作
102  """
103 
104  self.setters(
105  i1=self.before,
106  i2=self.before_args,
107  i3=self.before_kwargs,
108  k1=self.before,
109  k2=self.before_args,
110  k3=self.before_kwargs,
111  v3=self.__before_kwargs_name__,
112  v1=self.__before_name__,
113  v2=self.__before_args_name__,
114  )
115 
116  self.setters(
117  i1=self.after,
118  i2=self.after_args,
119  i3=self.after_kwargs,
120  k1=self.after,
121  k2=self.after_args,
122  k3=self.after_kwargs,
123  v1=self.__after_name__,
124  v2=self.__after_args_name__,
125  v3=self.__after_kwargs_name__
126  )
127 
128  def before_run(self):
129  """
130  执行before方法
131  """
134  **self.__before_kwargs_data__)
135  elif self.__before_func__ and self.__before_args_data__:
137  elif self.__before_func__ and self.__before_kwargs_data__:
139  elif self.__before_func__:
140  self.__before_func__()
141  else:
142  pass
143 
144  def after_run(self, result):
145  """
146  执行after方法
147  """
148  if self.__after_kwargs_data__ is None:
149  self.__after_kwargs_data__ = {}
150 
151  self.__after_kwargs_data__.update({'result': result})
152  if self.__after_func__ and self.__after_args_data__ and self.__after_kwargs_data__:
154  **self.__after_kwargs_data__)
155  elif self.__after_func__ and self.__after_args_data__:
157  elif self.__after_func__ and self.__after_kwargs_data__:
159  elif self.__after_func__:
160  self.__after_func__()
161  else:
162  pass
aestate.work.AopContainer.AopModelObject.after_args
after_args
Definition: AopContainer.py:53
aestate.work.AopContainer.AopModelObject.__after__
__after__
Definition: AopContainer.py:60
aestate.work.AopContainer.AopModelObject.__before_args_name__
__before_args_name__
Definition: AopContainer.py:66
aestate.work.AopContainer.AopModelObject.init_attr
def init_attr(self)
Definition: AopContainer.py:98
aestate.work.AopContainer.AopModelObject.__after_func__
__after_func__
Definition: AopContainer.py:17
aestate.work.AopContainer.AopModelObject.before
before
Definition: AopContainer.py:56
aestate.work.AopContainer.AopModelObject.__before_kwargs_name__
__before_kwargs_name__
Definition: AopContainer.py:67
aestate.work.AopContainer.AopModelObject.init_fields
def init_fields(self)
Definition: AopContainer.py:50
aestate.work.AopContainer.AopModelObject.__before_args_data__
__before_args_data__
Definition: AopContainer.py:14
aestate.work.AopContainer.AopModelObject
Definition: AopContainer.py:6
aestate.work.AopContainer.AopModelObject.kwargs
kwargs
Definition: AopContainer.py:25
aestate.work.AopContainer.AopModelObject.before_args
before_args
Definition: AopContainer.py:57
aestate.work.AopContainer.AopModelObject.before_kwargs
before_kwargs
Definition: AopContainer.py:58
aestate.work.AopContainer.AopModelObject.__before_kwargs_data__
__before_kwargs_data__
Definition: AopContainer.py:15
aestate.work.AopContainer.AopModelObject.setters
def setters(self, i1, i2, i3, k1, v1, k2, v2, k3, v3)
Definition: AopContainer.py:87
aestate.work.AopContainer.AopModelObject.__after_args__
__after_args__
Definition: AopContainer.py:61
aestate.work.AopContainer.AopModelObject.__before_name__
__before_name__
Definition: AopContainer.py:65
aestate.work.AopContainer.AopModelObject.__after_kwargs_name__
__after_kwargs_name__
Definition: AopContainer.py:73
aestate.work.AopContainer.AopModelObject.args
args
Definition: AopContainer.py:24
aestate.work.AopContainer.AopModelObject.__init__
def __init__(self, before=None, after=None, before_args=None, before_kwargs=None, after_args=None, after_kwargs=None)
Definition: AopContainer.py:11
aestate.work.AopContainer.AopModelObject.__after_name__
__after_name__
Definition: AopContainer.py:71
aestate.work.AopContainer.AopModelObject.__after_kwargs__
__after_kwargs__
Definition: AopContainer.py:62
aestate.work.AopContainer.AopModelObject.after
after
Definition: AopContainer.py:52
aestate.work.AopContainer.AopModelObject.__get__
def __get__(self, instance, cls)
Definition: AopContainer.py:75
aestate.work.AopContainer.AopModelObject.__before_func__
__before_func__
Definition: AopContainer.py:13
aestate.work.AopContainer.AopModelObject.format_name
def format_name(self, name)
Definition: AopContainer.py:81
aestate.work.AopContainer.AopModelObject.set_args
def set_args(self, *args, **kwargs)
Definition: AopContainer.py:23
aestate.work.AopContainer.AopModelObject.after_kwargs
after_kwargs
Definition: AopContainer.py:54
aestate.work.AopContainer.AopModelObject.__after_args_data__
__after_args_data__
Definition: AopContainer.py:18
aestate.work.AopContainer.AopModelObject.__after_args_name__
__after_args_name__
Definition: AopContainer.py:72
aestate.work.AopContainer.AopModelObject.before_run
def before_run(self)
Definition: AopContainer.py:128
aestate.work.AopContainer.AopModelObject.start
def start(self)
Definition: AopContainer.py:27
aestate.work.AopContainer.AopModelObject.__after_kwargs_data__
__after_kwargs_data__
Definition: AopContainer.py:19
aestate.util.CompulsoryRun
Definition: CompulsoryRun.py:1
aestate.work.AopContainer.AopModelObject.after_run
def after_run(self, result)
Definition: AopContainer.py:144