[IMP] ir.qweb: cache the asset filename to improve speed
gain: 50% time per asset
This commit is contained in:
@@ -92,16 +92,16 @@ class AssetsBundle(object):
|
||||
self.remains = remains
|
||||
for f in files:
|
||||
if f['atype'] == 'text/sass':
|
||||
self.stylesheets.append(SassStylesheetAsset(self, url=f['url'], inline=f['content'], media=f['media']))
|
||||
self.stylesheets.append(SassStylesheetAsset(self, url=f['url'], filename=f['filename'], inline=f['content'], media=f['media']))
|
||||
elif f['atype'] == 'text/less':
|
||||
self.stylesheets.append(LessStylesheetAsset(self, url=f['url'], inline=f['content'], media=f['media']))
|
||||
self.stylesheets.append(LessStylesheetAsset(self, url=f['url'], filename=f['filename'], inline=f['content'], media=f['media']))
|
||||
elif f['atype'] == 'text/css':
|
||||
self.stylesheets.append(StylesheetAsset(self, url=f['url'], inline=f['content'], media=f['media']))
|
||||
self.stylesheets.append(StylesheetAsset(self, url=f['url'], filename=f['filename'], inline=f['content'], media=f['media']))
|
||||
elif f['atype'] == 'text/javascript':
|
||||
self.javascripts.append(JavascriptAsset(self, url=f['url'], inline=f['content']))
|
||||
self.javascripts.append(JavascriptAsset(self, url=f['url'], filename=f['filename'], inline=f['content']))
|
||||
|
||||
def to_html(self, sep=None, css=True, js=True, debug=False, async=False, values=None):
|
||||
url_for = values and values.get('url_for', lambda url: url) or (lambda url: url)
|
||||
url_for = values and values.get('url_for') or (lambda url: url)
|
||||
if sep is None:
|
||||
sep = '\n '
|
||||
response = []
|
||||
@@ -390,9 +390,10 @@ class WebAsset(object):
|
||||
_ir_attach = None
|
||||
_id = None
|
||||
|
||||
def __init__(self, bundle, inline=None, url=None):
|
||||
def __init__(self, bundle, inline=None, url=None, filename=None):
|
||||
self.bundle = bundle
|
||||
self.inline = inline
|
||||
self._filename = filename
|
||||
self.url = url
|
||||
self.html_url_args = url
|
||||
if not inline and not url:
|
||||
|
||||
@@ -11,6 +11,7 @@ from lxml import etree
|
||||
from openerp import api, models, tools
|
||||
from openerp.tools import safe_eval
|
||||
from openerp.addons.web.http import request
|
||||
from odoo.modules.module import get_resource_path
|
||||
import json
|
||||
|
||||
import logging
|
||||
@@ -175,6 +176,7 @@ class ir_QWeb(models.AbstractModel, QWeb):
|
||||
remains.append(el)
|
||||
elif isinstance(el, html.HtmlElement):
|
||||
href = el.get('href', '')
|
||||
src = el.get('src', '')
|
||||
atype = el.get('type')
|
||||
media = el.get('media')
|
||||
|
||||
@@ -186,10 +188,17 @@ class ir_QWeb(models.AbstractModel, QWeb):
|
||||
atype = 'text/less'
|
||||
if atype not in ('text/less', 'text/sass'):
|
||||
atype = 'text/css'
|
||||
files.append({'atype': atype, 'url': href, 'content': el.text, 'media': media})
|
||||
path = filter(None, href.split('/'))
|
||||
filename = get_resource_path(*path)
|
||||
files.append({'atype': atype, 'url': href, 'filename': filename, 'content': el.text, 'media': media})
|
||||
elif el.tag == 'script':
|
||||
atype = 'text/javascript'
|
||||
files.append({'atype': atype, 'url': el.get('src', ''), 'content': el.text, 'media': media})
|
||||
if src:
|
||||
path = filter(None, src.split('/'))
|
||||
filename = get_resource_path(*path)
|
||||
else:
|
||||
filename = None
|
||||
files.append({'atype': atype, 'url': src, 'filename': filename, 'content': el.text, 'media': media})
|
||||
else:
|
||||
remains.append(html.tostring(el))
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user