← Back to team overview

openerp-dev-web team mailing list archive

[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'),'&amp;',('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'),'&amp;',('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