[IMP] improved ir_module_web.
[odoo/odoo.git] / bin / addons / base / module / module_web.py
1 from osv import fields, osv, orm
2
3 class module_web(osv.osv):
4     _name = "ir.module.web"
5     _description = "Web Module"
6     
7     _columns = {
8         'name': fields.char("Name", size=128, readonly=True, required=True),
9         'module': fields.char("Module", size=128, readonly=True, required=True),
10         'description': fields.text("Description", readonly=True, translate=True),
11         'author': fields.char("Author", size=128, readonly=True),
12         'website': fields.char("Website", size=256, readonly=True),
13         'state': fields.selection([
14             ('uninstallable','Uninstallable'),
15             ('uninstalled','Not Installed'),
16             ('installed','Installed')
17             ], string='State', readonly=True)
18     }
19     
20     _defaults = {
21         'state': lambda *a: 'uninstalled',
22     }
23     _order = 'name'
24
25     _sql_constraints = [
26         ('name_uniq', 'unique (name)', 'The name of the module must be unique !'),
27     ]
28     
29     def update_module_list(self, cr, uid, modules, context={}):
30         
31         for module in modules:
32             mod_name = module['name']
33             ids = self.search(cr, uid, [('name','=',mod_name)])
34             if ids:
35                 self.write(cr, uid, ids, module)
36             else:
37                 self.create(cr, uid, module)
38                 
39     def button_install(self, cr, uid, ids, context={}):
40         return self.write(cr, uid, ids, {'state': 'installed'}, context)
41     
42     def button_uninstall(self, cr, uid, ids, context={}):
43         return self.write(cr, uid, ids, {'state': 'uninstalled'}, context)
44                 
45 module_web()
46