GoodERP
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

83 行
2.3KB

  1. # -*- coding: utf-8 -*-
  2. from odoo import _
  3. import functools
  4. def safe_division(divisor, dividend):
  5. return dividend != 0 and divisor / dividend or 0
  6. def create_name(method):
  7. @functools.wraps(method)
  8. def func(self, vals_list):
  9. for vals in vals_list:
  10. if vals.get('name', '/') == '/':
  11. vals.update(
  12. {'name': self.env['ir.sequence'].next_by_code(self._name) or '/'})
  13. return method(self, vals_list)
  14. return func
  15. def create_origin(method):
  16. @functools.wraps(method)
  17. def func(self, vals_list):
  18. for vals in vals_list:
  19. if hasattr(self, 'get_move_origin'):
  20. vals.update({'origin': self.get_move_origin(vals)})
  21. else:
  22. vals.update({'origin': self._name})
  23. return method(self, vals_list)
  24. return func
  25. def inherits_after(res_back=True):
  26. def wrapper(method):
  27. @functools.wraps(method)
  28. def func(self, *args, **kwargs):
  29. res_before = execute_inherits_func(
  30. self, method.__name__, args, kwargs)
  31. res_after = method(self, *args, **kwargs)
  32. if res_back:
  33. return res_after
  34. else:
  35. return res_before
  36. return func
  37. return wrapper
  38. def inherits(res_back=True):
  39. def wrapper(method):
  40. @functools.wraps(method)
  41. def func(self, *args, **kwargs):
  42. res_after = method(self, *args, **kwargs)
  43. if not res_back or (not isinstance(res_after, dict) or (isinstance(res_after, dict) and not(res_after.get('res_model') and res_after.get('view_mode')))):
  44. res_before = execute_inherits_func(
  45. self, method.__name__, args, kwargs)
  46. if res_back:
  47. return res_after
  48. else:
  49. return res_before
  50. return func
  51. return wrapper
  52. def execute_inherits_func(self, method_name, args, kwargs):
  53. if self._inherits and len(self._inherits) != 1:
  54. raise ValueError(_('错误,当前对象不存在多重继承,或者存在多个多重继承'))
  55. model, field = list(self._inherits.items())[0]
  56. values = self.read([field])
  57. field_ids = map(lambda value: value[field][0], values)
  58. models = self.env[model].browse(field_ids)
  59. return getattr(models, method_name)(*args, **kwargs)
上海开阖软件有限公司 沪ICP备12045867号-1