OpenERPで削除されたレコードのリストを取得する方法はありますか? openerp は削除されたレコードのリストを記録すると聞いたことがあります..しかし、私はそれを参照する場所がわかりません..
2 つのデータベースを同期しようとしています。したがって、他のデータベースから対応するレコードを削除できるように、削除されたレコードのモデル名と id はほとんど必要ありません。
OpenERPで削除されたレコードのリストを取得する方法はありますか? openerp は削除されたレコードのリストを記録すると聞いたことがあります..しかし、私はそれを参照する場所がわかりません..
2 つのデータベースを同期しようとしています。したがって、他のデータベースから対応するレコードを削除できるように、削除されたレコードのモデル名と id はほとんど必要ありません。
openerpのUIから削除をクリックすると、ORMMenthodUNLINK
プロトタイプ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のリストが含まれているため、削除する前にIDを試してみることができます。
ただし、レコードがOpenERPから削除されると、dbに存在しなくなるため、アクセスできなくなります。
オプションで、ここで役立つメカニズムはactive
フィールドです。モデルでアクティブなブールフィールドを定義した場合、OEのアクティブフィールドは特別なフィールドです。アクティブなfalseに設定されたレコードがある場合、特別な努力なしにそのレコードを表示することはできませんが、トリッキーな部分は、アクティブなテーブルにそれらのレコードがまだあることです。 = Falseなので、ドメインを使用して非常に簡単にアクセスできます。
答えがわかりました。
osv.osv からクラスobject_proxyを継承し、この中にexecuteという名前の関数がありdef execute(self, db, uid, model, method, *args, **kw):
ます。この関数をオーバーライドするだけです。メソッドが unlink の場合は、その record_id とモデル名をデータベースの新しいテーブルに保存しました
ジャムの提案unlink()
は、複製したいモデルのメソッドをオーバーライドし、削除された ID を別のテーブルに記録することだと思います。その後、同期プロセスはそのテーブルを読み取って削除できます。
データベース全体を複製するだけの場合は、データベース レベルで複製ツールを調べることもできます。