[IMP] refactor bundle ir.attachment cache invalidation
authorFabien Meghazi <fme@openerp.com>
Tue, 26 Aug 2014 12:55:48 +0000 (14:55 +0200)
committerFabien Meghazi <fme@openerp.com>
Wed, 27 Aug 2014 14:11:04 +0000 (16:11 +0200)
openerp/addons/base/ir/ir_attachment.py
openerp/addons/base/ir/ir_qweb.py

index de768d2..92c5a93 100644 (file)
@@ -330,4 +330,12 @@ class ir_attachment(osv.osv):
         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:
index 8116ef6..ca676f1 100644 (file)
@@ -1153,12 +1153,8 @@ class AssetsBundle(object):
 
     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',