diff options
| author | Jeremy Kersten <jke@odoo.com> | 2017-10-02 10:34:38 +0200 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2017-10-03 08:44:34 +0200 |
| commit | 436ad6efa4b774df8733271b17a5dac5291bec73 (patch) | |
| tree | 1bed3f12ea1cf64cf399f7f642f451214ac5d34d /addons | |
| parent | cde5b232e8a1170f4f7a1242f93edc021ebfeefc (diff) | |
[IMP] http_routing, website: split website code into website
This reverts partially commit ab2283ef83e66eda62e885672961445e0ddbf639.
This commit clean and clarify some code.
It also secure the call to specific page extension's template to avoid somehow
calling unexisting tempalte
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/http_routing/models/ir_http.py | 12 | ||||
| -rw-r--r-- | addons/website/controllers/main.py | 15 | ||||
| -rw-r--r-- | addons/website/models/ir_http.py | 18 | ||||
| -rw-r--r-- | addons/website/views/website_templates.xml | 2 |
4 files changed, 24 insertions, 23 deletions
diff --git a/addons/http_routing/models/ir_http.py b/addons/http_routing/models/ir_http.py index 1196d12d44f..c95d86509fd 100644 --- a/addons/http_routing/models/ir_http.py +++ b/addons/http_routing/models/ir_http.py @@ -29,6 +29,18 @@ odoo._geoip_resolver = None # Slug API # ------------------------------------------------------------ +def _guess_mimetype(ext=False, default='text/html'): + exts = { + '.css': 'text/css', + '.less': 'text/less', + '.js': 'text/javascript', + '.xml': 'text/xml', + '.csv': 'text/csv', + '.html': 'text/html', + } + return ext is not False and exts.get(ext, default) or exts + + def slugify_one(s, max_length=None): """ Transform a string to a slug that can be used in a url path. This method will first try to do the job with python-slugify if present. diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index c538fde2f85..c8c80c433c1 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -17,8 +17,7 @@ import odoo from odoo import http, models, fields, _ from odoo.http import request from odoo.tools import pycompat, OrderedSet -from odoo.addons.http_routing.models.ir_http import slug -from odoo.addons.website.models.ir_http import _guess_mimetype +from odoo.addons.http_routing.models.ir_http import slug, _guess_mimetype from odoo.addons.web.controllers.main import WebClient, Binary, Home from odoo.addons.portal.controllers.portal import pager as portal_pager @@ -249,9 +248,13 @@ class Website(Home): def pagenew(self, path="", noredirect=False, add_menu=False, template=False): # for supported mimetype, get correct default template _, ext = os.path.splitext(path) - mimetype_template = _guess_mimetype(ext)[1] - if not template: - template = mimetype_template + View = request.env['ir.ui.view'] + ext_special_case = ext and ext in _guess_mimetype() and ext != '.html' + + if not template and ext_special_case: + default_templ = 'website.default_%s' % ext.lstrip('.') + if request.env.ref(default_templ, False): + template = default_templ template = template and dict(template=template) or {} page = request.env['website'].new_page(path, add_menu=add_menu, **template) @@ -259,7 +262,7 @@ class Website(Home): if noredirect: return werkzeug.wrappers.Response(url, mimetype='text/plain') - if ext and ext != '.html': # redirect non html pages to backend to edit + if ext_special_case: # redirect non html pages to backend to edit return werkzeug.utils.redirect('/web#id=' + str(page.get('view_id')) + '&view_type=form&model=ir.ui.view') return werkzeug.utils.redirect(url + "?enable_editor=1") diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index 8fbdfd18eae..433fc5e297a 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -19,7 +19,7 @@ from odoo.exceptions import QWebException from odoo.tools.safe_eval import safe_eval from odoo.osv.expression import FALSE_DOMAIN -from odoo.addons.http_routing.models.ir_http import ModelConverter +from odoo.addons.http_routing.models.ir_http import ModelConverter, _guess_mimetype logger = logging.getLogger(__name__) @@ -39,20 +39,6 @@ def sitemap_qs2dom(qs, route, field='name'): return dom -def _guess_mimetype(ext=False, default=False): - exts = { - '.css': ['text/css', 'website.default_css'], - '.less': ['text/less', 'website.default_less'], - '.js': ['text/javascript', 'website.default_javascript'], - '.xml': ['text/xml', 'website.default_xml'], - '.csv': ['text/csv', 'website.default_csv'], - '.html': ['text/html', False], - } - if not default: - default = exts['.html'] - return ext is not False and exts.get(ext, default) or exts - - class Http(models.AbstractModel): _inherit = 'ir.http' @@ -130,7 +116,7 @@ class Http(models.AbstractModel): # 'path': req_page[1:], 'deletable': True, 'main_object': mypage, - }, mimetype=_guess_mimetype(ext)[0]) + }, mimetype=_guess_mimetype(ext)) return False @classmethod diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index 70581a3524e..b1c2227d8d3 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -534,7 +534,7 @@ </t> </template> -<template id="default_javascript"> +<template id="default_js"> <script type="text/javascript"> if (0 > 1) { let it_cant_be = false; |
