From b5c5bb865b67574c28ee7dbc228ad3022ef1149a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=A9al?= Date: Mon, 25 May 2015 17:21:20 +0200 Subject: [PATCH] [ADD] secure_uninstall module --- secure_uninstall/README.md | 5 ++ secure_uninstall/__init__.py | 1 + secure_uninstall/__openerp__.py | 50 ++++++++++++++ secure_uninstall/module.py | 82 +++++++++++++++++++++++ secure_uninstall/static/src/img/icon.png | Bin 0 -> 21717 bytes secure_uninstall/wizard_view.xml | 25 +++++++ 6 files changed, 163 insertions(+) create mode 100644 secure_uninstall/README.md create mode 100644 secure_uninstall/__init__.py create mode 100644 secure_uninstall/__openerp__.py create mode 100644 secure_uninstall/module.py create mode 100644 secure_uninstall/static/src/img/icon.png create mode 100644 secure_uninstall/wizard_view.xml diff --git a/secure_uninstall/README.md b/secure_uninstall/README.md new file mode 100644 index 000000000..f9d03e963 --- /dev/null +++ b/secure_uninstall/README.md @@ -0,0 +1,5 @@ +Secure Uninstall +================ + +Ask admin password ('admin_passwd' key from config file) +before to proceed to module uninstallation diff --git a/secure_uninstall/__init__.py b/secure_uninstall/__init__.py new file mode 100644 index 000000000..59e6cc9d3 --- /dev/null +++ b/secure_uninstall/__init__.py @@ -0,0 +1 @@ +from . import module diff --git a/secure_uninstall/__openerp__.py b/secure_uninstall/__openerp__.py new file mode 100644 index 000000000..9171a38b0 --- /dev/null +++ b/secure_uninstall/__openerp__.py @@ -0,0 +1,50 @@ +# coding: utf-8 +############################################################################## +# +# Copyright (C) All Rights Reserved 2014 Akretion +# @author David BEAL +# +# 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': 'Secure Uninstall', + 'version': '0.1', + 'author': "Akretion,Odoo Community Association (OCA)", + 'maintener': 'Akretion', + 'category': 'Base', + 'summary': "Ask password ot authorize uninstall", + 'depends': [ + 'base', + ], + 'description': """ +Secure Uninstall +================ + +Ask admin password ('admin_passwd' key from config file) +before to proceed to module uninstallation + + +Contributors +------------ +* David BEAL + +""", + 'data': ['wizard_view.xml'], + 'website': 'http://www.akretion.com/', + 'license': 'AGPL-3', + 'tests': [], + 'installable': True, +} diff --git a/secure_uninstall/module.py b/secure_uninstall/module.py new file mode 100644 index 000000000..e4d026d36 --- /dev/null +++ b/secure_uninstall/module.py @@ -0,0 +1,82 @@ +# coding: utf-8 +############################################################################## +# +# Copyright (C) All Rights Reserved 2014 Akretion +# @author David BEAL +# +# 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.tools.config import config + + +class Module(orm.Model): + _inherit = 'ir.module.module' + + def button_uninstall(self, cr, uid, ids, context=None): + if 'uninstall_authorized' in context: + del context['uninstall_authorized'] + res = super(Module, self).button_uninstall( + cr, uid, ids, context=context) + print res + return self._button_immediate_function( + cr, uid, ids, self.button_uninstall, context=context) + else: + _, view_id = self.pool['ir.model.data'].get_object_reference( + cr, uid, 'secure_uninstall', 'view_uninstall_wizard_form') + return { + 'view_id': view_id, + 'view_mode': 'form', + 'res_model': 'uninstall.check.wizard', + 'context': {'module_id': ids[0]}, + 'name': "Uninstall Authorization", + 'type': 'ir.actions.act_window', + 'target': 'new', + } + + +class UninstallCheckWizard(orm.TransientModel): + _name = 'uninstall.check.wizard' + + _columns = { + 'password': fields.char( + string='Password', + help="'admin_passwd' value from Odoo configuration file") + } + + def check_password(self, cr, uid, ids, context=None): + for elm in self.browse(cr, uid, ids, context=context): + + config_passwd = config.get("admin_passwd") + if not config_passwd: + raise orm.except_orm( + 'Missing configuration key', + "'admin_passwd' configuration key is not set in " + "your Odoo server configuration file: " + "please set it a value") + if elm.password != config_passwd: + raise orm.except_orm( + "Password Error", + "Issue\n_____\nProvided password '%s' doesn't match with " + "'admin_passwd' comes from your " + "Odoo server configuration file." + "\n\nResolution\n__________\n" + "Please check your password and retry or cancel" + % elm.password) + context['uninstall_authorized'] = True + module_id = context.get('module_id') + self.pool['ir.module.module'].button_uninstall( + cr, uid, [module_id], context=context) diff --git a/secure_uninstall/static/src/img/icon.png b/secure_uninstall/static/src/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..01fb3a1701b0e8670bc7268ffce9e9bd78775b15 GIT binary patch literal 21717 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 literal 0 HcmV?d00001 diff --git a/secure_uninstall/wizard_view.xml b/secure_uninstall/wizard_view.xml new file mode 100644 index 000000000..75c61db62 --- /dev/null +++ b/secure_uninstall/wizard_view.xml @@ -0,0 +1,25 @@ + + + + + + + + uninstall.check.wizard + +
+

+Uninstall module process remove all data managed by the module +

+