summaryrefslogtreecommitdiff
path: root/addons/website/controllers/main.py
diff options
context:
space:
mode:
authorJeremy Kersten <jke@odoo.com>2018-08-13 20:36:28 +0200
committerJeremy Kersten <jke@odoo.com>2018-08-13 20:36:28 +0200
commitfbbf24f58acbcd9488cfa8393bd2d4e3a8e4c053 (patch)
tree2994a4151cbc70ac62d1741d84f7758c049557d4 /addons/website/controllers/main.py
parent15df14b9e1863ca09115d920595a6eeb9f6514f1 (diff)
parent853e13800fb030f7ae7180558cb6c3c74b843cd1 (diff)
[MERGE] website: add multi-websites support
Diffstat (limited to 'addons/website/controllers/main.py')
-rw-r--r--addons/website/controllers/main.py53
1 files changed, 31 insertions, 22 deletions
diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py
index 5689b37352c..f9c7d700e15 100644
--- a/addons/website/controllers/main.py
+++ b/addons/website/controllers/main.py
@@ -18,7 +18,7 @@ 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, _guess_mimetype
-from odoo.addons.web.controllers.main import WebClient, Binary
+from odoo.addons.web.controllers.main import Binary
from odoo.addons.portal.controllers.portal import pager as portal_pager
from odoo.addons.portal.controllers.web import Home
@@ -81,10 +81,15 @@ class Website(Home):
raise request.not_found()
- #------------------------------------------------------
+ @http.route('/website/force_website', type='json', auth="user")
+ def force_website(self, website_id):
+ request.env['website']._force_website(website_id)
+ return True
+
+ # ------------------------------------------------------
# Login - overwrite of the web login so that regular users are redirected to the backend
# while portal users are redirected to the frontend by default
- #------------------------------------------------------
+ # ------------------------------------------------------
@http.route(website=True, auth="public")
def web_login(self, redirect=None, *args, **kw):
@@ -97,9 +102,9 @@ class Website(Home):
return http.redirect_with_hash(redirect)
return response
- #------------------------------------------------------
+ # ------------------------------------------------------
# Business
- #------------------------------------------------------
+ # ------------------------------------------------------
@http.route('/website/lang/<lang>', type='http', auth="public", website=True, multilang=False)
def change_lang(self, lang, r='/', **kwargs):
@@ -135,7 +140,7 @@ class Website(Home):
'name': url,
'url': url,
})
- dom = [('url', '=' , '/sitemap-%d.xml' % current_website.id), ('type', '=', 'binary')]
+ dom = [('url', '=', '/sitemap-%d.xml' % current_website.id), ('type', '=', 'binary')]
sitemap = Attachment.search(dom, limit=1)
if sitemap:
# Check if stored version is still valid
@@ -203,9 +208,9 @@ class Website(Home):
}
return request.render('website.website_info', values)
- #------------------------------------------------------
+ # ------------------------------------------------------
# Edit
- #------------------------------------------------------
+ # ------------------------------------------------------
@http.route(['/website/pages', '/website/pages/page/<int:page>'], type='http', auth="user", website=True)
def pages_management(self, page=1, sortby='name', search='', **kw):
@@ -219,22 +224,27 @@ class Website(Home):
'name': {'label': _('Sort by Name'), 'order': 'name'},
}
# default sortby order
- sort_order = searchbar_sortings.get(sortby, 'name')['order']
+ sort_order = searchbar_sortings.get(sortby, 'name')['order'] + ', website_id desc'
- domain = ['|', ('website_ids', 'in', request.website.id), ('website_ids', '=', False)]
+ domain = request.website.website_domain()
if search:
domain += ['|', ('name', 'ilike', search), ('url', 'ilike', search)]
- pages_count = Page.search_count(domain)
+ pages = Page.search(domain, order=sort_order)
+ if sortby != 'url':
+ pages = pages.filtered(pages._is_most_specific_page)
+ pages_count = len(pages)
+ step = 50
pager = portal_pager(
url="/website/pages",
url_args={'sortby': sortby},
total=pages_count,
page=page,
- step=50
+ step=step
)
- pages = Page.search(domain, order=sort_order, limit=50, offset=pager['offset'])
+
+ pages = pages[(page - 1) * step:page * step]
values = {
'pager': pager,
@@ -243,13 +253,12 @@ class Website(Home):
'sortby': sortby,
'searchbar_sortings': searchbar_sortings,
}
- return request.render("website.edit_website_pages", values)
+ return request.render("website.list_website_pages", values)
@http.route(['/website/add/', '/website/add/<path:path>'], type='http', auth="user", website=True)
def pagenew(self, path="", noredirect=False, add_menu=False, template=False):
# for supported mimetype, get correct default template
_, ext = os.path.splitext(path)
- 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:
@@ -263,7 +272,7 @@ class Website(Home):
if noredirect:
return werkzeug.wrappers.Response(url, mimetype='text/plain')
- if ext_special_case: # 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")
@@ -321,9 +330,9 @@ class Website(Home):
xmlroot = ET.fromstring(response)
return json.dumps([sugg[0].attrib['data'] for sugg in xmlroot if len(sugg) and sugg[0].attrib['data']])
- #------------------------------------------------------
+ # ------------------------------------------------------
# Themes
- #------------------------------------------------------
+ # ------------------------------------------------------
def get_view_ids(self, xml_ids):
ids = []
@@ -386,9 +395,9 @@ class Website(Home):
res[id_or_xml_id] = View.render_template(id_or_xml_id, values)
return res
- #------------------------------------------------------
+ # ------------------------------------------------------
# Server actions
- #------------------------------------------------------
+ # ------------------------------------------------------
@http.route([
'/website/action/<path_or_xml_id_or_id>',
@@ -422,9 +431,9 @@ class Website(Home):
return request.redirect('/')
-#------------------------------------------------------
+# ------------------------------------------------------
# Retrocompatibility routes
-#------------------------------------------------------
+# ------------------------------------------------------
class WebsiteBinary(http.Controller):
@http.route([