Added fearutes tab in module
authorhda@tinyerp.com <>
Fri, 24 Oct 2008 10:41:31 +0000 (16:11 +0530)
committerhda@tinyerp.com <>
Fri, 24 Oct 2008 10:41:31 +0000 (16:11 +0530)
bzr revid: hda@tinyerp.com-20081024104131-zirn6p2mu806a1o6

bin/addons/base/module/module.py
bin/addons/base/module/module_view.xml

index 836a6a3..ff82181 100644 (file)
@@ -219,6 +219,65 @@ class module(osv.osv):
                 res[m.id] = ''
         return res
 
+    def _get_menus(self, cr, uid, ids, field_name=None, arg=None, context={}):
+        res = {}
+        model_data_obj = self.pool.get('ir.model.data')
+        menu_obj = self.pool.get('ir.ui.menu')
+        for m in self.browse(cr, uid, ids):
+            if m.state == 'installed':
+                menu_txt = ''
+                menus_id = model_data_obj.search(cr,uid,[('module','=',m.name),('model','=','ir.ui.menu')])
+                for data_id in model_data_obj.browse(cr,uid,menus_id):
+                    menu_txt += menu_obj.browse(cr,uid,data_id.res_id).complete_name + '\n'
+                res[m.id] = menu_txt
+            else:
+                res[m.id] = ''
+        return res
+
+    def _get_reports(self, cr, uid, ids, field_name=None, arg=None, context={}):
+        res = {}
+        model_data_obj = self.pool.get('ir.model.data')
+        report_obj = self.pool.get('ir.actions.report.xml')
+        for m in self.browse(cr, uid, ids):
+            if m.state == 'installed':
+                report_txt = ''
+                report_id = model_data_obj.search(cr,uid,[('module','=',m.name),('model','=','ir.actions.report.xml')])
+                for data_id in model_data_obj.browse(cr,uid,report_id):
+                    report_txt += report_obj.browse(cr,uid,data_id.res_id).name + '\n'
+                res[m.id] = report_txt
+            else:
+                res[m.id] = ''
+        return res
+
+    def _get_views(self, cr, uid, ids, field_name=None, arg=None, context={}):
+        res = {}
+        model_data_obj = self.pool.get('ir.model.data')
+        view_obj = self.pool.get('ir.ui.view')
+        for m in self.browse(cr, uid, ids):
+            if m.state == 'installed':
+                view_txt = ''
+                view_id = model_data_obj.search(cr,uid,[('module','=',m.name),('model','=','ir.ui.view')])
+                for data_id in model_data_obj.browse(cr,uid,view_id):
+                    view_txt += view_obj.browse(cr,uid,data_id.res_id).name + '\n'
+                res[m.id] = view_txt
+            else:
+                res[m.id] = ''
+        return res
+
+    def _get_objects(self, cr, uid, ids, field_name=None, arg=None, context={}):
+        res = {}
+        model_data_obj=self.pool.get('ir.model.data')
+        for m in self.browse(cr, uid, ids):
+            if m.state=='installed':
+                cr.execute('''select distinct model from ir_model_data where module = '%s' '''%(m.name))
+                objects = cr.fetchall()
+                obj_lst=map(lambda x:x[0],objects)
+                res[m.id] = '\n'.join(obj_lst)
+            else:
+                res[m.id] = ''
+        return res
+
+
     _columns = {
         'name': fields.char("Name", size=128, readonly=True, required=True),
         'category_id': fields.many2one('ir.module.category', 'Category', readonly=True),
@@ -245,6 +304,10 @@ class module(osv.osv):
         'license': fields.selection([('GPL-2', 'GPL-2'),('GPL-3', 'GPL-3'),
             ('Other proprietary', 'Other proprietary')], string='License',
             readonly=True),
+        'menus_by_module': fields.function(_get_menus, method=True, string='Menus', type='text'),
+        'reports_by_module': fields.function(_get_reports, method=True, string='Reports', type='text'),
+        'views_by_module': fields.function(_get_views, method=True, string='Views', type='text'),
+        'objects_by_module': fields.function(_get_objects, method=True, string='Objects', type='text'),
     }
 
     _defaults = {
index dfec051..38e4da4 100644 (file)
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <openerp>
     <data>
-        
+
         <!-- Modules Categories -->
-        
+
         <record id="view_module_category_form" model="ir.ui.view">
             <field name="name">ir.module.category.form</field>
             <field name="model">ir.module.category</field>
@@ -16,7 +16,7 @@
                 </form>
             </field>
         </record>
-        
+
         <record id="view_module_category_tree" model="ir.ui.view">
             <field name="name">ir.module.category.tree</field>
             <field name="model">ir.module.category</field>
@@ -36,9 +36,9 @@
             <field name="domain">[('parent_id','=',False)]</field>
         </record>
         <menuitem action="action_module_category_tree" id="menu_action_module_category_tree" parent="base.menu_management"/>
-        
+
         <!-- Click on a category -->
-        
+
         <record id="action_module_open_categ" model="ir.actions.act_window">
             <field name="name">Modules</field>
             <field name="res_model">ir.module.module</field>
             <field eval="'ir.actions.act_window,%d'%action_module_open_categ" name="value"/>
             <field eval="True" name="object"/>
         </record>
-        
-        
+
+
         <!-- Modules -->
-        
+
         <record id="module_form" model="ir.ui.view">
             <field name="name">ir.module.module.form</field>
             <field name="model">ir.module.module</field>
                                 </tree>
                             </field>
                         </page>
+                        <page string="Added Features" attrs="{'invisible':[('state','!=','installed')]}">
+<!--                           <separator string="The following information describes the features provided by this module. It will be completed only if the module is installed" colspan="4"/>-->
+                               <separator string="List of menus introduced by this module" colspan="2"/>
+                               <separator string="List of reports introduced by this module" colspan="2"/>
+                            <field colspan="2" name="menus_by_module" nolabel="1"/>
+                            <field colspan="2" name="reports_by_module" nolabel="1"/>
+                               <separator string="List of views introduced by this module" colspan="2"/>
+                               <separator string="List of objects introduced by this module" colspan="2"/>
+                            <field colspan="2" name="views_by_module" nolabel="1"/>
+                            <field colspan="2" name="objects_by_module" nolabel="1"/>
+                        </page>
                     </notebook>
                 </form>
             </field>
             <field name="domain"/>
         </record>
         <menuitem action="open_module_tree" id="menu_module_tree" parent="base.menu_management"/>
-        
+
         <record id="open_module_tree_install" model="ir.actions.act_window">
             <field name="name">Installed modules</field>
             <field name="res_model">ir.module.module</field>
             <field name="domain">[('state','in', ['to upgrade', 'to remove', 'to install'])]</field>
         </record>
         <menuitem action="open_module_tree_upgrade" id="menu_module_tree_upgrade" parent="base.menu_module_tree"/>
-        
+
         <record id="repository_form" model="ir.ui.view">
             <field name="name">ir.module.repository.form</field>
             <field name="model">ir.module.repository</field>
             <field name="view_mode">tree,form</field>
             <field name="context">{'active_test': False}</field>
         </record>
-        <menuitem action="open_repository_tree" id="menu_module_repository_tree" parent="base.menu_management"/>       
+        <menuitem action="open_repository_tree" id="menu_module_repository_tree" parent="base.menu_management"/>
 
     </data>
 </openerp>