return self.pool.get('ir.actions.act_window').for_xml_id(
cr, uid, 'base', 'action_attachment', context=context)
+ def invalidate_bundle(self, cr, uid, type='%', xmlid=None, context=None):
+ assert type in ('%', 'css', 'js'), "Unhandled bundle type"
+ xmlid = '%' if xmlid is None else xmlid + '%'
+ domain = [('url', '=like', '/web/%s/%s/%%' % (type, xmlid))]
+ ids = self.search(cr, uid, domain, context=context)
+ if ids:
+ self.unlink(cr, uid, ids, context=context)
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
def set_cache(self, type, content):
ira = self.registry['ir.attachment']
- url_prefix = '/web/%s/%s/' % (type, self.xmlid)
- # Invalidate previous caches
- oids = ira.search(self.cr, self.uid, [('url', '=like', url_prefix + '%')], context=self.context)
- if oids:
- ira.unlink(self.cr, openerp.SUPERUSER_ID, oids, context=self.context)
- url = url_prefix + self.version
+ ira.invalidate_bundle(self.cr, openerp.SUPERUSER_ID, type=type, xmlid=self.xmlid)
+ url = '/web/%s/%s/%s' % (type, self.xmlid, self.version)
ira.create(self.cr, openerp.SUPERUSER_ID, dict(
datas=content.encode('utf8').encode('base64'),
type='binary',