← Back to team overview

openerp-community-reviewer team mailing list archive

[Merge] lp:~sylvain-legal/server-env-tools/7.0-module_parent_dependencies into lp:server-env-tools

 

Sylvain LE GAL (GRAP) has proposed merging lp:~sylvain-legal/server-env-tools/7.0-module_parent_dependencies into lp:server-env-tools.

Requested reviews:
  Server Environment And Tools Core Editors (server-env-tools-core-editors)

For more details, see:
https://code.launchpad.net/~sylvain-legal/server-env-tools/7.0-module_parent_dependencies/+merge/226162

Add a module 'module_parent_dependencies' that allows admin user to see the modules that depend of a target modules. (direct and undirect dependencies)
-- 
https://code.launchpad.net/~sylvain-legal/server-env-tools/7.0-module_parent_dependencies/+merge/226162
Your team Server Environment And Tools Core Editors is requested to review the proposed merge of lp:~sylvain-legal/server-env-tools/7.0-module_parent_dependencies into lp:server-env-tools.
=== added directory 'module_parent_dependencies'
=== added file 'module_parent_dependencies/__init__.py'
--- module_parent_dependencies/__init__.py	1970-01-01 00:00:00 +0000
+++ module_parent_dependencies/__init__.py	2014-07-09 16:04:31 +0000
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    Module - Parent Dependencies module for Odoo
+#    Copyright (C) 2014 GRAP (http://www.grap.coop)
+#    @author Sylvain LE GAL (https://twitter.com/legalsylvain)
+#
+#    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 <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import model

=== added file 'module_parent_dependencies/__openerp__.py'
--- module_parent_dependencies/__openerp__.py	1970-01-01 00:00:00 +0000
+++ module_parent_dependencies/__openerp__.py	2014-07-09 16:04:31 +0000
@@ -0,0 +1,54 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    Module - Parent Dependencies module for Odoo
+#    Copyright (C) 2014 GRAP (http://www.grap.coop)
+#    @author Sylvain LE GAL (https://twitter.com/legalsylvain)
+#
+#    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 <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+{
+    'name': 'Parent Dependencies of Modules',
+    'version': '0.1',
+    'summary': 'Display the parent dependencies of a module',
+    'category': 'Tools',
+    'description': """
+Display the parent dependencies of a module
+===========================================
+
+Functionality:
+--------------
+    * This module display to the admin user, the possibility to see the list"""
+    """ of the modules that depends (directly or indirectly) on a module.
+
+Copyright, Authors and Licence:
+-------------------------------
+    * Copyright: 2014, GRAP: Groupement Régional Alimentaire de Proximité;
+    * Author: Sylvain LE GAL (https://twitter.com/legalsylvain);
+    * Licence: AGPL-3 (http://www.gnu.org/licenses/);""",
+    'author': 'GRAP',
+    'website': 'http://www.grap.coop',
+    'license': 'AGPL-3',
+    'depends': [
+        'base',
+    ],
+    'data': [
+        'view/view.xml',
+    ],
+    'images': [
+        'static/src/img/screenshots/dependencies_list.jpg'
+    ],
+}

=== added directory 'module_parent_dependencies/i18n'
=== added file 'module_parent_dependencies/i18n/fr.po'
--- module_parent_dependencies/i18n/fr.po	1970-01-01 00:00:00 +0000
+++ module_parent_dependencies/i18n/fr.po	2014-07-09 16:04:31 +0000
@@ -0,0 +1,41 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* module_parent_dependencies
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-07-09 15:55+0000\n"
+"PO-Revision-Date: 2014-07-09 15:55+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_parent_dependencies
+#: view:ir.module.module:0
+#: field:ir.module.module,direct_parent_ids:0
+msgid "Direct Parent Modules"
+msgstr "Modules Parents Directs"
+
+#. module: module_parent_dependencies
+#: view:ir.module.module:0
+#: field:ir.module.module,all_parent_ids:0
+msgid "Direct and Indirect Parent Modules"
+msgstr "Modules Parents Directs et Indirectes"
+
+#. module: module_parent_dependencies
+#: code:_description:0
+#: model:ir.model,name:module_parent_dependencies.model_ir_module_module
+#, python-format
+msgid "Module"
+msgstr "Module"
+
+#. module: module_parent_dependencies
+#: view:ir.module.module:0
+msgid "Parent informations"
+msgstr "Informations relatives aux modules parents"
+

=== added directory 'module_parent_dependencies/model'
=== added file 'module_parent_dependencies/model/__init__.py'
--- module_parent_dependencies/model/__init__.py	1970-01-01 00:00:00 +0000
+++ module_parent_dependencies/model/__init__.py	2014-07-09 16:04:31 +0000
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    Module - Parent Dependencies module for Odoo
+#    Copyright (C) 2014 GRAP (http://www.grap.coop)
+#    @author Sylvain LE GAL (https://twitter.com/legalsylvain)
+#
+#    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 <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from . import ir_module_module

=== added file 'module_parent_dependencies/model/ir_module_module.py'
--- module_parent_dependencies/model/ir_module_module.py	1970-01-01 00:00:00 +0000
+++ module_parent_dependencies/model/ir_module_module.py	2014-07-09 16:04:31 +0000
@@ -0,0 +1,72 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    Module - Parent Dependencies module for Odoo
+#    Copyright (C) 2014 GRAP (http://www.grap.coop)
+#    @author Sylvain LE GAL (https://twitter.com/legalsylvain)
+#
+#    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 <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv.orm import Model
+from openerp.osv import fields
+
+
+class module(Model):
+    _inherit = 'ir.module.module'
+
+    # Field function Section
+    def _get_all_parent_ids(
+            self, cr, uid, ids, field_name, arg, context=None):
+        res = self._get_direct_parent_ids(
+            cr, uid, ids, field_name, arg, context=context)
+        for id in ids:
+            parent_ids = list(res[id])
+            undirect_parent_ids = self._get_all_parent_ids(
+                cr, uid, res[id], field_name, arg, context=context)
+            for parent_id in parent_ids:
+                res[id] += undirect_parent_ids[parent_id]
+            res[id] = list(set(res[id]))
+        return res
+
+    def _get_direct_parent_ids(
+            self, cr, uid, ids, field_name, arg, context=None):
+        res = {}
+        imd_obj = self.pool['ir.module.module.dependency']
+        for imm in self.browse(cr, uid, ids, context=context):
+            imd_ids = imd_obj.search(
+                cr, uid, [('name', '=', imm.name)], context=context)
+            tmp = imd_obj.read(
+                cr, uid, imd_ids, ['module_id'], context=context)
+            imm_ids = [x['module_id'][0] for x in tmp]
+            # Select only non uninstalled module
+            imm_ids = self.search(
+                cr, uid, [
+                    ('id', 'in', imm_ids),
+                    ('state', 'not in', ['uninstalled', 'uninstallable'])],
+                context=context)
+            res[imm.id] = imm_ids
+        return res
+
+    # Column Section
+    _columns = {
+        'direct_parent_ids': fields.function(
+            _get_direct_parent_ids, type='many2many',
+            relation='ir.module.module', string='Direct Parent Modules'),
+        'all_parent_ids': fields.function(
+            _get_all_parent_ids, type='many2many',
+            relation='ir.module.module',
+            string='Direct and Indirect Parent Modules'),
+    }

=== added directory 'module_parent_dependencies/static'
=== added directory 'module_parent_dependencies/static/src'
=== added directory 'module_parent_dependencies/static/src/img'
=== added file 'module_parent_dependencies/static/src/img/icon.png'
Binary files module_parent_dependencies/static/src/img/icon.png	1970-01-01 00:00:00 +0000 and module_parent_dependencies/static/src/img/icon.png	2014-07-09 16:04:31 +0000 differ
=== added directory 'module_parent_dependencies/static/src/img/screenshots'
=== added file 'module_parent_dependencies/static/src/img/screenshots/dependencies_list.jpg'
Binary files module_parent_dependencies/static/src/img/screenshots/dependencies_list.jpg	1970-01-01 00:00:00 +0000 and module_parent_dependencies/static/src/img/screenshots/dependencies_list.jpg	2014-07-09 16:04:31 +0000 differ
=== added directory 'module_parent_dependencies/tests'
=== added file 'module_parent_dependencies/tests/__init__.py'
--- module_parent_dependencies/tests/__init__.py	1970-01-01 00:00:00 +0000
+++ module_parent_dependencies/tests/__init__.py	2014-07-09 16:04:31 +0000
@@ -0,0 +1,24 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    Module - Parent Dependencies module for OpenERP
+#    Copyright (C) 2014 GRAP (http://www.grap.coop)
+#    @author Sylvain LE GAL (https://twitter.com/legalsylvain)
+#
+#    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 <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+
+from . import test_module_parent_dependencies

=== added file 'module_parent_dependencies/tests/test_module_parent_dependencies.py'
--- module_parent_dependencies/tests/test_module_parent_dependencies.py	1970-01-01 00:00:00 +0000
+++ module_parent_dependencies/tests/test_module_parent_dependencies.py	2014-07-09 16:04:31 +0000
@@ -0,0 +1,65 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    Database Integrity module for OpenERP
+#    Copyright (C) 2014 GRAP (http://www.grap.coop)
+#    @author Sylvain LE GAL (https://twitter.com/legalsylvain)
+#
+#    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 <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.tests.common import TransactionCase
+
+
+class TestmoduleParentDependencies(TransactionCase):
+    """Tests for 'DataBase Integrity' Module"""
+
+    def setUp(self):
+        super(TestmoduleParentDependencies, self).setUp()
+        self.im_obj = self.registry('ir.module.module')
+
+    # Test Section
+    def test_01_direct_parent(self):
+        """Test if the compute of the field direct_parent_ids is correct."""
+        cr, uid = self.cr, self.uid
+        # compute expected values
+        cr.execute("""SELECT module_id
+            FROM ir_module_module_dependency immd
+            INNER JOIN ir_module_module imm on imm.id = immd.module_id
+            WHERE immd.name='base'
+            AND imm.state not in ('uninstalled', 'uninstallable')""")
+        expected_parent_ids = [x[0] for x in cr.fetchall()]
+
+        # Get values
+        base_id = self.im_obj.search(cr, uid, [('name', '=', 'base')])
+        tmp = self.im_obj.browse(
+            cr, uid, base_id)
+        parent_ids = [x.id for x in tmp[0].direct_parent_ids]
+
+        self.assertEqual(
+            sorted(parent_ids), sorted(expected_parent_ids),
+            "Incorrect computation of 'direct_parent_id's fields.")
+
+    def test_02_all_parent(self):
+        """Test if the compute of the field direct_parent_ids doesn't crash."""
+        cr, uid = self.cr, self.uid
+        base_id = self.im_obj.search(cr, uid, [('name', '=', 'base')])
+        tmp = self.im_obj.browse(
+            cr, uid, base_id)
+        parent_ids = [x.id for x in tmp[0].all_parent_ids]
+
+        self.assertNotEqual(
+            sorted(parent_ids), [],
+            "Incorrect computation of 'direct_parent_id's fields.")

=== added directory 'module_parent_dependencies/view'
=== added file 'module_parent_dependencies/view/view.xml'
--- module_parent_dependencies/view/view.xml	1970-01-01 00:00:00 +0000
+++ module_parent_dependencies/view/view.xml	2014-07-09 16:04:31 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ********************************************************************** -->
+<!--   odule - Parent Dependencies module for Odoo                          -->
+<!--    Copyright (C) 2014- Today GRAP (http://www.grap.coop)               -->
+<!--    @author Sylvain LE GAL (https://twitter.com/legalsylvain)           -->
+
+<!--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 <http://www.gnu.org/licenses/>.   -->
+<!-- ********************************************************************** -->
+<openerp>
+    <data>
+
+        <record id="view_ir_module_module_form" model="ir.ui.view">
+            <field name="name">ir.module.module.form</field>
+            <field name="model">ir.module.module</field>
+            <field name="inherit_id" ref="base.module_form" />
+            <field name="arch" type="xml">
+                <notebook position="inside">
+                    <page string="Parent informations">
+                        <separator string="Direct Parent Modules" colspan="2"/>
+                        <field name="direct_parent_ids" />
+                        <separator string="Direct and Indirect Parent Modules" colspan="2"/>
+                        <field name="all_parent_ids" />
+                    </page>
+                </notebook>
+            </field>
+        </record>
+
+    </data>
+</openerp>


Follow ups