diff --git a/bin/addons/base/ir/__init__.py b/bin/addons/base/ir/__init__.py index 343b50a6998..145a167fdc2 100644 --- a/bin/addons/base/ir/__init__.py +++ b/bin/addons/base/ir/__init__.py @@ -34,6 +34,7 @@ import ir_exports import workflow import ir_rule import wizard +import osv_memory_autovacuum # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/bin/addons/base/ir/ir.xml b/bin/addons/base/ir/ir.xml index cb9b7a6d5bf..e3475faf721 100644 --- a/bin/addons/base/ir/ir.xml +++ b/bin/addons/base/ir/ir.xml @@ -1868,5 +1868,20 @@ + + + + + AutoVacuum osv_memory objects + 30 + minutes + -1 + True + + osv_memory.autovacuum + power_on + () + + diff --git a/bin/addons/base/ir/osv_memory_autovacuum.py b/bin/addons/base/ir/osv_memory_autovacuum.py new file mode 100644 index 00000000000..b2ab938d740 --- /dev/null +++ b/bin/addons/base/ir/osv_memory_autovacuum.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2010 OpenERP s.a. (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from osv import osv +from osv.orm import orm_memory + +class osv_memory_autovacuum(osv.osv_memory): + _name = 'osv_memory.autovacuum' + + def power_on(self, cr, uid, context=None): + for model in self.pool.obj_list(): + obj = self.pool.get(model) + if isinstance(obj, orm_memory): + obj.vaccum(cr, uid) + return True + +osv_memory_autovacuum() +