首页 > 编程语言 >odoo _register_hook和_patch_methods组合使用,实现日志功能,效果和java的切面类似

odoo _register_hook和_patch_methods组合使用,实现日志功能,效果和java的切面类似

时间:2023-07-29 09:13:10浏览次数:48  
标签:java methods read self register patch hook log

_register_hook方法是在odoo启动,加载模块时调用,可以在调用期间对某个的模型进行功能增强,比如增加日志
下面是一个简单的示例:

class Log(models.Model):
    _name = "cn.com.brandmax.log"
    _description = "日志"

    def _make_read(self):
        def read(self, fields=None, load="_classic_read", **kwargs):
            result = read.origin(self, fields, load, **kwargs)
            return result
        return read

    def _register_hook(self):
        ccb_product = self.env['cn.com.brandmax.product']
        ccb_product._patch_method('read', self._make_read())

代码调用如下,结果显示为:执行的测试方法

    def action_read(self):
        log = self.env['cn.com.brandmax.log']
        log.read()

增加_patch_method没有增加_patch_method的运行轨迹:

点击read进入的是models的read方法

read进入的是下面模型

注意这句代码
result = read.origin(self, fields, load, **kwargs)
重点:orgin将进入绑定之前模型的read方法
之前完原模型的read方法以后,再继续执行增强模型的方法

标签:java,methods,read,self,register,patch,hook,log
From: https://www.cnblogs.com/3cock/p/17583130.html

相关文章

  • Java面试题 P13:MySql中,如何定位慢查询
    如何定位慢查询?1、首先介绍一下当时产生问题的场景,具体什么情况慢2、在mysql中开启慢查询日志,设定查询时间超过2秒的都记录到日志中,我们逐步筛查出现慢sql的原因慢查询可能产生的原因:(1)聚合查询(2)多表查询(3)表数据量过大查询(4)深度分页查询 mysql开启慢查询日志配置:(1)打开My......
  • Java面试题 P12:HashMap和HashTable的区别?底层是怎么实现的?
    区别:1、HashMap:是线程不安全的,HashTable:每个方法都加了个线程锁(synchronized修饰),是线程安全的2、HashMap允许key和value为null,而HashTable不允许 底层实现:数据+链表实现  代码示例: 1publicstaticvoidmain(String[]args)2{3//HashMap......
  • JavaScript入门基础
    文章和代码已经归档至【Github仓库:<https://github.com/timerring/front-end-tutorial>】或者公众号【AIShareLab】回复javascript也可获取。JavaScript简介布兰登·艾奇(BrendanEich,1961年~),10天完成JavaScript设计。最初命名为LiveScript,后来在与Sun合作之后将其改名为......
  • Java Web|
    1.Spring1.1SpringMVC参数的封装1.传统的URLlocalhost:8080?id=1&name=tom2.基于RESTful风格的URLlocalhost:8080/1/tom前后端分离的开发一般是基于RESTfull,具体规则是4中请求分别表示不同的业务GET查询POST添加PUT修改DELETE删除每个语言使用的时候都一样,是一种规......
  • Java 17:新时代的开端
    引言Java17是JDK17的正式版本,于2021年9月14日发布。作为一个长期支持(LTS)版本,Java17将提供至少8年的支持。本文将深入探讨Java17最新版本的主要更新内容和改进,包括语言、库、工具和性能方面的变化,以及这些变化对Java开发者和应用程序的影响。1.SealedClasses(封闭类)Jav......
  • JavaScript学习 -- HMAC算法基本原理
    HMAC(Hash-basedMessageAuthenticationCode)算法是一种基于哈希算法的消息认证码算法。它可以用于验证和保护数据在传输过程中的完整性和真实性。在JavaScript中,我们可以使用HMAC算法来保证数据的安全性。本篇文章将介绍HMAC算法的基本原理和相关技术,并提供一些实例来演示如何在Ja......
  • 如何用 Java 写一个 Java 虚拟机
    github项目链接https://github.com/FranzHaidnor/haidnorJVMhaidnorJVM使用Java17编写的Java虚拟机意义纸上得来终觉浅,绝知此事要躬行。只学习JVM机制和理论,很多时候任然觉得缺乏那种大彻大悟之感使用简单的方式实现JVM,用于学习理解JVM运行原理主要技术选型J......
  • javaScript判断数据类型的几种方法
    1:typeof返回数据类型,包含这7种:number、boolean、symbol、string、object、undefined、function。typeofnull返回类型错误,返回object。引用类型,除了function返回function类型外,其他均返回object。其中,null有属于自己的数据类型Null,引用类型中的数组、日期、正则也都有......
  • Java 理论和实践: 了解泛型
    级别:初级2005年1月25日Java理论和实践”中,BrianGoetz分析了束缚第一次使用泛型的用户的常见陷阱。您可以通过讨论论坛与作者和其他读者分享您对本文的看法。(也可以单击本文顶端或底端的讨论来访问这个论坛。)表面上看起来,无论语法还是应用的环境(比......
  • Windows本地IDEA运行mapreduce报错java.io.FileNotFoundException: HADOOP_HOME and h
    问题原因在windows运行hadoopJob程序的时候需要模拟下hadoop的运行环境。否则出现会出现标题的问题。解决方案下载Hadoop的bin目录https://github.com/s911415/apache-hadoop-3.1.3-winutils将步骤1中下载的文件配置成环境变量HADOOP_HOME(指向解压之后的的bin的上级目录)。......