QWeb cleanups 1 sql query less per page
bzr revid: jojo_le_bricolo-20140119174642-q2ix8p27ospjkuf4
This commit is contained in:
parent
a571dd0849
commit
03606aa347
|
@ -29,6 +29,7 @@ logger = logging.getLogger(__name__)
|
|||
NOPE = object()
|
||||
# Completely arbitrary limits
|
||||
MAX_IMAGE_WIDTH, MAX_IMAGE_HEIGHT = IMAGE_LIMITS = (1024, 768)
|
||||
|
||||
class Website(openerp.addons.web.controllers.main.Home):
|
||||
@website.route('/', type='http', auth="public", multilang=True)
|
||||
def index(self, **kw):
|
||||
|
@ -90,13 +91,21 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
values = {
|
||||
'path': page,
|
||||
}
|
||||
# allow shortcut for /page/<website_xml_id>
|
||||
if '.' not in page:
|
||||
page = 'website.%s' % page
|
||||
|
||||
try:
|
||||
request.website.get_template(page)
|
||||
except (Exception), e:
|
||||
module, xmlid = page.split('.', 1)
|
||||
model, view_id = request.registry["ir.model.data"].get_object_reference(request.cr, request.uid, module, xmlid)
|
||||
values['main_object'] = request.registry["ir.ui.view"].browse(request.cr, request.uid, view_id, context=request.context)
|
||||
except ValueError, e:
|
||||
# page not found
|
||||
if request.context['editable']:
|
||||
page = 'website.page_404'
|
||||
else:
|
||||
return request.registry['ir.http']._handle_exception(e, 404)
|
||||
|
||||
return request.website.render(page, values)
|
||||
|
||||
@website.route('/website/reset_templates', type='http', auth='user', methods=['POST'])
|
||||
|
|
|
@ -101,7 +101,7 @@ class website(osv.osv):
|
|||
def _get_menu_website(self, cr, uid, ids, context=None):
|
||||
# IF a menu is changed, update all websites
|
||||
return self.search(cr, uid, [], context=context)
|
||||
|
||||
|
||||
def _get_menu(self, cr, uid, ids, name, arg, context=None):
|
||||
root_domain = [('parent_id', '=', False)]
|
||||
menus = self.pool.get('website.menu').search(cr, uid, root_domain, order='id', context=context)
|
||||
|
@ -178,9 +178,7 @@ class website(osv.osv):
|
|||
page = self.page_for_name(cr, uid, ids, name, module=module, context=context)
|
||||
|
||||
try:
|
||||
return self.get_template(
|
||||
cr, uid, ids, template=page, context=context
|
||||
).exists()
|
||||
self.pool["ir.model.data"].get_object_reference(cr, uid, module, name)
|
||||
except:
|
||||
return False
|
||||
|
||||
|
@ -193,6 +191,7 @@ class website(osv.osv):
|
|||
def _get_languages(self, cr, uid, id, context=None):
|
||||
website = self.browse(cr, uid, id)
|
||||
return [(lg.code, lg.name) for lg in website.language_ids]
|
||||
|
||||
def get_languages(self, cr, uid, ids, context=None):
|
||||
return self._get_languages(cr, uid, ids[0])
|
||||
|
||||
|
@ -218,28 +217,19 @@ class website(osv.osv):
|
|||
translatable=not is_master_lang,
|
||||
)
|
||||
|
||||
def get_template(self, cr, uid, ids, template, context=None):
|
||||
IMD = self.pool["ir.model.data"]
|
||||
try:
|
||||
module, xmlid = template.split('.', 1)
|
||||
model, id = IMD.get_object_reference(cr, uid, module, xmlid)
|
||||
except ValueError: # catches both unpack errors and gor errors
|
||||
module, xmlid = 'website', template
|
||||
model, id = IMD.get_object_reference(cr, uid, module, xmlid)
|
||||
return self.pool["ir.ui.view"].browse(cr, uid, id, context=context)
|
||||
|
||||
def _render(self, cr, uid, ids, template, values=None, context=None):
|
||||
user = self.pool.get("res.users")
|
||||
if not context:
|
||||
context = {}
|
||||
|
||||
qweb_context = context.copy()
|
||||
|
||||
# Take a context
|
||||
qweb_values = context.copy()
|
||||
# add some values
|
||||
if values:
|
||||
qweb_context.update(values)
|
||||
|
||||
qweb_context.update(
|
||||
request=request, # TODO maybe rename to _request to mark this attribute as unsafe
|
||||
qweb_values.update(values)
|
||||
# fill some defaults
|
||||
qweb_values.update(
|
||||
request=request,
|
||||
json=simplejson,
|
||||
website=request.website,
|
||||
url_for=url_for,
|
||||
|
@ -248,17 +238,12 @@ class website(osv.osv):
|
|||
user_id=user.browse(cr, uid, uid),
|
||||
quote_plus=quote_plus,
|
||||
)
|
||||
qweb_values.setdefault('editable', False)
|
||||
|
||||
context.update(
|
||||
inherit_branding=qweb_context.setdefault('editable', False),
|
||||
)
|
||||
# in edit mode ir.ui.view will tag nodes
|
||||
context['inherit_branding']=qweb_values['editable']
|
||||
|
||||
view = self.get_template(cr, uid, ids, template)
|
||||
|
||||
if 'main_object' not in qweb_context:
|
||||
qweb_context['main_object'] = view
|
||||
#context['debug'] = True
|
||||
result = view.render(qweb_context, engine='website.qweb', context=context)
|
||||
result = self.pool['ir.ui.view'].render(cr, uid, template, qweb_values, engine='website.qweb', context=context)
|
||||
return result
|
||||
|
||||
def render(self, cr, uid, ids, template, values=None, status_code=None, context=None):
|
||||
|
@ -513,7 +498,6 @@ class website(osv.osv):
|
|||
html += request.website._render(template, {'object_id': object_id})
|
||||
return html
|
||||
|
||||
|
||||
class website_menu(osv.osv):
|
||||
_name = "website.menu"
|
||||
_description = "Website Menu"
|
||||
|
@ -669,3 +653,5 @@ class SeoMetadata(osv.Model):
|
|||
'website_meta_description': fields.text("Website meta description", size=160, translate=True),
|
||||
'website_meta_keywords': fields.char("Website meta keywords", translate=True),
|
||||
}
|
||||
|
||||
# vim:et:
|
||||
|
|
Loading…
Reference in New Issue