[REF] website_*: remove render method on website
Since saas-3, website controllers use `request.website.render` to render the template of a web page. This was kept for retro compatibility. It's time to stop using deprecated stuff. Same for `_render` method on website. 'json' route don't use `request.render` since `JsonRequest` has no `render` method.
This commit is contained in:
@@ -24,15 +24,15 @@ class WebsiteSurvey(http.Controller):
|
||||
|
||||
# In case of auth required, block public user
|
||||
if survey.auth_required and request.env.user == request.website.user_id:
|
||||
return request.website.render("survey.auth_required", {'survey': survey, 'token': token})
|
||||
return request.render("survey.auth_required", {'survey': survey, 'token': token})
|
||||
|
||||
# In case of non open surveys
|
||||
if survey.stage_id.closed:
|
||||
return request.website.render("survey.notopen")
|
||||
return request.render("survey.notopen")
|
||||
|
||||
# If there is no pages
|
||||
if not survey.page_ids:
|
||||
return request.website.render("survey.nopages")
|
||||
return request.render("survey.nopages")
|
||||
|
||||
# Everything seems to be ok
|
||||
return None
|
||||
@@ -46,7 +46,7 @@ class WebsiteSurvey(http.Controller):
|
||||
dt_deadline = fields.Datetime.from_string(deadline)
|
||||
dt_now = datetime.now()
|
||||
if dt_now > dt_deadline: # survey is not open anymore
|
||||
return request.website.render("survey.notopen")
|
||||
return request.render("survey.notopen")
|
||||
return None
|
||||
|
||||
## ROUTES HANDLERS ##
|
||||
@@ -63,7 +63,7 @@ class WebsiteSurvey(http.Controller):
|
||||
_logger.info("[survey] Phantom mode")
|
||||
user_input = UserInput.create({'survey_id': survey.id, 'test_entry': True})
|
||||
data = {'survey': survey, 'page': None, 'token': user_input.token}
|
||||
return request.website.render('survey.survey_init', data)
|
||||
return request.render('survey.survey_init', data)
|
||||
# END Test mode
|
||||
|
||||
# Controls if the survey can be displayed
|
||||
@@ -80,7 +80,7 @@ class WebsiteSurvey(http.Controller):
|
||||
else:
|
||||
user_input = UserInput.sudo().search([('token', '=', token)], limit=1)
|
||||
if not user_input:
|
||||
return request.website.render("website.403")
|
||||
return request.render("website.403")
|
||||
|
||||
# Do not open expired survey
|
||||
errpage = self._check_deadline(user_input)
|
||||
@@ -90,7 +90,7 @@ class WebsiteSurvey(http.Controller):
|
||||
# Select the right page
|
||||
if user_input.state == 'new': # Intro page
|
||||
data = {'survey': survey, 'page': None, 'token': user_input.token}
|
||||
return request.website.render('survey.survey_init', data)
|
||||
return request.render('survey.survey_init', data)
|
||||
else:
|
||||
return request.redirect('/survey/fill/%s/%s' % (survey.id, user_input.token))
|
||||
|
||||
@@ -112,7 +112,7 @@ class WebsiteSurvey(http.Controller):
|
||||
try:
|
||||
user_input = UserInput.sudo().search([('token', '=', token)], limit=1)
|
||||
except IndexError: # Invalid token
|
||||
return request.website.render("website.403")
|
||||
return request.render("website.403")
|
||||
|
||||
# Do not display expired survey (even if some pages have already been
|
||||
# displayed -- There's a time for everything!)
|
||||
@@ -126,9 +126,9 @@ class WebsiteSurvey(http.Controller):
|
||||
data = {'survey': survey, 'page': page, 'page_nr': page_nr, 'token': user_input.token}
|
||||
if last:
|
||||
data.update({'last': True})
|
||||
return request.website.render('survey.survey', data)
|
||||
return request.render('survey.survey', data)
|
||||
elif user_input.state == 'done': # Display success message
|
||||
return request.website.render('survey.sfinished', {'survey': survey,
|
||||
return request.render('survey.sfinished', {'survey': survey,
|
||||
'token': token,
|
||||
'user_input': user_input})
|
||||
elif user_input.state == 'skip':
|
||||
@@ -142,9 +142,9 @@ class WebsiteSurvey(http.Controller):
|
||||
data = {'survey': survey, 'page': page, 'page_nr': page_nr, 'token': user_input.token}
|
||||
if last:
|
||||
data.update({'last': True})
|
||||
return request.website.render('survey.survey', data)
|
||||
return request.render('survey.survey', data)
|
||||
else:
|
||||
return request.website.render("website.403")
|
||||
return request.render("website.403")
|
||||
|
||||
# AJAX prefilling of a survey
|
||||
@http.route(['/survey/prefill/<model("survey.survey"):survey>/<string:token>',
|
||||
@@ -225,7 +225,7 @@ class WebsiteSurvey(http.Controller):
|
||||
try:
|
||||
user_input = request.env['survey.user_input'].sudo().search([('token', '=', post['token'])], limit=1)
|
||||
except KeyError: # Invalid token
|
||||
return request.website.render("website.403")
|
||||
return request.render("website.403")
|
||||
user_id = request.env.user.id if user_input.type != 'link' else SUPERUSER_ID
|
||||
|
||||
for question in questions:
|
||||
@@ -252,7 +252,7 @@ class WebsiteSurvey(http.Controller):
|
||||
def print_survey(self, survey, token=None, **post):
|
||||
'''Display an survey in printable view; if <token> is set, it will
|
||||
grab the answers of the user_input_id that has <token>.'''
|
||||
return request.website.render('survey.survey_print',
|
||||
return request.render('survey.survey_print',
|
||||
{'survey': survey,
|
||||
'token': token,
|
||||
'page_nr': 0,
|
||||
@@ -276,7 +276,7 @@ class WebsiteSurvey(http.Controller):
|
||||
filter_data = self.get_filter_data(post)
|
||||
current_filters = survey.filter_input_ids(filter_data, filter_finish)
|
||||
filter_display_data = survey.get_filter_display_data(filter_data)
|
||||
return request.website.render(result_template,
|
||||
return request.render(result_template,
|
||||
{'survey': survey,
|
||||
'survey_dict': self.prepare_result_dict(survey, current_filters),
|
||||
'page_range': self.page_range,
|
||||
|
||||
@@ -238,7 +238,7 @@ class Website(Home):
|
||||
|
||||
@http.route(['/website/snippets'], type='json', auth="user", website=True)
|
||||
def snippets(self):
|
||||
return request.website._render('website.snippets')
|
||||
return request.env['ir.ui.view'].render_template('website.snippets')
|
||||
|
||||
@http.route('/website/reset_templates', type='http', auth='user', methods=['POST'], website=True)
|
||||
def reset_template(self, templates, redirect='/'):
|
||||
|
||||
@@ -299,9 +299,9 @@ class Http(models.AbstractModel):
|
||||
self._auth_method_public()
|
||||
|
||||
try:
|
||||
html = request.website._render('website.%s' % code, values)
|
||||
html = request.env['ir.ui.view'].render_template('website.%s' % code, values)
|
||||
except Exception:
|
||||
html = request.website._render('website.http_error', values)
|
||||
html = request.env['ir.ui.view'].render_template('website.http_error', values)
|
||||
return werkzeug.wrappers.Response(html, status=code, content_type='text/html;charset=utf-8')
|
||||
|
||||
def binary_content(self, xmlid=None, model='ir.attachment', id=None, field='datas', unique=False, filename=None, filename_field='datas_fname', download=False, mimetype=None, default_mimetype='application/octet-stream', env=None):
|
||||
|
||||
@@ -424,15 +424,6 @@ class Website(models.Model):
|
||||
raise NotFound
|
||||
return View.browse(view_id)
|
||||
|
||||
@api.model
|
||||
def render(self, template, values=None, status_code=None):
|
||||
# TODO: remove this. (just kept for backward api compatibility for saas-3)
|
||||
return request.render(template, values, uid=self._uid)
|
||||
|
||||
def _render(self, template, values=None):
|
||||
# TODO: remove this. (just kept for backward api compatibility for saas-3)
|
||||
return self.env['ir.ui.view'].render_template(template, values=values)
|
||||
|
||||
@api.model
|
||||
def pager(self, url, total, page=1, step=30, scope=5, url_args=None):
|
||||
""" Generate a dict with required value to render `website.pager` template. This method compute
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import test_converter
|
||||
import test_crawl
|
||||
import test_ui
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import unittest
|
||||
from odoo.addons.website.models.website import slugify, unslug
|
||||
|
||||
|
||||
class TestUnslug(unittest.TestCase):
|
||||
|
||||
def test_unslug(self):
|
||||
tests = {
|
||||
'': (None, None),
|
||||
@@ -28,6 +32,7 @@ class TestTitleToSlug(unittest.TestCase):
|
||||
Those tests should pass with or without python-slugify
|
||||
See website/models/website.py slugify method
|
||||
"""
|
||||
|
||||
def test_spaces(self):
|
||||
self.assertEqual(
|
||||
"spaces",
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import logging
|
||||
import urlparse
|
||||
import time
|
||||
@@ -10,6 +12,7 @@ import re
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Crawler(odoo.tests.HttpCase):
|
||||
""" Test suite crawling an Odoo CMS instance and checking that all
|
||||
internal links lead to a 200 response.
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import odoo
|
||||
import odoo.tests
|
||||
|
||||
|
||||
class TestUi(odoo.tests.HttpCase):
|
||||
|
||||
def test_01_public_homepage(self):
|
||||
self.phantom_js("/", "console.log('ok')", "'website.snippets.animation' in odoo.__DEBUG__.services")
|
||||
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import itertools
|
||||
|
||||
import unittest
|
||||
from lxml import etree as ET, html
|
||||
from lxml.html import builder as h
|
||||
|
||||
from openerp.tests import common
|
||||
from odoo.tests import common
|
||||
|
||||
|
||||
def attrs(**kwargs):
|
||||
@@ -13,6 +15,7 @@ def attrs(**kwargs):
|
||||
|
||||
|
||||
class TestViewSaving(common.TransactionCase):
|
||||
|
||||
def eq(self, a, b):
|
||||
self.assertEqual(a.tag, b.tag)
|
||||
self.assertEqual(a.attrib, b.attrib)
|
||||
@@ -38,7 +41,7 @@ class TestViewSaving(common.TransactionCase):
|
||||
h.LI(h.SPAN("+00 00 000 00 0 000", attrs(model='res.company', id=1, field='phone', type='char')))
|
||||
))
|
||||
)
|
||||
self.view_id = self.registry('ir.ui.view').create(self.cr, self.uid, {
|
||||
self.view_id = self.env['ir.ui.view'].create({
|
||||
'name': "Test View",
|
||||
'type': 'qweb',
|
||||
'arch': ET.tostring(self.arch, encoding='utf-8').decode('utf-8')
|
||||
@@ -60,7 +63,7 @@ class TestViewSaving(common.TransactionCase):
|
||||
|
||||
self.env['ir.ui.view'].save_embedded_field(embedded)
|
||||
|
||||
company = self.registry('res.company').browse(self.cr, self.uid, 1)
|
||||
company = self.env['res.company'].browse(1)
|
||||
self.assertEqual(company.phone, "+00 00 000 00 0 000")
|
||||
|
||||
@unittest.skip("save conflict for embedded (saved by third party or previous version in page) not implemented")
|
||||
@@ -91,31 +94,26 @@ class TestViewSaving(common.TransactionCase):
|
||||
att['class'] = "foo bar"
|
||||
embedded = h.SPAN("My Company", att)
|
||||
|
||||
self.eq(View.to_field_ref(embedded),
|
||||
h.SPAN({'t-field': 'bob', 'class': 'foo bar', 'id': 'whop'}))
|
||||
self.eq(View.to_field_ref(embedded), h.SPAN({'t-field': 'bob', 'class': 'foo bar', 'id': 'whop'}))
|
||||
|
||||
def test_replace_arch(self):
|
||||
replacement = h.P("Wheee")
|
||||
|
||||
result = self.registry('ir.ui.view').replace_arch_section(
|
||||
self.cr, self.uid, [self.view_id], None, replacement)
|
||||
result = self.view_id.replace_arch_section(None, replacement)
|
||||
|
||||
self.eq(result, h.DIV("Wheee"))
|
||||
|
||||
def test_replace_arch_2(self):
|
||||
replacement = h.DIV(h.P("Wheee"))
|
||||
|
||||
result = self.registry('ir.ui.view').replace_arch_section(
|
||||
self.cr, self.uid, [self.view_id], None, replacement)
|
||||
result = self.view_id.replace_arch_section(None, replacement)
|
||||
|
||||
self.eq(result, replacement)
|
||||
|
||||
def test_fixup_arch(self):
|
||||
replacement = h.H1("I am the greatest title alive!")
|
||||
|
||||
result = self.registry('ir.ui.view').replace_arch_section(
|
||||
self.cr, self.uid, [self.view_id], '/div/div[1]/h3',
|
||||
replacement)
|
||||
result = self.view_id.replace_arch_section('/div/div[1]/h3', replacement)
|
||||
|
||||
self.eq(result, h.DIV(
|
||||
h.DIV(
|
||||
@@ -135,12 +133,10 @@ class TestViewSaving(common.TransactionCase):
|
||||
|
||||
def test_multiple_xpath_matches(self):
|
||||
with self.assertRaises(ValueError):
|
||||
self.registry('ir.ui.view').replace_arch_section(
|
||||
self.cr, self.uid, [self.view_id], '/div/div/h3',
|
||||
h.H6("Lol nope"))
|
||||
self.view_id.replace_arch_section('/div/div/h3', h.H6("Lol nope"))
|
||||
|
||||
def test_save(self):
|
||||
Company = self.registry('res.company')
|
||||
Company = self.env['res.company']
|
||||
View = self.env['ir.ui.view']
|
||||
|
||||
replacement = ET.tostring(h.DIV(
|
||||
@@ -151,13 +147,13 @@ class TestViewSaving(common.TransactionCase):
|
||||
h.LI(h.SPAN("+12 3456789", attrs(model='res.company', id=1, field='phone', expression="edmund", type='char'))),
|
||||
)
|
||||
), encoding='utf-8')
|
||||
View.browse(self.view_id).save(value=replacement, xpath='/div/div[2]')
|
||||
self.view_id.save(value=replacement, xpath='/div/div[2]')
|
||||
|
||||
company = Company.browse(self.cr, self.uid, 1)
|
||||
company = Company.browse(1)
|
||||
self.assertEqual(company.name, "Acme Corporation")
|
||||
self.assertEqual(company.phone, "+12 3456789")
|
||||
self.eq(
|
||||
ET.fromstring(View.browse(self.view_id).arch.encode('utf-8')),
|
||||
ET.fromstring(self.view_id.arch.encode('utf-8')),
|
||||
h.DIV(
|
||||
h.DIV(
|
||||
h.H3("Column 1"),
|
||||
@@ -177,36 +173,35 @@ class TestViewSaving(common.TransactionCase):
|
||||
|
||||
def test_save_escaped_text(self):
|
||||
""" Test saving html special chars in text nodes """
|
||||
view_id = self.registry('ir.ui.view').create(self.cr, self.uid, {
|
||||
'arch':'<t><p><h1>hello world</h1></p></t>',
|
||||
'type':'qweb'
|
||||
view = self.env['ir.ui.view'].create({
|
||||
'arch': '<t><p><h1>hello world</h1></p></t>',
|
||||
'type': 'qweb'
|
||||
})
|
||||
view = self.env['ir.ui.view'].browse(view_id)
|
||||
# script and style text nodes should not escaped client side
|
||||
replacement = '<script>1 && "hello & world"</script>'
|
||||
view.save(replacement, xpath='/t/p/h1')
|
||||
self.assertIn(
|
||||
replacement.replace('&', '&'),
|
||||
view.arch,
|
||||
'inline script should be escaped server side'
|
||||
replacement.replace('&', '&'),
|
||||
view.arch,
|
||||
'inline script should be escaped server side'
|
||||
)
|
||||
self.assertIn(
|
||||
replacement,
|
||||
view.render(),
|
||||
'inline script should not be escaped when rendering'
|
||||
replacement,
|
||||
view.render(),
|
||||
'inline script should not be escaped when rendering'
|
||||
)
|
||||
# common text nodes should be be escaped client side
|
||||
replacement = 'world &amp; &lt;b&gt;cie'
|
||||
view.save(replacement, xpath='/t/p')
|
||||
self.assertIn(replacement, view.arch, 'common text node should not be escaped server side')
|
||||
self.assertIn(
|
||||
replacement,
|
||||
view.render().replace('&', '&'),
|
||||
'text node characters wrongly unescaped when rendering'
|
||||
replacement,
|
||||
view.render().replace('&', '&'),
|
||||
'text node characters wrongly unescaped when rendering'
|
||||
)
|
||||
|
||||
def test_save_only_embedded(self):
|
||||
Company = self.registry('res.company')
|
||||
Company = self.env['res.company']
|
||||
company_id = 1
|
||||
company = Company.browse(company_id)
|
||||
company.write({'name': "Foo Corporation"})
|
||||
@@ -226,7 +221,7 @@ class TestViewSaving(common.TransactionCase):
|
||||
field='phone', expression="edmund")),
|
||||
"whop whop"
|
||||
), encoding="utf-8")
|
||||
View.browse(self.view_id).save(value=replacement, xpath='/div/div[2]/ul/li[3]')
|
||||
self.view_id.save(value=replacement, xpath='/div/div[2]/ul/li[3]')
|
||||
|
||||
self.eq(
|
||||
ET.fromstring(self.view_id.arch.encode('utf-8')),
|
||||
|
||||
@@ -59,7 +59,7 @@ class WebsiteBlog(http.Controller):
|
||||
post_ids = blog_obj.search(cr, uid, [], offset=(page-1)*self._blog_post_per_page, limit=self._blog_post_per_page, context=context)
|
||||
posts = blog_obj.browse(cr, uid, post_ids, context=context)
|
||||
blog_url = QueryURL('', ['blog', 'tag'])
|
||||
return request.website.render("website_blog.latest_blogs", {
|
||||
return request.render("website_blog.latest_blogs", {
|
||||
'posts': posts,
|
||||
'pager': pager,
|
||||
'blog_url': blog_url,
|
||||
@@ -160,7 +160,7 @@ class WebsiteBlog(http.Controller):
|
||||
'blog_url': blog_url,
|
||||
'date': date_begin,
|
||||
}
|
||||
response = request.website.render("website_blog.blog_post_short", values)
|
||||
response = request.render("website_blog.blog_post_short", values)
|
||||
return response
|
||||
|
||||
@http.route(['/blog/<model("blog.blog"):blog>/feed'], type='http', auth="public")
|
||||
@@ -241,7 +241,7 @@ class WebsiteBlog(http.Controller):
|
||||
'pager': pager,
|
||||
'comments': comments,
|
||||
}
|
||||
response = request.website.render("website_blog.blog_post_complete", values)
|
||||
response = request.render("website_blog.blog_post_complete", values)
|
||||
|
||||
request.session[request.session_id] = request.session.get(request.session_id, [])
|
||||
if not (blog_post.id in request.session[request.session_id]):
|
||||
|
||||
@@ -73,7 +73,7 @@ class WebsiteAccount(website_account):
|
||||
'default_url': '/my/leads',
|
||||
'pager': pager
|
||||
})
|
||||
return request.website.render("website_crm_partner_assign.portal_my_leads", values)
|
||||
return request.render("website_crm_partner_assign.portal_my_leads", values)
|
||||
|
||||
@http.route(['/my/opportunities', '/my/opportunities/page/<int:page>'], type='http', auth="user", website=True)
|
||||
def portal_my_opportunities(self, page=1, date_begin=None, date_end=None, opportunity=None, sortby=None, **kw):
|
||||
@@ -134,15 +134,15 @@ class WebsiteAccount(website_account):
|
||||
'default_url': '/my/opportunities',
|
||||
'pager': pager
|
||||
})
|
||||
return request.website.render("website_crm_partner_assign.portal_my_opportunities", values)
|
||||
return request.render("website_crm_partner_assign.portal_my_opportunities", values)
|
||||
|
||||
@http.route(['/my/lead/<model("crm.lead"):lead>'], type='http', auth="user", website=True)
|
||||
def portal_my_lead(self, lead=None, **kw):
|
||||
return request.website.render("website_crm_partner_assign.portal_my_lead", {'lead': lead})
|
||||
return request.render("website_crm_partner_assign.portal_my_lead", {'lead': lead})
|
||||
|
||||
@http.route(['/my/opportunity/<model("crm.lead"):lead>'], type='http', auth="user", website=True)
|
||||
def portal_my_opportunity(self, lead=None, **kw):
|
||||
return request.website.render(
|
||||
return request.render(
|
||||
"website_crm_partner_assign.portal_my_opportunity", {
|
||||
'opportunity': lead,
|
||||
'stages': request.env['crm.stage'].search([('probability', '!=', '100')], order='sequence desc'),
|
||||
@@ -292,5 +292,5 @@ class WebsiteCrmPartnerAssign(WebsitePartnerPage):
|
||||
'current_grade': current_grade,
|
||||
'current_country': current_country
|
||||
}
|
||||
return request.website.render("website_crm_partner_assign.partner", values)
|
||||
return request.render("website_crm_partner_assign.partner", values)
|
||||
return self.partners(**post)
|
||||
|
||||
@@ -96,7 +96,7 @@ class WebsiteCustomer(http.Controller):
|
||||
'tag': tag,
|
||||
'tags': tags,
|
||||
}
|
||||
return request.website.render("website_customer.index", values)
|
||||
return request.render("website_customer.index", values)
|
||||
|
||||
# Do not use semantic controller due to SUPERUSER_ID
|
||||
@http.route(['/customers/<partner_id>'], type='http', auth="public", website=True)
|
||||
@@ -107,5 +107,5 @@ class WebsiteCustomer(http.Controller):
|
||||
if partner.exists() and partner.website_published:
|
||||
values = {}
|
||||
values['main_object'] = values['partner'] = partner
|
||||
return request.website.render("website_customer.details", values)
|
||||
return request.render("website_customer.details", values)
|
||||
return self.customers(**post)
|
||||
|
||||
@@ -131,7 +131,7 @@ class WebsiteEventController(http.Controller):
|
||||
'search_path': "?%s" % werkzeug.url_encode(searches),
|
||||
}
|
||||
|
||||
return request.website.render("website_event.index", values)
|
||||
return request.render("website_event.index", values)
|
||||
|
||||
@http.route(['/event/<model("event.event"):event>/page/<path:page>'], type='http', auth="public", website=True)
|
||||
def event_page(self, event, page, **post):
|
||||
@@ -151,7 +151,7 @@ class WebsiteEventController(http.Controller):
|
||||
values['from_template'] = 'website_event.default_page' # .strip('website_event.')
|
||||
page = 'website.page_404'
|
||||
|
||||
return request.website.render(page, values)
|
||||
return request.render(page, values)
|
||||
|
||||
@http.route(['/event/<model("event.event"):event>'], type='http', auth="public", website=True)
|
||||
def event(self, event, **post):
|
||||
@@ -170,7 +170,7 @@ class WebsiteEventController(http.Controller):
|
||||
'main_object': event,
|
||||
'range': range,
|
||||
}
|
||||
return request.website.render("website_event.event_description_full", values)
|
||||
return request.render("website_event.event_description_full", values)
|
||||
|
||||
@http.route('/event/add_event', type='http', auth="user", methods=['POST'], website=True)
|
||||
def add_event(self, event_name="New Event", **kwargs):
|
||||
@@ -215,7 +215,7 @@ class WebsiteEventController(http.Controller):
|
||||
"date": self.get_formated_date(event),
|
||||
"event": event,
|
||||
"url": event.website_url})
|
||||
return request.website.render("website_event.country_events_list", result)
|
||||
return request.render("website_event.country_events_list", result)
|
||||
|
||||
def _process_tickets_details(self, data):
|
||||
nb_register = int(data.get('nb_register-0', 0))
|
||||
@@ -228,7 +228,7 @@ class WebsiteEventController(http.Controller):
|
||||
tickets = self._process_tickets_details(post)
|
||||
if not tickets:
|
||||
return request.redirect("/event/%s" % slug(event))
|
||||
return request.website._render("website_event.registration_attendee_details", {'tickets': tickets, 'event': event})
|
||||
return request.env['ir.ui.view'].render_template("website_event.registration_attendee_details", {'tickets': tickets, 'event': event})
|
||||
|
||||
def _process_registration_details(self, details):
|
||||
''' Process data posted from the attendee details form. '''
|
||||
@@ -255,7 +255,7 @@ class WebsiteEventController(http.Controller):
|
||||
Attendees += Attendees.sudo().create(
|
||||
Attendees._prepare_attendee_values(registration))
|
||||
|
||||
return request.website.render("website_event.registration_complete", {
|
||||
return request.render("website_event.registration_complete", {
|
||||
'attendees': Attendees,
|
||||
'event': event,
|
||||
})
|
||||
|
||||
@@ -16,7 +16,7 @@ class WebsiteEventSaleController(WebsiteEventController):
|
||||
'main_object': event.with_context(pricelist=pricelist_id),
|
||||
'range': range,
|
||||
}
|
||||
return request.website.render("website_event.event_description_full", values)
|
||||
return request.render("website_event.event_description_full", values)
|
||||
|
||||
def _process_tickets_details(self, data):
|
||||
ticket_post = {}
|
||||
@@ -47,7 +47,7 @@ class WebsiteEventSaleController(WebsiteEventController):
|
||||
attendees = request.env['event.registration'].browse(list(attendee_ids))
|
||||
# clean context and session, then redirect to the confirmation page
|
||||
request.website.sale_reset()
|
||||
return request.website.render("website_event.registration_complete", {
|
||||
return request.render("website_event.registration_complete", {
|
||||
'attendees': attendees,
|
||||
'event': event,
|
||||
})
|
||||
|
||||
@@ -16,7 +16,7 @@ class WebsiteEventTrackController(http.Controller):
|
||||
def event_track_view(self, event, track, **post):
|
||||
track = track.sudo()
|
||||
values = {'track': track, 'event': track.event_id, 'main_object': track}
|
||||
return request.website.render("website_event_track.track_view", values)
|
||||
return request.render("website_event_track.track_view", values)
|
||||
|
||||
def _prepare_calendar(self, event, event_track_ids):
|
||||
local_tz = pytz.timezone(event.date_tz or 'UTC')
|
||||
@@ -72,7 +72,7 @@ class WebsiteEventTrackController(http.Controller):
|
||||
speakers_name = u" – ".join(track.speaker_ids.mapped('name'))
|
||||
speakers[track.id] = speakers_name
|
||||
|
||||
return request.website.render("website_event_track.agenda", {
|
||||
return request.render("website_event_track.agenda", {
|
||||
'event': event,
|
||||
'days': days,
|
||||
'days_nbr': days_tracks_count,
|
||||
@@ -100,11 +100,11 @@ class WebsiteEventTrackController(http.Controller):
|
||||
'searches': searches,
|
||||
'html2plaintext': html2plaintext
|
||||
}
|
||||
return request.website.render("website_event_track.tracks", values)
|
||||
return request.render("website_event_track.tracks", values)
|
||||
|
||||
@http.route(['''/event/<model("event.event", "[('show_track_proposal','=',1)]"):event>/track_proposal'''], type='http', auth="public", website=True)
|
||||
def event_track_proposal(self, event, **post):
|
||||
return request.website.render("website_event_track.event_track_proposal", {'event': event})
|
||||
return request.render("website_event_track.event_track_proposal", {'event': event})
|
||||
|
||||
@http.route(['/event/<model("event.event"):event>/track_proposal/post'], type='http', auth="public", methods=['POST'], website=True)
|
||||
def event_track_proposal_post(self, event, **post):
|
||||
@@ -130,4 +130,4 @@ class WebsiteEventTrackController(http.Controller):
|
||||
partner = request.env['res.partner'].sudo().search([('email', '=', post['email_from'])])
|
||||
if partner:
|
||||
track.sudo().message_subscribe(partner_ids=partner.ids)
|
||||
return request.website.render("website_event_track.event_track_proposal_success", {'track': track, 'event': event})
|
||||
return request.render("website_event_track.event_track_proposal_success", {'track': track, 'event': event})
|
||||
|
||||
@@ -81,7 +81,7 @@ class WebsiteForum(http.Controller):
|
||||
@http.route(['/forum'], type='http', auth="public", website=True)
|
||||
def forum(self, **kwargs):
|
||||
forums = request.env['forum.forum'].search([])
|
||||
return request.website.render("website_forum.forum_all", {'forums': forums})
|
||||
return request.render("website_forum.forum_all", {'forums': forums})
|
||||
|
||||
@http.route('/forum/new', type='http', auth="user", methods=['POST'], website=True)
|
||||
def forum_create(self, forum_name="New Forum", add_menu=False):
|
||||
@@ -163,12 +163,12 @@ class WebsiteForum(http.Controller):
|
||||
'search': search,
|
||||
'post_type': post_type,
|
||||
})
|
||||
return request.website.render("website_forum.forum_index", values)
|
||||
return request.render("website_forum.forum_index", values)
|
||||
|
||||
@http.route(['/forum/<model("forum.forum"):forum>/faq'], type='http', auth="public", website=True)
|
||||
def forum_faq(self, forum, **post):
|
||||
values = self._prepare_forum_values(forum=forum, searches=dict(), header={'is_guidelines': True}, **post)
|
||||
return request.website.render("website_forum.faq", values)
|
||||
return request.render("website_forum.faq", values)
|
||||
|
||||
@http.route('/forum/get_tags', type='http', auth="public", methods=['GET'], website=True)
|
||||
def tag_read(self, q='', l=25, **post):
|
||||
@@ -204,11 +204,11 @@ class WebsiteForum(http.Controller):
|
||||
'pager_tag_chars': first_char_list,
|
||||
'active_char_tag': active_char_tag,
|
||||
})
|
||||
return request.website.render("website_forum.tag", values)
|
||||
return request.render("website_forum.tag", values)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/edit_welcome_message', auth="user", website=True)
|
||||
def edit_welcome_message(self, forum, **kw):
|
||||
return request.website.render("website_forum.edit_welcome_message", {'forum': forum})
|
||||
return request.render("website_forum.edit_welcome_message", {'forum': forum})
|
||||
|
||||
# Questions
|
||||
# --------------------------------------------------
|
||||
@@ -247,7 +247,7 @@ class WebsiteForum(http.Controller):
|
||||
'filters': filters,
|
||||
'reversed': reversed,
|
||||
})
|
||||
return request.website.render("website_forum.post_description_full", values)
|
||||
return request.render("website_forum.post_description_full", values)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/toggle_favourite', type='json', auth="user", methods=['POST'], website=True)
|
||||
def question_toggle_favorite(self, forum, question, **post):
|
||||
@@ -272,7 +272,7 @@ class WebsiteForum(http.Controller):
|
||||
'forum': forum,
|
||||
'reasons': reasons,
|
||||
})
|
||||
return request.website.render("website_forum.close_post", values)
|
||||
return request.render("website_forum.close_post", values)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/edit_answer', type='http', auth="user", website=True)
|
||||
def question_edit_answer(self, forum, question, **kwargs):
|
||||
@@ -312,14 +312,14 @@ class WebsiteForum(http.Controller):
|
||||
if not user.email or not tools.single_email_re.match(user.email):
|
||||
return werkzeug.utils.redirect("/forum/%s/user/%s/edit?email_required=1" % (slug(forum), request.session.uid))
|
||||
values = self._prepare_forum_values(forum=forum, searches={}, header={'ask_hide': True})
|
||||
return request.website.render("website_forum.new_%s" % post_type, values)
|
||||
return request.render("website_forum.new_%s" % post_type, values)
|
||||
|
||||
@http.route(['/forum/<model("forum.forum"):forum>/new',
|
||||
'/forum/<model("forum.forum"):forum>/<model("forum.post"):post_parent>/reply'],
|
||||
type='http', auth="user", methods=['POST'], website=True)
|
||||
def post_create(self, forum, post_parent=None, post_type=None, **post):
|
||||
if post_type == 'question' and not post.get('post_name', '').strip():
|
||||
return request.website.render('website.http_error', {'status_code': _('Bad Request'), 'status_message': _('Title should not be empty.')})
|
||||
return request.render('website.http_error', {'status_code': _('Bad Request'), 'status_message': _('Title should not be empty.')})
|
||||
post_tag_ids = forum._tag_to_write_vals(post.get('post_tags', ''))
|
||||
new_question = request.env['forum.post'].create({
|
||||
'forum_id': forum.id,
|
||||
@@ -378,12 +378,12 @@ class WebsiteForum(http.Controller):
|
||||
'content': post.name,
|
||||
})
|
||||
template = "website_forum.new_link" if post.post_type == 'link' and not post.parent_id else "website_forum.edit_post"
|
||||
return request.website.render(template, values)
|
||||
return request.render(template, values)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/save', type='http', auth="user", methods=['POST'], website=True)
|
||||
def post_save(self, forum, post, **kwargs):
|
||||
if 'post_name' in kwargs and not kwargs.get('post_name').strip():
|
||||
return request.website.render('website.http_error', {'status_code': _('Bad Request'), 'status_message': _('Title should not be empty.')})
|
||||
return request.render('website.http_error', {'status_code': _('Bad Request'), 'status_message': _('Title should not be empty.')})
|
||||
post_tags = forum._tag_to_write_vals(kwargs.get('post_tags', ''))
|
||||
vals = {
|
||||
'tag_ids': post_tags,
|
||||
@@ -442,7 +442,7 @@ class WebsiteForum(http.Controller):
|
||||
'queue_type': 'validation',
|
||||
})
|
||||
|
||||
return request.website.render("website_forum.moderation_queue", values)
|
||||
return request.render("website_forum.moderation_queue", values)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/flagged_queue', type='http', auth="user", website=True)
|
||||
def flagged_queue(self, forum):
|
||||
@@ -460,7 +460,7 @@ class WebsiteForum(http.Controller):
|
||||
'queue_type': 'flagged',
|
||||
})
|
||||
|
||||
return request.website.render("website_forum.moderation_queue", values)
|
||||
return request.render("website_forum.moderation_queue", values)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/offensive_posts', type='http', auth="user", website=True)
|
||||
def offensive_posts(self, forum):
|
||||
@@ -478,7 +478,7 @@ class WebsiteForum(http.Controller):
|
||||
'queue_type': 'offensive',
|
||||
})
|
||||
|
||||
return request.website.render("website_forum.moderation_queue", values)
|
||||
return request.render("website_forum.moderation_queue", values)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/validate', type='http', auth="user", website=True)
|
||||
def post_accept(self, forum, post):
|
||||
@@ -512,7 +512,7 @@ class WebsiteForum(http.Controller):
|
||||
'reasons': offensive_reasons,
|
||||
'offensive': True,
|
||||
})
|
||||
return request.website.render("website_forum.close_post", values)
|
||||
return request.render("website_forum.close_post", values)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/mark_as_offensive', type='http', auth="user", methods=["POST"], website=True)
|
||||
def post_mark_as_offensive(self, forum, post, **kwargs):
|
||||
@@ -550,7 +550,7 @@ class WebsiteForum(http.Controller):
|
||||
'pager': pager,
|
||||
})
|
||||
|
||||
return request.website.render("website_forum.users", values)
|
||||
return request.render("website_forum.users", values)
|
||||
|
||||
@http.route(['/forum/<model("forum.forum"):forum>/partner/<int:partner_id>'], type='http', auth="public", website=True)
|
||||
def open_partner(self, forum, partner_id=0, **post):
|
||||
@@ -674,7 +674,7 @@ class WebsiteForum(http.Controller):
|
||||
'posts': posts,
|
||||
'vote_post': vote_ids,
|
||||
})
|
||||
return request.website.render("website_forum.user_detail_full", values)
|
||||
return request.render("website_forum.user_detail_full", values)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/user/<model("res.users"):user>/edit', type='http', auth="user", website=True)
|
||||
def edit_profile(self, forum, user, **kwargs):
|
||||
@@ -685,7 +685,7 @@ class WebsiteForum(http.Controller):
|
||||
'countries': countries,
|
||||
'notifications': self._get_notifications(),
|
||||
})
|
||||
return request.website.render("website_forum.edit_profile", values)
|
||||
return request.render("website_forum.edit_profile", values)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/user/<model("res.users"):user>/save', type='http', auth="user", methods=['POST'], website=True)
|
||||
def save_edited_profile(self, forum, user, **kwargs):
|
||||
@@ -714,7 +714,7 @@ class WebsiteForum(http.Controller):
|
||||
values.update({
|
||||
'badges': badges,
|
||||
})
|
||||
return request.website.render("website_forum.badge", values)
|
||||
return request.render("website_forum.badge", values)
|
||||
|
||||
# Messaging
|
||||
# --------------------------------------------------
|
||||
|
||||
@@ -20,7 +20,7 @@ class WebsiteDoc(http.Controller):
|
||||
'forum': forum,
|
||||
'sections': sections,
|
||||
}
|
||||
return request.website.render("website_forum_doc.documentation", value)
|
||||
return request.render("website_forum_doc.documentation", value)
|
||||
|
||||
@http.route(['''/forum/how-to/<model("forum.documentation.toc"):toc>/<model("forum.post", "[('documentation_toc_id','=',toc[0])]"):post>'''], type='http', auth="public", website=True)
|
||||
def post(self, toc, post, **kwargs):
|
||||
@@ -32,7 +32,7 @@ class WebsiteDoc(http.Controller):
|
||||
'main_object': post,
|
||||
'forum': post.forum_id
|
||||
}
|
||||
return request.website.render("website_forum_doc.documentation_post", value)
|
||||
return request.render("website_forum_doc.documentation_post", value)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):post>/promote', type='http', auth="user", website=True)
|
||||
def post_toc(self, forum, post, **kwargs):
|
||||
@@ -42,7 +42,7 @@ class WebsiteDoc(http.Controller):
|
||||
'forum': post.forum_id,
|
||||
'chapters': request.env['forum.documentation.toc'].search([('child_ids', '=', False)])
|
||||
}
|
||||
return request.website.render("website_forum_doc.promote_question", value)
|
||||
return request.render("website_forum_doc.promote_question", value)
|
||||
|
||||
@http.route('/forum/<model("forum.forum"):forum>/promote_ok', type='http', auth="user", website=True)
|
||||
def post_toc_ok(self, forum, post_id, toc_id, **kwargs):
|
||||
|
||||
@@ -56,4 +56,4 @@ class GoogleMap(http.Controller):
|
||||
'partner_url': partner_url,
|
||||
'partner_data': json.dumps(partner_data)
|
||||
}
|
||||
return request.website.render("website_google_map.google_map", values)
|
||||
return request.render("website_google_map.google_map", values)
|
||||
|
||||
@@ -12,4 +12,4 @@ class WebsiteHr(http.Controller):
|
||||
if not request.env['res.users'].has_group('base.group_website_publisher'):
|
||||
employees_domain += [('website_published', '=', True)]
|
||||
employees = request.env['hr.employee'].search(employees_domain)
|
||||
return request.website.render("website.aboutus", {'employees': employees})
|
||||
return request.render("website.aboutus", {'employees': employees})
|
||||
|
||||
@@ -58,7 +58,7 @@ class website_hr_recruitment(http.Controller):
|
||||
office_id = False
|
||||
|
||||
# Render page
|
||||
return request.website.render("website_hr_recruitment.index", {
|
||||
return request.render("website_hr_recruitment.index", {
|
||||
'jobs': jobs,
|
||||
'countries': countries,
|
||||
'departments': departments,
|
||||
|
||||
@@ -14,7 +14,7 @@ class Website_Url(http.Controller):
|
||||
|
||||
@http.route('/r', type='http', auth='user', website=True)
|
||||
def shorten_url(self, **post):
|
||||
return request.website.render("website_links.page_shorten_url", post)
|
||||
return request.render("website_links.page_shorten_url", post)
|
||||
|
||||
@http.route('/website_links/add_code', type='json', auth='user')
|
||||
def add_code(self, **post):
|
||||
@@ -34,6 +34,6 @@ class Website_Url(http.Controller):
|
||||
code = request.env['link.tracker.code'].search([('code', '=', code)], limit=1)
|
||||
|
||||
if code:
|
||||
return request.website.render("website_links.graphs", code.link_id.read()[0])
|
||||
return request.render("website_links.graphs", code.link_id.read()[0])
|
||||
else:
|
||||
return werkzeug.utils.redirect('', 301)
|
||||
|
||||
@@ -13,7 +13,7 @@ class WebsiteLivechat(http.Controller):
|
||||
values = {
|
||||
'channels': channels
|
||||
}
|
||||
return request.website.render('website_livechat.channel_list_page', values)
|
||||
return request.render('website_livechat.channel_list_page', values)
|
||||
|
||||
|
||||
@http.route('/livechat/channel/<model("im_livechat.channel"):channel>', type='http', auth='public', website=True)
|
||||
@@ -34,4 +34,4 @@ class WebsiteLivechat(http.Controller):
|
||||
'team': channel.sudo().user_ids,
|
||||
'percentage': percentage
|
||||
}
|
||||
return request.website.render("website_livechat.channel_page", values)
|
||||
return request.render("website_livechat.channel_page", values)
|
||||
|
||||
@@ -46,7 +46,7 @@ class MailGroup(http.Controller):
|
||||
message_data = dict((message['res_id'], message['res_id_count']) for message in messages)
|
||||
|
||||
group_data = dict((group.id, {'monthly_message_nbr': message_data.get(group.id, 0)}) for group in groups)
|
||||
return request.website.render('website_mail_channel.mail_channels', {'groups': groups, 'group_data': group_data})
|
||||
return request.render('website_mail_channel.mail_channels', {'groups': groups, 'group_data': group_data})
|
||||
|
||||
@http.route(["/groups/is_member"], type='json', auth="public", website=True)
|
||||
def is_member(self, channel_id=0, **kw):
|
||||
@@ -144,7 +144,7 @@ class MailGroup(http.Controller):
|
||||
'date_end': date_end,
|
||||
'replies_per_page': self._replies_per_page,
|
||||
}
|
||||
return request.website.render('website_mail_channel.group_messages', values)
|
||||
return request.render('website_mail_channel.group_messages', values)
|
||||
|
||||
@http.route([
|
||||
'''/groups/<model('mail.channel'):group>/<model('mail.message', "[('model','=','mail.channel'), ('res_id','=',group[0])]"):message>''',
|
||||
@@ -168,7 +168,7 @@ class MailGroup(http.Controller):
|
||||
'next_message': next_message,
|
||||
'prev_message': prev_message,
|
||||
}
|
||||
return request.website.render('website_mail_channel.group_message', values)
|
||||
return request.render('website_mail_channel.group_message', values)
|
||||
|
||||
@http.route(
|
||||
'''/groups/<model('mail.channel'):group>/<model('mail.message', "[('model','=','mail.channel'), ('res_id','=',group[0])]"):message>/get_replies''',
|
||||
@@ -210,7 +210,7 @@ class MailGroup(http.Controller):
|
||||
# add partner
|
||||
channel.sudo().write({'channel_partner_ids': [(4, partner_id)]})
|
||||
|
||||
return request.website.render("website_mail_channel.confirmation_subscription", {'subscribing': True})
|
||||
return request.render("website_mail_channel.confirmation_subscription", {'subscribing': True})
|
||||
|
||||
@http.route("/groups/unsubscribe/<model('mail.channel'):channel>/<int:partner_id>/<string:token>", type='http', auth='public', website=True)
|
||||
def confirm_unsubscribe(self, channel, partner_id, token, **kw):
|
||||
@@ -226,4 +226,4 @@ class MailGroup(http.Controller):
|
||||
# remove partner
|
||||
channel.sudo().write({'channel_partner_ids': [(3, partner_id)]})
|
||||
|
||||
return request.website.render("website_mail_channel.confirmation_subscription", {'subscribing': False})
|
||||
return request.render("website_mail_channel.confirmation_subscription", {'subscribing': False})
|
||||
|
||||
@@ -13,13 +13,13 @@ class MassMailController(MassMailController):
|
||||
if mailing.exists():
|
||||
if mailing.mailing_model == 'mail.mass_mailing.contact':
|
||||
contacts = request.env['mail.mass_mailing.contact'].sudo().search([('email', '=', email)])
|
||||
return request.website.render('website_mass_mailing.page_unsubscribe', {
|
||||
return request.render('website_mass_mailing.page_unsubscribe', {
|
||||
'contacts': contacts,
|
||||
'email': email,
|
||||
'mailing_id': mailing_id})
|
||||
else:
|
||||
super(MassMailController, self).mailing(mailing_id, email=email, res_id=res_id, **post)
|
||||
return request.website.render('website_mass_mailing.page_unsubscribed')
|
||||
return request.render('website_mass_mailing.page_unsubscribed')
|
||||
|
||||
@http.route(['/mail/mailing/unsubscribe'], type='json', auth='none')
|
||||
def unsubscribe(self, mailing_id, opt_in_ids, opt_out_ids, email):
|
||||
|
||||
@@ -160,7 +160,7 @@ class WebsiteMembership(http.Controller):
|
||||
'post': post,
|
||||
'search': "?%s" % werkzeug.url_encode(post),
|
||||
}
|
||||
return request.website.render("website_membership.index", values)
|
||||
return request.render("website_membership.index", values)
|
||||
|
||||
# Do not use semantic controller due to SUPERUSER_ID
|
||||
@http.route(['/members/<partner_id>'], type='http', auth="public", website=True)
|
||||
@@ -171,5 +171,5 @@ class WebsiteMembership(http.Controller):
|
||||
if partner.exists() and partner.website_published: # TODO should be done with access rules
|
||||
values = {}
|
||||
values['main_object'] = values['partner'] = partner
|
||||
return request.website.render("website_membership.partner", values)
|
||||
return request.render("website_membership.partner", values)
|
||||
return self.members(**post)
|
||||
|
||||
@@ -20,5 +20,5 @@ class WebsitePartnerPage(http.Controller):
|
||||
'partner': partner_sudo,
|
||||
'edit_page': False
|
||||
}
|
||||
return request.website.render("website_partner.partner_page", values)
|
||||
return request.render("website_partner.partner_page", values)
|
||||
return request.not_found()
|
||||
|
||||
@@ -17,7 +17,7 @@ class website_payment(http.Controller):
|
||||
}
|
||||
for acquirer in acquirers:
|
||||
acquirer.form = acquirer.sudo()._registration_render(request.env.user.partner_id.id, {'error': {}, 'error_message': [], 'return_url': '/my/payment_method', 'json': False, 'bootstrap_formatting': True})
|
||||
return request.website.render("website_payment.pay_methods", values)
|
||||
return request.render("website_payment.pay_methods", values)
|
||||
|
||||
@http.route(['/website_payment/delete/'], methods=['POST'], type='http', auth="user", website=True)
|
||||
def delete(self, delete_pm_id=None):
|
||||
@@ -54,7 +54,7 @@ class website_payment(http.Controller):
|
||||
'amount': float(amount),
|
||||
'payment_form': payment_form,
|
||||
}
|
||||
return request.website.render('website_payment.pay', values)
|
||||
return request.render('website_payment.pay', values)
|
||||
|
||||
@http.route(['/website_payment/transaction'], type='json', auth="public", website=True)
|
||||
def transaction(self, reference, amount, currency_id, acquirer_id):
|
||||
@@ -78,6 +78,6 @@ class website_payment(http.Controller):
|
||||
tx = request.env['payment.transaction'].browse(tx_id)
|
||||
status = (tx.state == 'done' and 'success') or 'danger'
|
||||
message = (tx.state == 'done' and 'Your payment was successful! It may take some time to be validated on our end.') or 'OOps! There was a problem with your payment.'
|
||||
return request.website.render('website_payment.confirm', {'tx': tx, 'status': status, 'message': message})
|
||||
return request.render('website_payment.confirm', {'tx': tx, 'status': status, 'message': message})
|
||||
else:
|
||||
return request.redirect('/my/home')
|
||||
|
||||
@@ -53,7 +53,7 @@ class website_account(http.Controller):
|
||||
@http.route(['/my', '/my/home'], type='http', auth="public", website=True)
|
||||
def account(self, **kw):
|
||||
values = self._prepare_portal_layout_values()
|
||||
return request.website.render("website_portal.portal_my_home", values)
|
||||
return request.render("website_portal.portal_my_home", values)
|
||||
|
||||
@http.route(['/my/account'], type='http', auth='user', website=True)
|
||||
def details(self, redirect=None, **post):
|
||||
@@ -86,7 +86,7 @@ class website_account(http.Controller):
|
||||
'redirect': redirect,
|
||||
})
|
||||
|
||||
return request.website.render("website_portal.details", values)
|
||||
return request.render("website_portal.details", values)
|
||||
|
||||
def details_form_validate(self, data):
|
||||
error = dict()
|
||||
|
||||
@@ -77,7 +77,7 @@ class website_account(website_account):
|
||||
'archive_groups': archive_groups,
|
||||
'default_url': '/my/quotes',
|
||||
})
|
||||
return request.website.render("website_portal_sale.portal_my_quotations", values)
|
||||
return request.render("website_portal_sale.portal_my_quotations", values)
|
||||
|
||||
@http.route(['/my/orders', '/my/orders/page/<int:page>'], type='http', auth="user", website=True)
|
||||
def portal_my_orders(self, page=1, date_begin=None, date_end=None, **kw):
|
||||
@@ -114,7 +114,7 @@ class website_account(website_account):
|
||||
'archive_groups': archive_groups,
|
||||
'default_url': '/my/orders',
|
||||
})
|
||||
return request.website.render("website_portal_sale.portal_my_orders", values)
|
||||
return request.render("website_portal_sale.portal_my_orders", values)
|
||||
|
||||
@http.route(['/my/orders/<int:order>'], type='http', auth="user", website=True)
|
||||
def orders_followup(self, order=None, **kw):
|
||||
@@ -123,9 +123,9 @@ class website_account(website_account):
|
||||
order.check_access_rights('read')
|
||||
order.check_access_rule('read')
|
||||
except AccessError:
|
||||
return request.website.render("website.403")
|
||||
return request.render("website.403")
|
||||
order_invoice_lines = {il.product_id.id: il.invoice_id for il in order.invoice_ids.mapped('invoice_line_ids')}
|
||||
return request.website.render("website_portal_sale.orders_followup", {
|
||||
return request.render("website_portal_sale.orders_followup", {
|
||||
'order': order.sudo(),
|
||||
'order_invoice_lines': order_invoice_lines,
|
||||
})
|
||||
@@ -168,7 +168,7 @@ class website_account(website_account):
|
||||
'archive_groups': archive_groups,
|
||||
'default_url': '/my/invoices',
|
||||
})
|
||||
return request.website.render("website_portal_sale.portal_my_invoices", values)
|
||||
return request.render("website_portal_sale.portal_my_invoices", values)
|
||||
|
||||
def details_form_validate(self, data):
|
||||
error, error_message = super(website_account, self).details_form_validate(data)
|
||||
|
||||
@@ -61,11 +61,11 @@ class WebsiteAccount(website_account):
|
||||
'default_url': '/my/projects',
|
||||
'pager': pager
|
||||
})
|
||||
return request.website.render("website_project.my_projects", values)
|
||||
return request.render("website_project.my_projects", values)
|
||||
|
||||
@http.route(['/my/project/<model("project.project"):project>'], type='http', auth="user", website=True)
|
||||
def my_project(self, project=None, **kw):
|
||||
return request.website.render("website_project.my_project", {'project': project})
|
||||
return request.render("website_project.my_project", {'project': project})
|
||||
|
||||
@http.route(['/my/tasks', '/my/tasks/page/<int:page>'], type='http', auth="user", website=True)
|
||||
def my_tasks(self, page=1, date_begin=None, date_end=None, project=None, sortby=None, **kw):
|
||||
@@ -123,8 +123,8 @@ class WebsiteAccount(website_account):
|
||||
'default_url': '/my/tasks',
|
||||
'pager': pager
|
||||
})
|
||||
return request.website.render("website_project.my_tasks", values)
|
||||
return request.render("website_project.my_tasks", values)
|
||||
|
||||
@http.route(['/my/task/<model("project.task"):task>'], type='http', auth="user", website=True)
|
||||
def my_task(self, task=None, **kw):
|
||||
return request.website.render("website_project.my_task", {'task': task, 'user': request.env.user})
|
||||
return request.render("website_project.my_task", {'task': task, 'user': request.env.user})
|
||||
|
||||
@@ -75,9 +75,9 @@ class WebsiteAccount(website_account):
|
||||
'default_url': '/my/issues',
|
||||
'pager': pager
|
||||
})
|
||||
return request.website.render("website_project_issue.my_issues", values)
|
||||
return request.render("website_project_issue.my_issues", values)
|
||||
|
||||
@http.route(['/my/issues/<int:issue_id>'], type='http', auth="user", website=True)
|
||||
def my_issues_issue(self, issue_id=None, **kw):
|
||||
issue = request.env['project.issue'].browse(issue_id)
|
||||
return request.website.render("website_project_issue.my_issues_issue", {'issue': issue})
|
||||
return request.render("website_project_issue.my_issues_issue", {'issue': issue})
|
||||
|
||||
@@ -32,7 +32,7 @@ class sale_quote(http.Controller):
|
||||
order = request.env['sale.order'].search([('id', '=', order_id)])
|
||||
|
||||
if not order:
|
||||
return request.website.render('website.404')
|
||||
return request.render('website.404')
|
||||
|
||||
dummy, action = request.env['ir.model.data'].get_object_reference('sale', 'action_quotations')
|
||||
days = 0
|
||||
@@ -81,16 +81,16 @@ class sale_quote(http.Controller):
|
||||
'partner_id': order.partner_id.id,
|
||||
},
|
||||
context=render_ctx)
|
||||
return request.website.render('website_quote.so_quotation', values)
|
||||
return request.render('website_quote.so_quotation', values)
|
||||
|
||||
@http.route(['/quote/accept'], type='json', auth="public", website=True)
|
||||
def accept(self, order_id, token=None, signer=None, sign=None, **post):
|
||||
order_obj = request.registry.get('sale.order')
|
||||
order = order_obj.browse(request.cr, SUPERUSER_ID, order_id)
|
||||
if token != order.access_token:
|
||||
return request.website.render('website.404')
|
||||
return request.render('website.404')
|
||||
if order.require_payment:
|
||||
return request.website.render('website.404')
|
||||
return request.render('website.404')
|
||||
if order.state != 'sent':
|
||||
return False
|
||||
attachments=sign and [('signature.png', sign.decode('base64'))] or []
|
||||
@@ -104,7 +104,7 @@ class sale_quote(http.Controller):
|
||||
order_obj = request.registry.get('sale.order')
|
||||
order = order_obj.browse(request.cr, SUPERUSER_ID, order_id)
|
||||
if token != order.access_token:
|
||||
return request.website.render('website.404')
|
||||
return request.render('website.404')
|
||||
if order.state != 'sent':
|
||||
return werkzeug.utils.redirect("/quote/%s/%s?message=4" % (order_id, token))
|
||||
request.registry.get('sale.order').action_cancel(request.cr, SUPERUSER_ID, [order_id])
|
||||
@@ -117,7 +117,7 @@ class sale_quote(http.Controller):
|
||||
def update(self, line_id, remove=False, unlink=False, order_id=None, token=None, **post):
|
||||
order = request.registry.get('sale.order').browse(request.cr, SUPERUSER_ID, int(order_id))
|
||||
if token != order.access_token:
|
||||
return request.website.render('website.404')
|
||||
return request.render('website.404')
|
||||
if order.state not in ('draft','sent'):
|
||||
return False
|
||||
line_id=int(line_id)
|
||||
@@ -135,16 +135,16 @@ class sale_quote(http.Controller):
|
||||
@http.route(["/quote/template/<model('sale.quote.template'):quote>"], type='http', auth="user", website=True)
|
||||
def template_view(self, quote, **post):
|
||||
values = { 'template': quote }
|
||||
return request.website.render('website_quote.so_template', values)
|
||||
return request.render('website_quote.so_template', values)
|
||||
|
||||
@http.route(["/quote/add_line/<int:option_id>/<int:order_id>/<token>"], type='http', auth="public", website=True)
|
||||
def add(self, option_id, order_id, token, **post):
|
||||
vals = {}
|
||||
order = request.registry.get('sale.order').browse(request.cr, SUPERUSER_ID, order_id)
|
||||
if token != order.access_token:
|
||||
return request.website.render('website.404')
|
||||
return request.render('website.404')
|
||||
if order.state not in ['draft', 'sent']:
|
||||
return request.website.render('website.http_error', {'status_code': 'Forbidden', 'status_message': _('You cannot add options to a confirmed order.')})
|
||||
return request.render('website.http_error', {'status_code': 'Forbidden', 'status_message': _('You cannot add options to a confirmed order.')})
|
||||
option_obj = request.registry.get('sale.order.option')
|
||||
option = option_obj.browse(request.cr, SUPERUSER_ID, option_id)
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ class WebsiteRatingProject(http.Controller):
|
||||
def index(self, **kw):
|
||||
projects = request.env['project.project'].sudo().search([('rating_status', '!=', 'no'), ('website_published', '=', True)])
|
||||
values = {'projects': projects}
|
||||
return request.website.render('website_rating_project_issue.index', values)
|
||||
return request.render('website_rating_project_issue.index', values)
|
||||
|
||||
@http.route(['/project/rating/<int:project_id>'], type='http', auth="public", website=True)
|
||||
def page(self, project_id=None, **kw):
|
||||
@@ -27,7 +27,7 @@ class WebsiteRatingProject(http.Controller):
|
||||
'task_data': self._calculate_rating(project.id, "project.task"),
|
||||
'issue_data': self._calculate_rating(project.id, "project.issue"),
|
||||
}
|
||||
return request.website.render('website_rating_project_issue.project_rating_page', values)
|
||||
return request.render('website_rating_project_issue.project_rating_page', values)
|
||||
|
||||
def _calculate_rating(self, project_id, model_name):
|
||||
# Calculate rating for Tasks and Issues
|
||||
|
||||
@@ -258,7 +258,7 @@ class WebsiteSale(http.Controller):
|
||||
}
|
||||
if category:
|
||||
values['main_object'] = category
|
||||
return request.website.render("website_sale.products", values)
|
||||
return request.render("website_sale.products", values)
|
||||
|
||||
@http.route(['/shop/product/<model("product.template"):product>'], type='http', auth="public", website=True)
|
||||
def product(self, product, category='', search='', **kwargs):
|
||||
@@ -307,7 +307,7 @@ class WebsiteSale(http.Controller):
|
||||
'rating_message_values': rating_message_values,
|
||||
'rating_product': rating_product
|
||||
}
|
||||
return request.website.render("website_sale.product", values)
|
||||
return request.render("website_sale.product", values)
|
||||
|
||||
@http.route(['/shop/change_pricelist/<model("product.pricelist"):pl_id>'], type='http', auth="public", website=True)
|
||||
def pricelist_change(self, pl_id, **post):
|
||||
@@ -347,12 +347,12 @@ class WebsiteSale(http.Controller):
|
||||
values['suggested_products'] = _order._cart_accessories()
|
||||
|
||||
if post.get('type') == 'popover':
|
||||
return request.website.render("website_sale.cart_popover", values)
|
||||
return request.render("website_sale.cart_popover", values)
|
||||
|
||||
if post.get('code_not_available'):
|
||||
values['code_not_available'] = post.get('code_not_available')
|
||||
|
||||
return request.website.render("website_sale.cart", values)
|
||||
return request.render("website_sale.cart", values)
|
||||
|
||||
@http.route(['/shop/cart/update'], type='http', auth="public", methods=['POST'], website=True, csrf=False)
|
||||
def cart_update(self, product_id, add_qty=1, set_qty=0, **kw):
|
||||
@@ -377,7 +377,7 @@ class WebsiteSale(http.Controller):
|
||||
value['cart_quantity'] = order.cart_quantity
|
||||
from_currency = order.company_id.currency_id
|
||||
to_currency = order.pricelist_id.currency_id
|
||||
value['website_sale.cart_lines'] = request.website._render("website_sale.cart_lines", {
|
||||
value['website_sale.cart_lines'] = request.env['ir.ui.view'].render_template("website_sale.cart_lines", {
|
||||
'website_sale_order': order,
|
||||
'compute_currency': lambda price: from_currency.compute(price, to_currency),
|
||||
'suggested_products': order.with_context(pricelist=order.pricelist_id.id)._cart_accessories()
|
||||
@@ -594,7 +594,7 @@ class WebsiteSale(http.Controller):
|
||||
'error': errors,
|
||||
'callback': kw.get('callback'),
|
||||
}
|
||||
return request.website.render("website_sale.address", render_values)
|
||||
return request.render("website_sale.address", render_values)
|
||||
|
||||
@http.route(['/shop/checkout'], type='http', auth="public", website=True)
|
||||
def checkout(self, **post):
|
||||
@@ -612,7 +612,7 @@ class WebsiteSale(http.Controller):
|
||||
# Avoid useless rendering if called in ajax
|
||||
if post.get('xhr'):
|
||||
return 'ok'
|
||||
return request.website.render("website_sale.checkout", values)
|
||||
return request.render("website_sale.checkout", values)
|
||||
|
||||
@http.route(['/shop/confirm_order'], type='http', auth="public", website=True)
|
||||
def confirm_order(self, **post):
|
||||
@@ -665,7 +665,7 @@ class WebsiteSale(http.Controller):
|
||||
|
||||
values.update(request.env['sale.order']._get_website_data(order))
|
||||
|
||||
return request.website.render("website_sale.extra_info", values)
|
||||
return request.render("website_sale.extra_info", values)
|
||||
|
||||
# ------------------------------------------------------
|
||||
# Payment
|
||||
@@ -721,7 +721,7 @@ class WebsiteSale(http.Controller):
|
||||
acquirer.button = acquirer_button
|
||||
values['acquirers'].append(acquirer)
|
||||
|
||||
return request.website.render("website_sale.payment", values)
|
||||
return request.render("website_sale.payment", values)
|
||||
|
||||
@http.route(['/shop/payment/transaction/<int:acquirer_id>'], type='json', auth="public", website=True)
|
||||
def payment_transaction(self, acquirer_id):
|
||||
@@ -808,7 +808,7 @@ class WebsiteSale(http.Controller):
|
||||
'tx_post_msg': tx.acquirer_id.post_msg or None
|
||||
})
|
||||
|
||||
return {'recall': flag, 'message': request.website._render("website_sale.order_state_message", values)}
|
||||
return {'recall': flag, 'message': request.env['ir.ui.view'].render_template("website_sale.order_state_message", values)}
|
||||
|
||||
@http.route('/shop/payment/validate', type='http', auth="public", website=True)
|
||||
def payment_validate(self, transaction_id=None, sale_order_id=None, **post):
|
||||
@@ -859,7 +859,7 @@ class WebsiteSale(http.Controller):
|
||||
sale_order_id = request.session.get('sale_last_order_id')
|
||||
if sale_order_id:
|
||||
order = request.env['sale.order'].sudo().browse(sale_order_id)
|
||||
return request.website.render("website_sale.confirmation", {'order': order})
|
||||
return request.render("website_sale.confirmation", {'order': order})
|
||||
else:
|
||||
return request.redirect('/shop')
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ class WebsiteSaleOptions(WebsiteSale):
|
||||
to_currency = pricelist.currency_id
|
||||
compute_currency = lambda price: request.env['res.currency']._compute(from_currency, to_currency, price)
|
||||
product = request.env['product.product'].with_context(product_context).browse(int(product_id))
|
||||
return request.website._render("website_sale_options.modal", {
|
||||
return request.env['ir.ui.view'].render_template("website_sale_options.modal", {
|
||||
'product': product,
|
||||
'compute_currency': compute_currency,
|
||||
'get_attribute_value_ids': self.get_attribute_value_ids,
|
||||
|
||||
@@ -56,10 +56,10 @@ class website_slides(http.Controller):
|
||||
"""
|
||||
channels = request.env['slide.channel'].search([], order='sequence, id')
|
||||
if not channels:
|
||||
return request.website.render("website_slides.channel_not_found")
|
||||
return request.render("website_slides.channel_not_found")
|
||||
elif len(channels) == 1:
|
||||
return request.redirect("/slides/%s" % channels.id)
|
||||
return request.website.render('website_slides.channels', {
|
||||
return request.render('website_slides.channels', {
|
||||
'channels': channels,
|
||||
'user': request.env.user,
|
||||
'is_public_user': request.env.user == request.website.user_id
|
||||
@@ -131,7 +131,7 @@ class website_slides(http.Controller):
|
||||
}
|
||||
if search:
|
||||
values['search'] = search
|
||||
return request.website.render('website_slides.slides_search', values)
|
||||
return request.render('website_slides.slides_search', values)
|
||||
|
||||
# Display uncategorized slides
|
||||
if not slide_type and not category:
|
||||
@@ -147,7 +147,7 @@ class website_slides(http.Controller):
|
||||
values.update({
|
||||
'category_datas': category_datas,
|
||||
})
|
||||
return request.website.render('website_slides.home', values)
|
||||
return request.render('website_slides.home', values)
|
||||
|
||||
# --------------------------------------------------
|
||||
# SLIDE.SLIDE CONTOLLERS
|
||||
@@ -158,7 +158,7 @@ class website_slides(http.Controller):
|
||||
values = self._get_slide_detail(slide)
|
||||
if not values.get('private'):
|
||||
self._set_viewed_slide(slide, 'slide')
|
||||
return request.website.render('website_slides.slide_detail_view', values)
|
||||
return request.render('website_slides.slide_detail_view', values)
|
||||
|
||||
@http.route('''/slides/slide/<model("slide.slide", "[('channel_id.can_see', '=', True), ('datas', '!=', False), ('slide_type', '=', 'presentation')]"):slide>/pdf_content''', type='http', auth="public", website=True)
|
||||
def slide_get_pdf_content(self, slide):
|
||||
@@ -225,7 +225,7 @@ class website_slides(http.Controller):
|
||||
('Content-Disposition', disposition)])
|
||||
elif not request.session.uid and slide.download_security == 'user':
|
||||
return werkzeug.utils.redirect('/web?redirect=/slides/slide/%s' % (slide.id))
|
||||
return request.website.render("website.403")
|
||||
return request.render("website.403")
|
||||
|
||||
@http.route('''/slides/slide/<model("slide.slide"):slide>/promote''', type='http', auth='user', website=True)
|
||||
def slide_set_promoted(self, slide):
|
||||
@@ -344,8 +344,8 @@ class website_slides(http.Controller):
|
||||
values['is_embedded'] = is_embedded
|
||||
if not values.get('private'):
|
||||
self._set_viewed_slide(slide, 'embed')
|
||||
return request.website.render('website_slides.embed_slide', values)
|
||||
return request.render('website_slides.embed_slide', values)
|
||||
except AccessError: # TODO : please, make it clean one day, or find another secure way to detect
|
||||
# if the slide can be embedded, and properly display the error message.
|
||||
slide = request.env['slide.slide'].sudo().browse(slide_id)
|
||||
return request.website.render('website_slides.embed_slide_forbidden', {'slide': slide})
|
||||
return request.render('website_slides.embed_slide_forbidden', {'slide': slide})
|
||||
|
||||
Reference in New Issue
Block a user