[FIX] website: improve performance for attachment creation
website introduces two new stored function fields, which depend on the attachment data The thing is, these two fields are pertinent for website attachments only Therefore, we avoid to read the datas field when the attachment is not a website attachment(when not needed), as this is the most costly field to read
This commit is contained in:
parent
20a8b0e66a
commit
a3e578068e
|
@ -684,12 +684,12 @@ class ir_attachment(osv.osv):
|
|||
result[attach.id] = self.pool['website'].image_url(cr, uid, attach, 'datas')
|
||||
return result
|
||||
def _datas_checksum(self, cr, uid, ids, name, arg, context=None):
|
||||
return dict(
|
||||
(attach['id'], self._compute_checksum(attach))
|
||||
for attach in self.read(
|
||||
cr, uid, ids, ['res_model', 'res_id', 'type', 'datas'],
|
||||
context=context)
|
||||
)
|
||||
result = dict.fromkeys(ids, False)
|
||||
attachments = self.read(cr, uid, ids, ['type'], context=context)
|
||||
view_attachment_ids = [attachment['id'] for attachment in attachments if attachment['type'] == 'ir.ui.view']
|
||||
for attach in self.read(cr, uid, view_attachment_ids, ['res_model', 'res_id', 'type', 'datas'], context=context):
|
||||
result[attach['id']] = self._compute_checksum(attach)
|
||||
return result
|
||||
|
||||
def _compute_checksum(self, attachment_dict):
|
||||
if attachment_dict.get('res_model') == 'ir.ui.view'\
|
||||
|
@ -705,7 +705,7 @@ class ir_attachment(osv.osv):
|
|||
return result
|
||||
|
||||
for record in self.browse(cr, uid, ids, context=context):
|
||||
if not record.datas: continue
|
||||
if record.type != 'ir.ui.view' or not record.datas: continue
|
||||
try:
|
||||
result[record.id] = openerp.tools.image_resize_image_big(record.datas)
|
||||
except IOError: # apparently the error PIL.Image.open raises
|
||||
|
|
Loading…
Reference in New Issue