Skip to content

Commit

Permalink
[ADD] module module_uninstall_check
Browse files Browse the repository at this point in the history
  • Loading branch information
legalsylvain committed Apr 20, 2017
1 parent 4ad794f commit fcb361a
Show file tree
Hide file tree
Showing 14 changed files with 595 additions and 0 deletions.
92 changes: 92 additions & 0 deletions module_uninstall_check/README.rst
@@ -0,0 +1,92 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3

============================
Module Uninstallation Checks
============================

This module extends the functionality of base module, to improve modules
uninstallation process.

It provides an extra view, on module form to display which models (SQL tables)
and which fields (SQL columns) will be dropped, if the selected module is
uninstalled.


Usage
=====

To use this module, you need to:

#. Go to Settings / Modules / Local Modules
#. Select an installed module
#. Click on the button 'Uninstallation Impact'

.. figure:: ./module_uninstall_check/static/description/module_form.png
:width: 800 px

* Sample, selecting sale_margin module

.. figure:: ./module_uninstall_check/static/description/sale_margin_uninstallation.png
:width: 800 px

* Sample, selecting sale_stock module, when sale_margin is installed

.. figure:: ./module_uninstall_check/static/description/sale_uninstallation.png
:width: 800 px

.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/149/8.0

Known issues / Roadmap
======================

* In some cases, we want to uninstall a module, but prevent some data deletion.
This can happen:
* if we want to keep backup some datas;
* if the data moved into another module after a refactoring;

This module could implement such feature, adding extra feature on wizard lines,
deleting or renaming xml ids.


Bug Tracker
===========

Bugs are tracked on `GitHub Issues
<https://github.com/OCA/server-tools/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smash it by providing detailed and welcomed feedback.

Credits
=======

Contributors
------------

* Sylvain LE GAL (https://twitter.com/legalsylvain)

Funders
-------

The development of this module has been financially supported by:

* GRAP, Groupement Régional Alimentaire de Proximité (http://www.grap.coop)

Maintainer
----------

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

This module is maintained by the OCA.

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

To contribute to this module, please visit https://odoo-community.org.

2 changes: 2 additions & 0 deletions module_uninstall_check/__init__.py
@@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
from . import wizards
23 changes: 23 additions & 0 deletions module_uninstall_check/__openerp__.py
@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Module Uninstall Check",
"summary": "Add Extra Checks before uninstallation of modules",
"version": "8.0.1.0.0",
"category": "Base",
"website": "https://odoo-community.org/",
"author": "GRAP, Odoo Community Association (OCA)",
"license": "AGPL-3",
"installable": True,
"depends": [
'base',
],
"data": [
'wizards/view_wizard_module_uninstall.xml',
'wizards/action.xml',
'views/view_ir_module_module.xml',
],
"demo": [
'demo/res_groups.xml',
],
}
15 changes: 15 additions & 0 deletions module_uninstall_check/demo/res_groups.xml
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2015 - Today: GRAP (http://www.grap.coop)
@author Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->

<openerp><data>

<record id="base.group_no_one" model="res.groups">
<field name="users" eval="[
(4, ref('base.user_root'))]" />
</record>

</data></openerp>
188 changes: 188 additions & 0 deletions module_uninstall_check/i18n/fr.po
@@ -0,0 +1,188 @@

# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * module_uninstall_check
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-20 20:14+0000\n"
"PO-Revision-Date: 2017-04-20 20:14+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: module_uninstall_check
#: view:wizard.module.uninstall:module_uninstall_check.view_wizard_module_uninstall_form
msgid "Cancel"
msgstr "Cancel"

#. module: module_uninstall_check
#: help:wizard.module.uninstall,module_id:0
msgid "Choose a module. The wizard will display all the models and fields linked to that module, that will be dropped, if selected module is uninstalled.\n"
" Note : Only Non Transient items will be displayed"
msgstr "Choisissez un module. L'assistant va afficher tous les modèles et tous les champs associés à ce module, et qui seront supprimés, si le module sélectionné est désinstallé.\n"
" Note: Seulement les éléments persistants en base de données seront affichés"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,create_uid:0
#: field:wizard.module.uninstall.line,create_uid:0
msgid "Created by"
msgstr "Créé par"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,create_date:0
#: field:wizard.module.uninstall.line,create_date:0
msgid "Created on"
msgstr "Créé le"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,display_name:0
#: field:wizard.module.uninstall.line,display_name:0
msgid "Display Name"
msgstr "Nom affiché"

#. module: module_uninstall_check
#: selection:wizard.module.uninstall.line,type:0
msgid "Field"
msgstr "Champ"

#. module: module_uninstall_check
#: field:wizard.module.uninstall.line,field_model_name:0
msgid "Field Model Name"
msgstr "Nom du modèle du champ"

#. module: module_uninstall_check
#: field:wizard.module.uninstall.line,field_name:0
msgid "Field Name"
msgstr "Nom du champ"

#. module: module_uninstall_check
#: field:wizard.module.uninstall.line,field_ttype:0
msgid "Field Type"
msgstr "Type du champ"

#. module: module_uninstall_check
#: field:wizard.module.uninstall.line,field_id:0
msgid "Field id"
msgstr "Field id"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,field_line_ids:0
msgid "Field line ids"
msgstr "Field line ids"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,id:0
#: field:wizard.module.uninstall.line,id:0
msgid "ID"
msgstr "ID"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,module_ids:0
msgid "Impacted modules"
msgstr "Modules impactés"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,module_qty:0
msgid "Impacted modules Quantity"
msgstr "Nombre de modules impactés"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,__last_update:0
#: field:wizard.module.uninstall.line,__last_update:0
msgid "Last Modified on"
msgstr "Dernière modification le"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,write_uid:0
#: field:wizard.module.uninstall.line,write_uid:0
msgid "Last Updated by"
msgstr "Dernière mise à jour par"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,write_date:0
#: field:wizard.module.uninstall.line,write_date:0
msgid "Last Updated on"
msgstr "Dernière mise à jour le"

#. module: module_uninstall_check
#: selection:wizard.module.uninstall.line,type:0
msgid "Model"
msgstr "Modèle"

#. module: module_uninstall_check
#: field:wizard.module.uninstall.line,model_name:0
msgid "Model Name"
msgstr "Nom du modèle"

#. module: module_uninstall_check
#: field:wizard.module.uninstall.line,model_id:0
msgid "Model id"
msgstr "Model id"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,model_line_ids:0
msgid "Model line ids"
msgstr "Model line ids"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,module_id:0
msgid "Module"
msgstr "Module"

#. module: module_uninstall_check
#: field:wizard.module.uninstall,module_name:0
msgid "Module Name"
msgstr "Nom du module"

#. module: module_uninstall_check
#: help:wizard.module.uninstall,module_ids:0
msgid "Modules list that will be uninstalled by dependency"
msgstr "Liste des modules qui seront désinstallés par dépendance"

#. module: module_uninstall_check
#: view:wizard.module.uninstall:module_uninstall_check.view_wizard_module_uninstall_form
msgid "Related Fields"
msgstr "Champs associés"

#. module: module_uninstall_check
#: view:wizard.module.uninstall:module_uninstall_check.view_wizard_module_uninstall_form
msgid "Related Models"
msgstr "Modèle associés"

#. module: module_uninstall_check
#: field:wizard.module.uninstall.line,model_row_qty:0
msgid "Row Quantity"
msgstr "Nombre de lignes"

#. module: module_uninstall_check
#: view:wizard.module.uninstall:module_uninstall_check.view_wizard_module_uninstall_form
msgid "System Update"
msgstr "System Update"

#. module: module_uninstall_check
#: view:wizard.module.uninstall:module_uninstall_check.view_wizard_module_uninstall_form
msgid "The following models and fields will be dropped if uninstallation of the selected module is done"
msgstr "Les modèles et les champs suivants seront supprimés si la désinstallation du module sélectionné est réalisé"

#. module: module_uninstall_check
#: field:wizard.module.uninstall.line,type:0
msgid "Type"
msgstr "Type"

#. module: module_uninstall_check
#: model:ir.actions.act_window,name:module_uninstall_check.action_wizard_module_uninstall
#: view:ir.module.module:module_uninstall_check.view_ir_module_module_form
msgid "Uninstallation Impact"
msgstr "Impact de la désinstallation"

#. module: module_uninstall_check
#: field:wizard.module.uninstall.line,wizard_id:0
msgid "Wizard id"
msgstr "Wizard id"

Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 22 additions & 0 deletions module_uninstall_check/views/view_ir_module_module.xml
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
@author Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->

<openerp><data>

<record id="view_ir_module_module_form" model="ir.ui.view">
<field name="model">ir.module.module</field>
<field name="inherit_id" ref="base.module_form"/>
<field name="arch" type="xml">
<button name="button_install_cancel" position="after">
<button name="%(action_wizard_module_uninstall)d"
type="action" string="Uninstallation Impact"
attrs="{'invisible': [('state', 'in', ('uninstalled', 'uninstallable'))]}"/>
</button>
</field>
</record>

</data></openerp>
3 changes: 3 additions & 0 deletions module_uninstall_check/wizards/__init__.py
@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import wizard_module_uninstall
from . import wizard_module_uninstall_line
18 changes: 18 additions & 0 deletions module_uninstall_check/wizards/action.xml
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2016-Today GRAP (http://www.grap.coop)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->

<openerp><data>

<record id="action_wizard_module_uninstall" model="ir.actions.act_window">
<field name="name">Uninstallation Impact</field>
<field name="res_model">wizard.module.uninstall</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>

</data></openerp>

0 comments on commit fcb361a

Please sign in to comment.