summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorJeremy Kersten <jke@odoo.com>2017-10-02 10:34:38 +0200
committerJeremy Kersten <jke@odoo.com>2017-10-03 08:44:34 +0200
commit436ad6efa4b774df8733271b17a5dac5291bec73 (patch)
tree1bed3f12ea1cf64cf399f7f642f451214ac5d34d /addons
parentcde5b232e8a1170f4f7a1242f93edc021ebfeefc (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.py12
-rw-r--r--addons/website/controllers/main.py15
-rw-r--r--addons/website/models/ir_http.py18
-rw-r--r--addons/website/views/website_templates.xml2
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 &gt; 1) {
let it_cant_be = false;