openerp中已删除记录的列表

openerp中已删除记录的列表,openerp,Openerp,有没有办法在OpenERP中获取已删除记录的列表?我听说openerp记录了删除的记录列表。。但是我不知道在哪里可以找到它 我正在尝试同步两个数据库。因此,我几乎不需要删除记录的型号名称和id,这样我就可以从其他数据库中删除相应的记录当您在openerp中单击“从UI中删除”时,您可以访问ORM Menthod取消链接原型od方法是: def unlink(self, cr, uid, ids, context=None) """ #Delete records with giv

有没有办法在OpenERP中获取已删除记录的列表?我听说openerp记录了删除的记录列表。。但是我不知道在哪里可以找到它


我正在尝试同步两个数据库。因此,我几乎不需要删除记录的型号名称和id,这样我就可以从其他数据库中删除相应的记录

当您在openerp中单击“从UI中删除”时,您可以访问ORM Menthod
取消链接
原型od方法是:

def unlink(self, cr, uid, ids, context=None)
    """
    #Delete records with given ids
    Param cr:  database cursor
    Param uid: current user id
    Param ids: id or list of ids
    Param context:   (optional) context arguments, like lang, time zone
    Return : True
    Raise AccessError:
        if user has no unlink rights on the requested object
        if user tries to bypass access rules for unlink on the requested object
    Raise UserError:

        if the record is default property for other records
    """
此处ID包含要取消链接的ID列表,以便在删除之前可以使用它们

但若记录一旦从OpenERP中删除,您就无法访问,因为它们不再位于数据库中


可选,此处的机制在
活动
字段中可用。OE中的活动字段是特殊字段如果您在模型上定义了活动布尔字段,那么如果任何记录设置为活动false,您将无法在视图中看到该记录,无需特别努力,但棘手的是,表中的记录仍然是active=False,因此您可以使用domain非常轻松地访问它们。

当您在openerp中单击“从UI中删除”时,您可以访问ORM Menthod
取消链接
原型od方法是:

def unlink(self, cr, uid, ids, context=None)
    """
    #Delete records with given ids
    Param cr:  database cursor
    Param uid: current user id
    Param ids: id or list of ids
    Param context:   (optional) context arguments, like lang, time zone
    Return : True
    Raise AccessError:
        if user has no unlink rights on the requested object
        if user tries to bypass access rules for unlink on the requested object
    Raise UserError:

        if the record is default property for other records
    """
此处ID包含要取消链接的ID列表,以便在删除之前可以使用它们

但若记录一旦从OpenERP中删除,您就无法访问,因为它们不再位于数据库中

可选,此处的机制在
活动
字段中可用。OE中的活动字段是特殊字段如果您在模型上定义了活动布尔字段,那么如果任何记录设置为活动false,您将无法在视图中看到该记录,无需特别努力,但棘手的是,表中的记录仍然是active=False,因此您可以使用domain非常轻松地访问它们。

我认为您可以在任何要复制的模型上覆盖
unlink()
方法,并将删除的ID记录到单独的表中。然后同步进程可以读取并清除该表

如果只想复制整个数据库,您还可以进行研究。

我认为您可以在任何要复制的模型上覆盖
unlink()
方法,并将删除的ID记录到一个单独的表中。然后同步进程可以读取并清除该表

如果您只是想复制整个数据库,您还可以进行调查。

我得到了答案

我从osv.osv继承了类object\u proxy,其中有一个名为execute
def execute(self、db、uid、model、method、*args、**kw):
我只是重写了这个函数,如果方法被取消链接,那么我将记录id和模型名称保存到数据库中的一个新表中

我得到了答案


我从osv.osv继承了类object\u proxy,其中有一个名为execute
def execute(self、db、uid、model、method、*args、**kw):
我只是重写了这个函数,如果该方法被取消链接,则我将该记录id和模型名称保存到数据库中的一个新表中

您可以基于基本操作规则模型创建类似于复制的自动化规则。在插件/base\u action\u rule/base\u action\u rule.py中查找代码

操作规则服务器操作链接到完成给定条件(由过滤器定义)的对象(给定模型)。操作规则非常易于使用,即使在管理界面上也是如此

对象在创建更新时被检查,但您可以从基本动作规则继承,并在删除时定义检查。它的工作方式是为createwrite方法创建自定义包装器,用于模型对象在其上的内存表示。您需要添加一个基于\u wrap\u create\u wrap\u unlink方法,并在\u register\u hook中添加一行:

model_obj.unlink = self._wrap_unlink(model_obj.unlink, model)
\u wrap\u create\u wrap\u update中的wrapper方法在执行其正常功能后执行挂钩。当您在\u wrap\u unlink中定义wrapper方法时,您应该注意在正常的unlink函数之前执行钩子,因为unlink会擦除对象,并且钩子不可用

此外,您还应该定义一个服务器操作,用于保存复制队列或日志所需的数据


祝你好运

您可以基于基本操作规则模型制作类似于复制的自动化规则。在插件/base\u action\u rule/base\u action\u rule.py中查找代码

操作规则服务器操作链接到完成给定条件(由过滤器定义)的对象(给定模型)。操作规则非常易于使用,即使在管理界面上也是如此

对象在创建更新时被检查,但您可以从基本动作规则继承,并在删除时定义检查。它的工作方式是为createwrite方法创建自定义包装器,用于模型对象在其上的内存表示。您需要添加一个基于\u wrap\u create\u wrap\u unlink方法,并在\u register\u hook中添加一行:

model_obj.unlink = self._wrap_unlink(model_obj.unlink, model)
\u wrap\u create\u wrap\u update中的wrapper方法在执行其正常功能后执行挂钩。在\u wrap\u unlink中定义wrapper方法时,应注意执行