An empty image URL permanently breaks a product
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Magento OpenERP Connector |
New
|
Undecided
|
Unassigned | ||
product-extra-addons |
New
|
Undecided
|
Unassigned |
Bug Description
When adding an image via URL to the product, if the URL is left empty (blank), the product is permanently broken.
Product -> Edit -> Images -> Create
1) Enter a title (eg "test")
2) Check the "Link" box
3) Click "Save & Close" without specifying a URL
4) Click "Save" product
5) Error popup (see below)
6) Click "Ok"
7) Change to the next record or otherwise leave the screen
8) Open the product again, Error popup (see below)
After this, the product can no longer be viewed, changed nor deleted. The product is permanently broken.
This URL field should probably be set to mandatory (Obligatory)
OpenERP Server Error
Client Traceback (most recent call last):
File "/opt/openerp/
response[
File "/opt/openerp/
return self.do_get(req, model, ids, fields)
File "/opt/openerp/
records = Model.read(ids, fields, req.session.
File "/opt/openerp/
args, kw)
File "/opt/openerp/
result = self.connector.
File "/opt/openerp/
raise xmlrpclib.
Server Traceback (most recent call last):
File "/opt/openerp/
return openerp.
File "/opt/openerp/
result = ExportService.
File "/opt/openerp/
res = fn(db, uid, *params)
File "/opt/openerp/
return self.execute(db, uid, obj, method, *args, **kw or {})
File "/opt/openerp/
return f(self, dbname, *args, **kwargs)
File "/opt/openerp/
res = self.execute_cr(cr, uid, obj, method, *args, **kw)
File "/opt/openerp/
return fct_src(cr, uid, model, method, *args)
File "/opt/openerp/
return getattr(object, method)(cr, uid, *args, **kw)
File "/opt/openerp/
result = self._read_flat(cr, user, select, fields, context, load)
File "/opt/openerp/
res2 = self._columns[
File "/opt/openerp/
result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
File "/opt/openerp/
res[id] = image.file
File "/opt/openerp/
return self[name]
File "/opt/openerp/
field_values = self._table.
File "/opt/openerp/
result = self._read_flat(cr, user, select, fields, context, load)
File "/opt/openerp/
res2 = self._columns[
File "/opt/openerp/
result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
File "/opt/openerp/
res[each] = self.get_image(cr, uid, each, context=context)
File "/opt/openerp/
(filename, header) = urllib.
File "/usr/lib/
return _urlopener.
File "/usr/lib/
url = unwrap(
File "/usr/lib/
url = url.strip()
AttributeError: 'bool' object has no attribute 'strip'
Doing the same procedure with an Invalid URL gives a different error, but similar end result: The product is permanently broken.
The URL should be mandatory and validated before permitting a "Save & New" or "Save & Close" of the Image screen.
OpenERP Server Error server/ openerp/ addons/ web/common/ http.py" , line 180, in dispatch "result" ] = method(controller, self, **self.params) server/ openerp/ addons/ web/controllers /main.py" , line 930, in get server/ openerp/ addons/ web/controllers /main.py" , line 952, in do_get eval_context( req.context) ) server/ openerp/ addons/ web/common/ openerplib/ main.py" , line 250, in proxy server/ openerp/ addons/ web/common/ openerplib/ main.py" , line 117, in proxy send(self. service_ name, method, *args) server/ openerp/ addons/ web/common/ http.py" , line 608, in send Fault(openerp. tools.exception _to_unicode( e), formatted_info)
Client Traceback (most recent call last):
File "/opt/openerp/
response[
File "/opt/openerp/
return self.do_get(req, model, ids, fields)
File "/opt/openerp/
records = Model.read(ids, fields, req.session.
File "/opt/openerp/
args, kw)
File "/opt/openerp/
result = self.connector.
File "/opt/openerp/
raise xmlrpclib.
Server Traceback (most recent call last): server/ openerp/ addons/ web/common/ http.py" , line 593, in send netsvc. dispatch_ rpc(service_ name, method, args) server/ openerp/ netsvc. py", line 360, in dispatch_rpc getService( service_ name).dispatch( method, params) server/ openerp/ service/ web_services. py", line 586, in dispatch server/ openerp/ osv/osv. py", line 167, in execute_kw server/ openerp/ osv/osv. py", line 121, in wrapper server/ openerp/ osv/osv. py", line 176, in execute server/ openerp/ addons/ audittrail/ audittrail. py", line 495, in execute_cr server/ openerp/ osv/osv. py", line 164, in execute_cr server/ openerp/ osv/orm. py", line 3416, in read server/ openerp/ osv/orm. py", line 3539, in _read_flat f].get( cr, self, ids, f, user, context=context, values=res) server/ openerp/ osv/fields. py", line 1129, in get server/ openerp/ addons/ product_ images_ olbs.zip/ product_ images_ olbs/product. py", line 67, in _get_main_image server/ openerp/ osv/orm. py", line 476, in __getattr__ server/ openerp/ osv/orm. py", line 391, in __getitem__ read(self. _cr, self._uid, ids, field_names, context= self._context, load="_ classic_ write")
File "/opt/openerp/
return openerp.
File "/opt/openerp/
result = ExportService.
File "/opt/openerp/
res = fn(db, uid, *params)
File "/opt/openerp/
return self.execute(db, uid, obj, method, *args, **kw or {})
File "/opt/openerp/
return f(self, dbname, *args, **kwargs)
File "/opt/openerp/
res = self.execute_cr(cr, uid, obj, method, *args, **kw)
File "/opt/openerp/
return fct_src(cr, uid, model, method, *args)
File "/opt/openerp/
return getattr(object, method)(cr, uid, *args, **kw)
File "/opt/openerp/
result = self._read_flat(cr, user, select, fields, context, load)
File "/opt/openerp/
res2 = self._columns[
File "/opt/openerp/
result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
File "/opt/openerp/
res[id] = image.file
File "/opt/openerp/
return self[name]
File "/opt/openerp/
field_values = self._table.
File "/opt/...