diff --git a/bin/addons/base/__terp__.py b/bin/addons/base/__terp__.py index 2e42b5a08e3..d273c55a8d4 100644 --- a/bin/addons/base/__terp__.py +++ b/bin/addons/base/__terp__.py @@ -42,6 +42,7 @@ 'ir/workflow/workflow_view.xml', 'module/module_wizard.xml', 'module/module_view.xml', + 'module/module_web_view.xml', 'module/module_data.xml', 'module/module_report.xml', 'res/res_request_view.xml', 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_web.py b/bin/addons/base/module/module_web.py new file mode 100644 index 00000000000..ca4463f620e --- /dev/null +++ b/bin/addons/base/module/module_web.py @@ -0,0 +1,45 @@ +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), + '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..d1348aa89e2 --- /dev/null +++ b/bin/addons/base/module/module_web_view.xml @@ -0,0 +1,28 @@ + + + + + + ir.module.web.tree + ir.module.web + tree + + + + + + +