summaryrefslogtreecommitdiff
path: root/bin/addons/base/module
diff options
context:
space:
mode:
authorRaphaël Valyi <rvalyi@gmail.com>2010-02-01 11:03:34 -0200
committerRaphaël Valyi <rvalyi@gmail.com>2010-02-01 11:03:34 -0200
commit48e935e6a2bf4ae3f7bb333c7d25d8a6a37c20d1 (patch)
tree90eedcd5eea138fe1934857b25c96ea5acebc31b /bin/addons/base/module
parentfe3562a57bd6b2379d4f4cdb48d72535432a2039 (diff)
parentf99cf9a615d8a4ebb2857440acecd4fac0ab9543 (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__.py1
-rw-r--r--bin/addons/base/module/module.py10
-rw-r--r--bin/addons/base/module/module_view.xml2
-rw-r--r--bin/addons/base/module/module_web.py46
-rw-r--r--bin/addons/base/module/module_web_view.xml29
-rw-r--r--bin/addons/base/module/wizard/wizard_module_upgrade.py18
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': {