From ee58f34b79f7c3bf6b50f4e631bfdcce5dc08fb3 Mon Sep 17 00:00:00 2001 From: Lorenzo Battistini Date: Wed, 12 Jun 2013 18:45:49 +0200 Subject: [PATCH] [add] working version --- base_optional_quick_create/__openerp__.py | 2 ++ base_optional_quick_create/model.py | 41 +++++++++++++++-------- base_optional_quick_create/model_view.xml | 14 ++++++++ 3 files changed, 43 insertions(+), 14 deletions(-) create mode 100644 base_optional_quick_create/model_view.xml diff --git a/base_optional_quick_create/__openerp__.py b/base_optional_quick_create/__openerp__.py index 5d0f9f6a0..d4ee51218 100644 --- a/base_optional_quick_create/__openerp__.py +++ b/base_optional_quick_create/__openerp__.py @@ -23,6 +23,7 @@ 'version': '0.1', 'category': 'Tools', 'description': """ +https://twitter.com/nbessi/status/337869826028605441 """, 'author': 'Agile Business Group', @@ -30,6 +31,7 @@ 'license': 'AGPL-3', "depends": ['base'], "data": [ + 'model_view.xml', ], "demo": [], 'test': [ diff --git a/base_optional_quick_create/model.py b/base_optional_quick_create/model.py index c0c9229c0..ad7b2142c 100644 --- a/base_optional_quick_create/model.py +++ b/base_optional_quick_create/model.py @@ -18,29 +18,42 @@ # ############################################################################## -from openerp.osv import orm +from openerp.osv import orm, fields +from openerp import SUPERUSER_ID class ir_model(orm.Model): _inherit = 'ir.model' + + _columns = { + 'avoid_quick_create': fields.boolean('Avoid quick create'), + } def _wrap_name_create(self, old_create, model): - def wrapper(cr, uid, name, context=None): - import pdb; pdb.set_trace() - return old_create(cr, uid, name, context=context) - + raise Exception("Can't create quickly. Opening create form") return wrapper def _register_hook(self, cr, ids=None): - model = 'res.partner' - model_obj = self.pool.get(model) - if not hasattr(model_obj, 'check_quick_create'): - model_obj.name_create = self._wrap_name_create(model_obj.name_create, model) - model_obj.check_quick_create = True + if ids is None: + ids = self.search(cr, SUPERUSER_ID, []) + for model in self.browse(cr, SUPERUSER_ID, ids): + if model.avoid_quick_create: + model_name = model.model + model_obj = self.pool.get(model_name) + if not hasattr(model_obj, 'check_quick_create'): + model_obj.name_create = self._wrap_name_create(model_obj.name_create, model_name) + model_obj.check_quick_create = True return True - def name_create(self, cr, uid, name, context=None): - res = super(ir_model, self).name_create(cr, uid, name, context=context) - self._register_hook(cr, [res]) - return res + def create(self, cr, uid, vals, context=None): + res_id = super(ir_model, self).create(cr, uid, vals, context=context) + self._register_hook(cr, [res_id]) + return res_id + + def write(self, cr, uid, ids, vals, context=None): + if isinstance(ids, (int, long)): + ids = [ids] + super(ir_model, self).write(cr, uid, ids, vals, context=context) + self._register_hook(cr, ids) + return True diff --git a/base_optional_quick_create/model_view.xml b/base_optional_quick_create/model_view.xml new file mode 100644 index 000000000..e1d11126b --- /dev/null +++ b/base_optional_quick_create/model_view.xml @@ -0,0 +1,14 @@ + + + + + ir.model + + + + + + + + +