diff --git a/base_optional_quick_create/AUTHORS.txt b/base_optional_quick_create/AUTHORS.txt new file mode 100644 index 000000000..7106ca0eb --- /dev/null +++ b/base_optional_quick_create/AUTHORS.txt @@ -0,0 +1 @@ +Lorenzo Battistini diff --git a/base_optional_quick_create/__init__.py b/base_optional_quick_create/__init__.py new file mode 100644 index 000000000..44563ef86 --- /dev/null +++ b/base_optional_quick_create/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2013 Agile Business Group sagl () +# +# 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 . +# +############################################################################## +import model diff --git a/base_optional_quick_create/__openerp__.py b/base_optional_quick_create/__openerp__.py new file mode 100644 index 000000000..2b2a3f8ad --- /dev/null +++ b/base_optional_quick_create/__openerp__.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2013 Agile Business Group sagl () +# +# 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 . +# +############################################################################## + +{ + 'name': "Optional quick create", + 'version': '0.1', + 'category': 'Tools', + 'description': """ +This module allows to avoid to 'quick create' new records, through many2one fields, for a specific model. +You can configure which models should allow 'quick create'. When specified, the 'quick create' option will always open the standard create form. + +Got the idea from https://twitter.com/nbessi/status/337869826028605441 +""", + 'author': 'Agile Business Group', + 'website': 'http://www.agilebg.com', + 'license': 'AGPL-3', + "depends": ['base'], + "data": [ + 'model_view.xml', + ], + "demo": [], + 'test': [ + ], + "active": False, + "installable": True +} diff --git a/base_optional_quick_create/model.py b/base_optional_quick_create/model.py new file mode 100644 index 000000000..fc15593a7 --- /dev/null +++ b/base_optional_quick_create/model.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2013 Agile Business Group sagl () +# +# 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 openerp.osv import orm, fields +from openerp import SUPERUSER_ID +from openerp.tools.translate import _ + +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): + raise orm.except_orm(_('Error'), _("Can't create quickly. Opening create form")) + return wrapper + + def _register_hook(self, cr, ids=None): + 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 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 + + + + + + + + +