diff options
| author | Raphaël Valyi <rvalyi@gmail.com> | 2010-02-01 11:03:34 -0200 |
|---|---|---|
| committer | Raphaël Valyi <rvalyi@gmail.com> | 2010-02-01 11:03:34 -0200 |
| commit | 48e935e6a2bf4ae3f7bb333c7d25d8a6a37c20d1 (patch) | |
| tree | 90eedcd5eea138fe1934857b25c96ea5acebc31b /bin/addons/base/module | |
| parent | fe3562a57bd6b2379d4f4cdb48d72535432a2039 (diff) | |
| parent | f99cf9a615d8a4ebb2857440acecd4fac0ab9543 (diff) | |
[MERGE] from trunk
bzr revid: rvalyi@gmail.com-20100201130334-mgd708bztw2uxya9
Diffstat (limited to 'bin/addons/base/module')
| -rw-r--r-- | bin/addons/base/module/__init__.py | 1 | ||||
| -rw-r--r-- | bin/addons/base/module/module.py | 10 | ||||
| -rw-r--r-- | bin/addons/base/module/module_view.xml | 2 | ||||
| -rw-r--r-- | bin/addons/base/module/module_web.py | 46 | ||||
| -rw-r--r-- | bin/addons/base/module/module_web_view.xml | 29 | ||||
| -rw-r--r-- | bin/addons/base/module/wizard/wizard_module_upgrade.py | 18 |
6 files changed, 90 insertions, 16 deletions
diff --git a/bin/addons/base/module/__init__.py b/bin/addons/base/module/__init__.py index b07332b81d4..aa775e29c1c 100644 --- a/bin/addons/base/module/__init__.py +++ b/bin/addons/base/module/__init__.py @@ -20,6 +20,7 @@ ############################################################################## import module +import module_web import wizard import report diff --git a/bin/addons/base/module/module.py b/bin/addons/base/module/module.py index 49b6e7b6f2d..a6967773ac2 100644 --- a/bin/addons/base/module/module.py +++ b/bin/addons/base/module/module.py @@ -196,10 +196,18 @@ class module(osv.osv): return True if isinstance(ids, (int, long)): ids = [ids] - for mod in self.read(cr, uid, ids, ['state'], context): + mod_names = [] + for mod in self.read(cr, uid, ids, ['state','name'], context): if mod['state'] in ('installed', 'to upgrade', 'to remove', 'to install'): raise orm.except_orm(_('Error'), _('You try to remove a module that is installed or will be installed')) + mod_names.append(mod['name']) + #Removing the entry from ir_model_data + ids_meta = self.pool.get('ir.model.data').search(cr, uid, [('name', '=', 'module_meta_information'), ('module', 'in', mod_names)]) + + if ids_meta: + self.pool.get('ir.model.data').unlink(cr, uid, ids_meta, context) + return super(module, self).unlink(cr, uid, ids, context=context) def state_update(self, cr, uid, ids, newstate, states_to_update, context={}, level=100): diff --git a/bin/addons/base/module/module_view.xml b/bin/addons/base/module/module_view.xml index aa0638ff729..33a27cd1158 100644 --- a/bin/addons/base/module/module_view.xml +++ b/bin/addons/base/module/module_view.xml @@ -113,7 +113,7 @@ <field name="model">ir.module.module</field> <field name="type">tree</field> <field name="arch" type="xml"> - <tree colors="blue:state=='to upgrade' or state=='to install';red:state=='uninstalled';grey:state=='uninstallable'" string="Modules"> + <tree colors="blue:state=='to upgrade' or state=='to install';red:state=='uninstalled';grey:state=='uninstallable';black:state=='installed'" string="Modules"> <field name="name"/> <field name="shortdesc"/> <field name="author"/> diff --git a/bin/addons/base/module/module_web.py b/bin/addons/base/module/module_web.py new file mode 100644 index 00000000000..8f65dc3960d --- /dev/null +++ b/bin/addons/base/module/module_web.py @@ -0,0 +1,46 @@ +from osv import fields, osv, orm + +class module_web(osv.osv): + _name = "ir.module.web" + _description = "Web Module" + + _columns = { + 'name': fields.char("Name", size=128, readonly=True, required=True), + 'module': fields.char("Module", size=128, readonly=True, required=True), + 'description': fields.text("Description", readonly=True, translate=True), + 'author': fields.char("Author", size=128, readonly=True), + 'website': fields.char("Website", size=256, readonly=True), + 'state': fields.selection([ + ('uninstallable','Uninstallable'), + ('uninstalled','Not Installed'), + ('installed','Installed') + ], string='State', readonly=True) + } + + _defaults = { + 'state': lambda *a: 'uninstalled', + } + _order = 'name' + + _sql_constraints = [ + ('name_uniq', 'unique (name)', 'The name of the module must be unique !'), + ] + + def update_module_list(self, cr, uid, modules, context={}): + + for module in modules: + mod_name = module['name'] + ids = self.search(cr, uid, [('name','=',mod_name)]) + if ids: + self.write(cr, uid, ids, module) + else: + self.create(cr, uid, module) + + def button_install(self, cr, uid, ids, context={}): + return self.write(cr, uid, ids, {'state': 'installed'}, context) + + def button_uninstall(self, cr, uid, ids, context={}): + return self.write(cr, uid, ids, {'state': 'uninstalled'}, context) + +module_web() + diff --git a/bin/addons/base/module/module_web_view.xml b/bin/addons/base/module/module_web_view.xml new file mode 100644 index 00000000000..22a5021a543 --- /dev/null +++ b/bin/addons/base/module/module_web_view.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<openerp> + <data> + + <record id="module_web_tree" model="ir.ui.view"> + <field name="name">ir.module.web.tree</field> + <field name="model">ir.module.web</field> + <field name="type">tree</field> + <field name="arch" type="xml"> + <tree> + <field name="name"/> + <field name="module"/> + <field name="description"/> + <field name="author"/> + <field name="state"/> + <button name="button_install" string="Install" type="object" states="uninstalled" context="{'reload': 1}"/> + <button name="button_uninstall" string="Uninstall" type="object" states="installed" context="{'reload': 1}"/> + </tree> + </field> + </record> + + <record id="open_module_web_list" model="ir.actions.url"> + <field name="name">web_module_list</field> + <field name="url">/modules</field> + </record> + <menuitem name="Web Modules" action="open_module_web_list" id="open_module_web_list_url" type="url" parent="base.menu_management"/> + + </data> +</openerp> diff --git a/bin/addons/base/module/wizard/wizard_module_upgrade.py b/bin/addons/base/module/wizard/wizard_module_upgrade.py index 051d6ca00c4..40d100fe2e0 100644 --- a/bin/addons/base/module/wizard/wizard_module_upgrade.py +++ b/bin/addons/base/module/wizard/wizard_module_upgrade.py @@ -92,13 +92,8 @@ class wizard_info_get(wizard.interface): return {} def _config(self, cr, uid, data, context=None): - return { - 'view_type': 'form', - "view_mode": 'form', - 'res_model': 'ir.actions.configuration.wizard', - 'type': 'ir.actions.act_window', - 'target':'new', - } + return pooler.get_pool(cr.dbname).get('res.config')\ + .next(cr, uid, [], context=context) states = { 'init': { @@ -183,13 +178,8 @@ class wizard_info_get_simple(wizard.interface): return {} def _config(self, cr, uid, data, context=None): - return { - 'view_type': 'form', - "view_mode": 'form', - 'res_model': 'ir.actions.configuration.wizard', - 'type': 'ir.actions.act_window', - 'target':'new', - } + return pooler.get_pool(cr.dbname).get('res.config')\ + .next(cr, uid, [], context=context) states = { 'init': { |
