Ujjvala Collins (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-server/trunk-v62_sale-tpa into lp:openobject-server.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-v62_sale-tpa/+merge/95843

Configuration wizards improvements:
=====================================
[ADD]: 
* Added a new object res.config.settings
* Methods included in that object: create, write, execute, default_get
   ‣ get_default_applied_groups - fetches all applied groups on users
   ‣ get_default_installed_modules - fetches list of all installed modules in 
one dictionary
   ‣ set_installed_modules - installs selected modules
   ‣ set_groups - sets selected groups to users
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-v62_sale-tpa/+merge/95843
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/trunk-v62_sale-tpa.
=== modified file 'openerp/addons/base/res/res_config.py'
--- openerp/addons/base/res/res_config.py	2012-02-02 09:26:34 +0000
+++ openerp/addons/base/res/res_config.py	2012-03-05 05:15:23 +0000
@@ -95,6 +95,7 @@
         """
         raise NotImplementedError(
             'Configuration items need to implement execute')
+    
     def cancel(self, cr, uid, ids, context=None):
         """ Method called when the user click on the ``Skip`` button.
 
@@ -108,7 +109,7 @@
         ``action_cancel``.
         """
         pass
-
+    
     def action_next(self, cr, uid, ids, context=None):
         """ Action handler for the ``next`` event.
 
@@ -396,4 +397,96 @@
 
 ir_actions_configuration_wizard()
 
+class res_config_settings(osv.osv_memory):
+    ''' 
+    Base classes for new-style configuration items.
+    '''
+    _name = 'res.config.settings'
+    _inherit = 'res.config'
+
+    def create(self, cr, uid, vals, context=None):
+        ids = super(res_config_settings, self).create(cr, uid, vals, context=context)
+        self.execute(cr, uid, [ids], vals, context)
+        return ids
+
+    def write(self, cr, uid, ids, vals, context=None):
+        self.execute(cr, uid, ids, vals, context)
+        return super(res_config_settings, self).write(cr, uid, ids, vals, context=context)
+
+    def execute(self, cr, uid, ids, vals, context=None):
+        for method in dir(self):
+            if method.startswith('set_'):
+                getattr(self, method)(cr, uid, ids, vals, context)
+        return True
+
+    def default_get(self, cr, uid, fields_list, context=None):
+        result = super(res_config_settings, self).default_get(
+            cr, uid, fields_list, context=context)
+        for method in dir(self):
+            if method.startswith('get_default_'):
+                result.update(getattr(self, method)(cr, uid, [], context))
+        return result
+    
+    def get_default_applied_groups(self, cr, uid, ids, context=None):
+        applied_groups = {}
+        user_obj = self.pool.get('res.users')
+        dataobj = self.pool.get('ir.model.data')
+
+        groups = []
+        user_group_ids = user_obj.browse(cr, uid, uid, context=context).groups_id
+
+        for group_id in user_group_ids:
+            groups.append(group_id.id)
+
+        for id in groups:
+            key_id = dataobj.search(cr, uid,[('res_id','=',id),('model','=','res.groups')],context=context)
+            key = dataobj.browse(cr, uid, key_id[0], context=context).name
+            applied_groups[key] = True
+
+        return applied_groups
+
+    def get_default_installed_modules(self, cr, uid, ids, context=None):
+        module_obj = self.pool.get('ir.module.module')
+        module_names = []
+        module_ids = module_obj.search(cr, uid,
+                           [('state','in',['to install', 'installed', 'to upgrade'])],
+                           context=context)
+        modules_list = [mod.name for mod in module_obj.browse(cr, uid, module_ids, context=context)]
+        installed_modules = dict([('module_'+name, True) for name in modules_list])
+        return installed_modules
+
+    def set_installed_modules(self, cr, uid, ids, vals, context=None):
+        module_obj = self.pool.get('ir.module.module')
+        for module, value in vals.items():
+            if module.startswith('module_'):
+                mod_name = module[len('module_'):]
+                installed = self.get_default_installed_modules(cr, uid, ids, context=context)
+                if value == True and not installed.get(mod_name):
+                    module_id = module_obj.search(cr, uid, [('name','=',mod_name)])
+                    module_obj.button_immediate_install(cr, uid, module_id, context=context)
+                elif value == False and installed.get(mod_name):
+                    module_id = module_obj.search(cr, uid, [('name','=',mod_name)])
+                    module_obj.button_uninstall(self, cr, uid, module_id, context=context)
+                    module_obj.button_upgrade(self, cr, uid, module_id, context=context)
+
+    def set_groups(self, cr, uid, ids, vals, context=None):
+        data_obj = self.pool.get('ir.model.data')
+        users_obj = self.pool.get('res.users')
+        groups_obj = self.pool.get('res.groups')
+        ir_values_obj = self.pool.get('ir.values')
+        dummy,user_group_id = data_obj.get_object_reference(cr, uid, 'base', 'group_user')
+        for group in vals.keys():
+            if group.startswith('group_'):
+                dummy,group_id = data_obj.get_object_reference(cr, uid, 'base', group)
+                if vals[group]:
+                    groups_obj.write(cr, uid, [user_group_id], {'implied_ids': [(4,group_id)]})
+                    users_obj.write(cr, uid, [uid], {'groups_id': [(4,group_id)]})
+                    ir_values_obj.set(cr, uid, 'default', False, 'groups_id', ['res.users'], [(4,group_id)])
+                else:
+                    groups_obj.write(cr, uid, [user_group_id], {'implied_ids': [(3,group_id)]})
+                    users_obj.write(cr, uid, [uid], {'groups_id': [(3,group_id)]})
+                    ir_values_obj.set(cr, uid, 'default', False, 'groups_id', ['res.users'], [(3,group_id)])
+
+res_config_settings()
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'openerp/addons/base/res/res_config.xml'
--- openerp/addons/base/res/res_config.xml	2011-10-01 20:30:14 +0000
+++ openerp/addons/base/res/res_config.xml	2012-03-05 05:15:23 +0000
@@ -84,6 +84,31 @@
 
       </field>
     </record>
+    
+    <record id="view_res_config_settings" model="ir.ui.view">
+        <field name="name">res.config.settings.sales</field>
+        <field name="model">res.config.settings</field>
+        <field name="type">form</field>
+        <field name="arch" type="xml">
+            <form string="Configure Sales Application">
+                <group col="4" colspan="4" name="sales">
+                </group>
+                <group col="4" colspan="4" name="crm">
+                    <group col="4" colspan="4" name="plugin">
+                    </group>
+                </group>
+            </form>
+        </field>
+    </record>
+    
+    <record id="action_sale_config" model="ir.actions.act_window">
+        <field name="name">Configure Sales Application</field>
+        <field name="type">ir.actions.act_window</field>
+        <field name="res_model">res.config.settings</field>
+        <field name="view_id" ref="view_res_config_settings"/>
+        <field name="view_type">form</field>
+        <field name="view_mode">form</field>
+    </record>
 
   </data>
 </openerp>

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to