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