diff --git a/base_optional_quick_create/__openerp__.py b/base_optional_quick_create/__openerp__.py index 5d0f9f6..d4ee512 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 c0c9229..ad7b214 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 0000000..e1d1112 --- /dev/null +++ b/base_optional_quick_create/model_view.xml @@ -0,0 +1,14 @@ + + + + + ir.model + + + + + + + + +