List of deleted records in openerp
有没有办法在OpenERP中获取已删除记录的列表? 我听说openerp记录了删除的记录列表..但我不知道在哪里浏览它..
我正在尝试同步两个数据库。 所以我几乎不需要删除记录的模型名称和id,以便我可以从其他数据库中删除相应的记录
您可以基于base_action_rule模型创建类似replication_automated_rule的内容。在addons / base_action_rule / base_action_rule.py中查找代码。
操作规则将服务器操作链接到完成给定条件(由过滤器定义)的对象(给定模型)。即使在管理界面上,操作规则也非常易于使用。
在创建和更新时检查对象,但您可以从base_action_rule继承并定义对删除的检查。它的工作原理是创建自定义包装器来创建和写入模型对象的内存表示的方法,然后告诉它工作。您需要添加基于_wrap_create的_wrap_unlink方法,并向_register_hook添加一行:
1 | model_obj.unlink = self._wrap_unlink(model_obj.unlink, model) |
_wrap_create和_wrap_update中的包装器方法在执行其正常函数后执行钩子。当你在_wrap_unlink中定义包装器方法时,你应该在unlink的正常函数之前执行钩子,因为取消链接擦除对象并且它不可用于钩子。
此外,您应该定义一个服务器操作,该操作会为复制队列或日志保存必要的数据。
祝好运 !!
我得到了答案。
我从osv.osv继承了class object_proxy,里面有一个名为execute的函数,
当您在openerp中单击从UI中删除时,您可以访问ORM Menthod
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 """ |
这里的Ids包含要取消链接的ID列表,所以在删除之前你可以使用它们。
但是如果记录一旦从OpenERP中删除,就无法访??问,因为它们不再是db。
可选的,这里的机制可以是
我认为jam的建议是在你想要复制的任何模型上覆盖
如果您只想复制整个数据库,也可以在数据库级别查看复制工具。