openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #04122
[Merge] lp:~openerp-dev/openobject-server/trunk-configuration-rework into lp:openobject-server
Rucha (Open ERP) has proposed merging lp:~openerp-dev/openobject-server/trunk-configuration-rework into lp:openobject-server.
Requested reviews:
qdp (OpenERP) (qdp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-configuration-rework/+merge/53209
Configuration wizard Rework
--
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-configuration-rework/+merge/53209
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-server/trunk-configuration-rework.
=== modified file 'openerp/addons/base/ir/ir.xml'
--- openerp/addons/base/ir/ir.xml 2011-01-18 22:40:40 +0000
+++ openerp/addons/base/ir/ir.xml 2011-03-14 09:40:11 +0000
@@ -1908,7 +1908,7 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Actions">
- <filter string="To Do" name="todo" icon="terp-camera_test" domain=" ['|',('state','=','open'),'&',('state','=','skip'),('restart','=','onskip')]" help="Todo State Or (Skip State And Onskip Restart)"/>
+ <filter string="To Do" name="todo" icon="terp-camera_test" domain=" ['|',('state','=','open'),'&',('state','=','skip'),('restart','=','on_trigger')]" help="Todo State Or (Skip State And ontrigger Restart)"/>
<separator orientation="vertical"/>
<field name="state"/>
<field name="restart"/>
=== modified file 'openerp/addons/base/ir/ir_actions.py'
--- openerp/addons/base/ir/ir_actions.py 2011-01-04 10:13:35 +0000
+++ openerp/addons/base/ir/ir_actions.py 2011-03-14 09:40:11 +0000
@@ -794,14 +794,14 @@
'sequence': fields.integer('Sequence'),
'state': fields.selection(TODO_STATES, string='State', required=True),
'name':fields.char('Name', size=64),
- 'restart': fields.selection([('onskip','On Skip'),('always','Always'),('never','Never')],'Restart',required=True),
+ 'restart': fields.selection([('on_trigger','On Trigger'),('always','Always'),('never','Never')],'Restart',required=True),
'groups_id':fields.many2many('res.groups', 'res_groups_action_rel', 'uid', 'gid', 'Groups'),
'note':fields.text('Text', translate=True),
}
_defaults={
'state': 'open',
'sequence': 10,
- 'restart': 'onskip',
+ 'restart': 'on_trigger',
}
_order="sequence,name,id"
=== modified file 'openerp/addons/base/module/module.py'
--- openerp/addons/base/module/module.py 2011-01-13 09:41:00 +0000
+++ openerp/addons/base/module/module.py 2011-03-14 09:40:11 +0000
@@ -200,6 +200,7 @@
def _name_uniq_msg(self, cr, uid, ids, context=None):
return _('The name of the module must be unique !')
+
def _certificate_uniq_msg(self, cr, uid, ids, context=None):
return _('The certificate ID of the module must be unique !')
@@ -285,8 +286,42 @@
demo = demo or mdemo
return demo
+ def upgrade(self, cr, uid, ids, context=None):
+ mod_obj = self.pool.get('ir.module.module')
+ ids = mod_obj.search(cr, uid, [('state', 'in', ['to upgrade', 'to remove', 'to install'])])
+ unmet_packages = []
+ mod_dep_obj = self.pool.get('ir.module.module.dependency')
+ for mod in mod_obj.browse(cr, uid, ids, context=context):
+ depends_mod_ids = mod_dep_obj.search(cr, uid, [('module_id', '=', mod.id)], context=context)
+ for dep_mod in mod_dep_obj.browse(cr, uid, depends_mod_ids):
+ if dep_mod.state in ('unknown','uninstalled'):
+ unmet_packages.append(dep_mod.name)
+ if len(unmet_packages):
+ raise osv.except_osv(_('Unmet dependency !'), _('Following modules are not installed or unknown: %s') % ('\n\n' + '\n'.join(unmet_packages)))
+ mod_obj.download(cr, uid, ids, context=context)
+ cr.commit()
+ _db, pool = pooler.restart_pool(cr.dbname, update_module=True)
+
+ data_obj = self.pool.get('ir.model.data')
+ id2 = data_obj._get_id(cr, uid, 'base', 'view_base_module_upgrade_install')
+ if id2:
+ id2 = data_obj.browse(cr, uid, id2, context=context).res_id
+ return {
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'base.module.upgrade',
+ 'views': [(id2, 'form')],
+ 'view_id': False,
+ 'type': 'ir.actions.act_window',
+ 'target': 'new',
+ 'nodestroy':True,
+ }
+
def button_install(self, cr, uid, ids, context=None):
- return self.state_update(cr, uid, ids, 'to install', ['uninstalled'], context)
+ self.state_update(cr, uid, ids, 'to install', ['uninstalled'], context)
+ res = self.upgrade(cr, uid, ids, context=context)
+ return res
+
def button_install_cancel(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'uninstalled', 'demo':False})
@@ -305,49 +340,41 @@
res = cr.fetchall()
if res:
raise orm.except_orm(_('Error'), _('Some installed modules depend on the module you plan to Uninstall :\n %s') % '\n'.join(map(lambda x: '\t%s: %s' % (x[0], x[1]), res)))
+
self.write(cr, uid, ids, {'state': 'to remove'})
+ self.upgrade(cr, uid, ids, context=context)
return True
def button_uninstall_cancel(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'installed'})
return True
+
def button_upgrade(self, cr, uid, ids, context=None):
depobj = self.pool.get('ir.module.module.dependency')
todo = self.browse(cr, uid, ids, context=context)
self.update_list(cr, uid)
-
i = 0
while i<len(todo):
mod = todo[i]
i += 1
- if mod.state not in ('installed','to upgrade'):
- raise orm.except_orm(_('Error'),
- _("Can not upgrade module '%s'. It is not installed.") % (mod.name,))
- self.check_external_dependencies(mod.name, 'to upgrade')
- iids = depobj.search(cr, uid, [('name', '=', mod.name)], context=context)
- for dep in depobj.browse(cr, uid, iids, context=context):
- if dep.module_id.state=='installed' and dep.module_id not in todo:
- todo.append(dep.module_id)
-
ids = map(lambda x: x.id, todo)
self.write(cr, uid, ids, {'state':'to upgrade'}, context=context)
-
to_install = []
for mod in todo:
for dep in mod.dependencies_id:
if dep.state == 'unknown':
raise orm.except_orm(_('Error'), _('You try to upgrade a module that depends on the module: %s.\nBut this module is not available in your system.') % (dep.name,))
- if dep.state == 'uninstalled':
+ if dep.state == 'installed':
ids2 = self.search(cr, uid, [('name','=',dep.name)])
to_install.extend(ids2)
-
- self.button_install(cr, uid, to_install, context=context)
- return True
+ res = self.upgrade(cr, uid, ids, context=context)
+ return res
def button_upgrade_cancel(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'installed'})
return True
+
def button_update_translations(self, cr, uid, ids, context=None):
self.update_translations(cr, uid, ids)
return True
@@ -383,7 +410,7 @@
updated_values = {}
for key in values:
old = getattr(mod, key)
- updated = isinstance(values[key], basestring) and tools.ustr(values[key]) or values[key]
+ updated = isinstance(values[key], basestring) and tools.ustr(values[key]) or values[key]
if not old == updated:
updated_values[key] = values[key]
if terp.get('installable', True) and mod.state == 'uninstallable':
=== modified file 'openerp/addons/base/module/module_view.xml'
--- openerp/addons/base/module/module_view.xml 2011-01-04 10:18:47 +0000
+++ openerp/addons/base/module/module_view.xml 2011-03-14 09:40:11 +0000
@@ -112,7 +112,7 @@
<newline/>
<field name="state" readonly="1" select="1"/>
<group col="6" colspan="2">
- <button name="button_install" states="uninstalled" string="Schedule for Installation" icon="terp-gtk-jump-to-ltr" type="object"/>
+ <button name="button_install" states="uninstalled" string="Install" icon="terp-gtk-jump-to-ltr" type="object"/>
<button name="button_install_cancel" states="to install" string="Cancel Install" icon="gtk-cancel" type="object"/>
<button name="button_uninstall" states="installed" string="Uninstall (beta)" icon="terp-dialog-close" type="object"/>
<button name="button_uninstall_cancel" states="to remove" string="Cancel Uninstall" icon="gtk-cancel" type="object"/>
=== modified file 'openerp/addons/base/module/wizard/base_module_configuration.py'
--- openerp/addons/base/module/wizard/base_module_configuration.py 2010-10-10 19:33:54 +0000
+++ openerp/addons/base/module/wizard/base_module_configuration.py 2011-03-14 09:40:11 +0000
@@ -27,7 +27,7 @@
_name = "base.module.configuration"
def start(self, cr, uid, ids, context=None):
- todo_ids = self.pool.get('ir.actions.todo').search(cr, uid, ['|', '|', ('restart','=','always'), ('state', '=', 'open'), '&', ('state', '=', 'skip'), ('restart', '=', 'onskip')])
+ todo_ids = self.pool.get('ir.actions.todo').search(cr, uid, ['|', '|', ('restart','=','always'), ('state', '=', 'open'), '&', ('state', '=', 'skip'), ('restart', '=', 'on_trigger')])
if not todo_ids:
# When there is no wizard todo it will display message
data_obj = self.pool.get('ir.model.data')
=== modified file 'openerp/addons/base/module/wizard/base_module_configuration_view.xml'
--- openerp/addons/base/module/wizard/base_module_configuration_view.xml 2011-01-17 16:58:40 +0000
+++ openerp/addons/base/module/wizard/base_module_configuration_view.xml 2011-03-14 09:40:11 +0000
@@ -24,7 +24,7 @@
<field name="code">action = obj.start()</field>
</record>
- <menuitem name="Reconfigure"
+ <menuitem name="Add More Features"
action="action_start_configurator"
id="menu_view_base_module_configuration" parent="base.menu_config"
type="server" icon="STOCK_EXECUTE" sequence="100" />
=== modified file 'openerp/addons/base/module/wizard/base_module_upgrade.py'
--- openerp/addons/base/module/wizard/base_module_upgrade.py 2011-01-03 12:34:56 +0000
+++ openerp/addons/base/module/wizard/base_module_upgrade.py 2011-03-14 09:40:11 +0000
@@ -19,7 +19,6 @@
#
##############################################################################
-import pooler
from osv import osv, fields
from tools.translate import _
@@ -81,36 +80,6 @@
res = mod_obj.read(cr, uid, ids, ['name','state'], context)
return {'module_info': '\n'.join(map(lambda x: x['name']+' : '+x['state'], res))}
- def upgrade_module(self, cr, uid, ids, context=None):
- mod_obj = self.pool.get('ir.module.module')
- ids = mod_obj.search(cr, uid, [('state', 'in', ['to upgrade', 'to remove', 'to install'])])
- unmet_packages = []
- mod_dep_obj = self.pool.get('ir.module.module.dependency')
- for mod in mod_obj.browse(cr, uid, ids):
- depends_mod_ids = mod_dep_obj.search(cr, uid, [('module_id', '=', mod.id)])
- for dep_mod in mod_dep_obj.browse(cr, uid, depends_mod_ids):
- if dep_mod.state in ('unknown','uninstalled'):
- unmet_packages.append(dep_mod.name)
- if len(unmet_packages):
- raise osv.except_osv(_('Unmet dependency !'), _('Following modules are not installed or unknown: %s') % ('\n\n' + '\n'.join(unmet_packages)))
- mod_obj.download(cr, uid, ids, context=context)
- cr.commit()
- _db, pool = pooler.restart_pool(cr.dbname, update_module=True)
-
- data_obj = pool.get('ir.model.data')
- id2 = data_obj._get_id(cr, uid, 'base', 'view_base_module_upgrade_install')
- if id2:
- id2 = data_obj.browse(cr, uid, id2, context=context).res_id
-
- return {
- 'view_type': 'form',
- 'view_mode': 'form',
- 'res_model': 'base.module.upgrade',
- 'views': [(id2, 'form')],
- 'view_id': False,
- 'type': 'ir.actions.act_window',
- 'target': 'new',
- }
def config(self, cr, uid, ids, context=None):
return self.pool.get('res.config').next(cr, uid, [], context=context)
=== modified file 'openerp/addons/base/module/wizard/base_module_upgrade_view.xml'
--- openerp/addons/base/module/wizard/base_module_upgrade_view.xml 2010-10-21 15:42:03 +0000
+++ openerp/addons/base/module/wizard/base_module_upgrade_view.xml 2011-03-14 09:40:11 +0000
@@ -30,18 +30,6 @@
<field name="target">new</field>
</record>
- <menuitem
- name="Apply Scheduled Upgrades"
- action="action_view_base_module_upgrade"
- id="menu_view_base_module_upgrade"
- parent="menu_management"
- sequence="3"/>
-
- <act_window id="action_view_base_module_upgrade_window"
- key2="client_action_multi" name="Apply Scheduled Upgrades"
- res_model="base.module.upgrade" src_model="ir.module.module"
- view_mode="form" target="new" view_type="form" />
-
<record id="view_base_module_upgrade_install" model="ir.ui.view">
<field name="name">Module Upgrade Install</field>
<field name="model">base.module.upgrade</field>
@@ -71,4 +59,4 @@
</record>
</data>
-</openerp>
\ No newline at end of file
+</openerp>
=== modified file 'openerp/addons/base/res/partner/partner_view.xml'
--- openerp/addons/base/res/partner/partner_view.xml 2011-01-17 16:58:40 +0000
+++ openerp/addons/base/res/partner/partner_view.xml 2011-03-14 09:40:11 +0000
@@ -3,7 +3,9 @@
<data>
<menuitem icon="terp-partner" id="menu_base_partner" name="Sales" sequence="0"
web_icon="data/sales.png"
- web_icon_hover="data/sales-hover.png"/>
+ web_icon_hover="data/sales-hover.png"
+ groups="base.group_sale_salesman"/>
+
<menuitem id="menu_address_book" name="Address Book" parent="menu_base_partner" sequence="2"/>
=== modified file 'openerp/addons/base/res/res_config.py'
--- openerp/addons/base/res/res_config.py 2011-02-03 23:00:23 +0000
+++ openerp/addons/base/res/res_config.py 2011-03-14 09:40:11 +0000
@@ -120,7 +120,7 @@
def start(self, cr, uid, ids, context=None):
ids2 = self.pool.get('ir.actions.todo').search(cr, uid, [], context=context)
for todo in self.pool.get('ir.actions.todo').browse(cr, uid, ids2, context=context):
- if (todo.restart=='always') or (todo.restart=='onskip' and (todo.state in ('skip','cancel'))):
+ if (todo.restart=='always'):
todo.write({'state':'open'})
return self.next(cr, uid, ids, context)
@@ -355,35 +355,6 @@
return (base | hooks_results | additionals) - set(
map(attrgetter('name'), self._already_installed(cr, uid, context)))
- def default_get(self, cr, uid, fields_list, context=None):
- ''' If an addon is already installed, check it by default
- '''
- defaults = super(res_config_installer, self).default_get(
- cr, uid, fields_list, context=context)
-
- return dict(defaults,
- **dict.fromkeys(
- map(attrgetter('name'),
- self._already_installed(cr, uid, context=context)),
- True))
-
- def fields_get(self, cr, uid, fields=None, context=None, write_access=True):
- """ If an addon is already installed, set it to readonly as
- res.config.installer doesn't handle uninstallations of already
- installed addons
- """
- fields = super(res_config_installer, self).fields_get(
- cr, uid, fields, context, write_access)
-
- for module in self._already_installed(cr, uid, context=context):
- if module.name not in fields:
- continue
- fields[module.name].update(
- readonly=True,
- help= ustr(fields[module.name].get('help', '')) +
- _('\n\nThis addon is already installed on your system'))
- return fields
-
def execute(self, cr, uid, ids, context=None):
modules = self.pool.get('ir.module.module')
to_install = list(self.modules_to_install(
=== modified file 'openerp/addons/base/security/base_security.xml'
--- openerp/addons/base/security/base_security.xml 2010-12-27 12:59:11 +0000
+++ openerp/addons/base/security/base_security.xml 2011-03-14 09:40:11 +0000
@@ -35,6 +35,11 @@
<record id="group_sale_salesman" model="res.groups">
<field name="name">Sales / User</field>
</record>
+
+ <record id="group_sale_salesman" model="res.groups">
+ <field eval="[(3,1)]" name="users"/>
+ </record>
+
<!-- Set accesses to menu -->
<record model="ir.ui.menu" id="base.menu_administration">
<field name="groups_id" eval="[(6,0, [ref('group_system'), ref('group_erp_manager')])]"/>
Follow ups