diff --git a/bin/addons/base/ir/ir.xml b/bin/addons/base/ir/ir.xml index 2949107ccff..38e592fa785 100644 --- a/bin/addons/base/ir/ir.xml +++ b/bin/addons/base/ir/ir.xml @@ -655,27 +655,37 @@ form
- + - - - - + + + + + + + + + + + + + + - + diff --git a/bin/addons/base/ir/ir_attachment.py b/bin/addons/base/ir/ir_attachment.py index 981c6091ceb..abba9222d25 100644 --- a/bin/addons/base/ir/ir_attachment.py +++ b/bin/addons/base/ir/ir_attachment.py @@ -94,25 +94,42 @@ class ir_attachment(osv.osv): if model_object and res_id: model_pool = self.pool.get(model_object) res = model_pool.name_get(cr,uid,[res_id],context) - data[attachment.id] = res[0][1] + data[attachment.id] = (res and res[0][1]) or False else: data[attachment.id] = False return data _name = 'ir.attachment' _columns = { - 'name': fields.char('Attachment Name',size=64, required=True), + 'name': fields.char('Attachment Name',size=256, required=True), 'datas': fields.binary('Data'), - 'datas_fname': fields.char('Filename',size=64), + 'datas_fname': fields.char('Filename',size=256), 'description': fields.text('Description'), - # Not required due to the document module ! - 'res_name': fields.function(_name_get_resname, type='char', string='Resource Name', method=True), - 'res_model': fields.char('Resource Object',size=64, readonly=True), - 'res_id': fields.integer('Resource ID', readonly=True), - 'link': fields.char('Link', size=256), + 'res_name': fields.function(_name_get_resname, type='char', + string='Resource Name', method=True), + 'res_model': fields.char('Resource Object',size=64, readonly=True, + help="The database object this attachment will be attached to"), + 'res_id': fields.integer('Resource ID', readonly=True, + help="The record id this is attached to"), + 'url': fields.char('Url', size=512, oldname="link"), + 'type': fields.selection( + [ ('url','URL'), ('binary','Binary'), ], + 'Type', help="Binary File or external URL", required=True), + 'create_date': fields.datetime('Date Created', readonly=True), 'create_uid': fields.many2one('res.users', 'Creator', readonly=True), } + + _defaults = { + 'type': 'binary', + } + + def _auto_init(self, cr, context=None): + super(ir_attachment, self)._auto_init(cr, context) + cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = %s', ('ir_attachment_res_idx',)) + if not cr.fetchone(): + cr.execute('CREATE INDEX ir_attachment_res_idx ON ir_attachment (res_model, res_id)') + cr.commit() ir_attachment() diff --git a/bin/service/http_server.py b/bin/service/http_server.py index 3891d32eb78..fe27b3c4e1e 100644 --- a/bin/service/http_server.py +++ b/bin/service/http_server.py @@ -285,11 +285,11 @@ class OerpAuthProxy(AuthProxy): self.provider.log("Failing authorization after 5 requests w/o password") raise AuthRejectedExc("Authorization failed.") self.auth_tries += 1 - raise AuthRequiredExc(atype = 'Basic', realm=self.provider.realm) + raise AuthRequiredExc(atype='Basic', realm=self.provider.realm) import security class OpenERPAuthProvider(AuthProvider): - def __init__(self,realm = 'OpenERP User'): + def __init__(self,realm='OpenERP User'): self.realm = realm def setupAuth(self, multi, handler):