[IMP] *: replace web.base.url ICP by helper method
Previous commit introduce an helper to get the most suited URL for a record instead of always using the ICP, which is not correct in a website context. This commit replaces calls to ICP by the helper method. Community: https://github.com/odoo/odoo/pull/68201 Enterprise: https://github.com/odoo/enterprise/pull/17538 Upgrade: https://github.com/odoo/upgrade/pull/2372 task-2476101
This commit is contained in:
@@ -26,7 +26,7 @@ class TestPortalAttachment(AccountTestInvoicingHttpCommon):
|
||||
],
|
||||
})
|
||||
|
||||
cls.base_url = cls.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
cls.base_url = cls.out_invoice.get_base_url()
|
||||
|
||||
@mute_logger('odoo.addons.http_routing.models.ir_http', 'odoo.http')
|
||||
def test_01_portal_attachment(self):
|
||||
|
||||
@@ -205,7 +205,7 @@ class AdyenAccount(models.Model):
|
||||
'res_id': self.env.company.adyen_account_id.id,
|
||||
'type': 'ir.actions.act_window',
|
||||
}
|
||||
return_url = url_join(self.env['ir.config_parameter'].sudo().get_param('web.base.url'), 'adyen_platforms/create_account')
|
||||
return_url = url_join(self.env.company.get_base_url(), 'adyen_platforms/create_account')
|
||||
onboarding_url = self.env['ir.config_parameter'].sudo().get_param('adyen_platforms.onboarding_url')
|
||||
return {
|
||||
'type': 'ir.actions.act_url',
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
Accept invitation
|
||||
</a>
|
||||
</div>
|
||||
% set website_url = object.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
% set website_url = object.get_base_url()
|
||||
Your Odoo domain is: <b><a href='${website_url}'>${website_url}</a></b><br />
|
||||
Your sign in email is: <b><a href="/web/login?login=${object.email}" target="_blank">${object.email}</a></b><br /><br />
|
||||
Never heard of Odoo? It’s an all-in-one business software loved by 3+ million users. It will considerably improve your experience at work and increase your productivity.
|
||||
|
||||
@@ -166,7 +166,7 @@ class TestLeadConvertMass(crm_common.TestLeadConvertMassCommon):
|
||||
test_leads = self._create_leads_batch(count=50, user_ids=[False])
|
||||
user_ids = self.assign_users.ids
|
||||
|
||||
with self.assertQueryCount(user_sales_manager=1368): # still some randomness (1366 spotted) - crm only: ??
|
||||
with self.assertQueryCount(user_sales_manager=1369): # still some randomness (1366 spotted) - crm only: ??
|
||||
mass_convert = self.env['crm.lead2opportunity.partner.mass'].with_context({
|
||||
'active_model': 'crm.lead',
|
||||
'active_ids': test_leads.ids,
|
||||
|
||||
@@ -115,8 +115,6 @@ class Digest(models.Model):
|
||||
digest.next_run_date = digest._get_next_run_date()
|
||||
|
||||
def _action_send_to_user(self, user, tips_count=1, consum_tips=True):
|
||||
web_base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
|
||||
rendered_body = self.env['mail.render.mixin']._render_template(
|
||||
'digest.digest_mail_main',
|
||||
'digest.digest',
|
||||
@@ -125,7 +123,7 @@ class Digest(models.Model):
|
||||
add_context={
|
||||
'title': self.name,
|
||||
'top_button_label': _('Connect'),
|
||||
'top_button_url': web_base_url,
|
||||
'top_button_url': self.get_base_url(),
|
||||
'company': user.company_id,
|
||||
'user': user,
|
||||
'tips_count': tips_count,
|
||||
|
||||
@@ -60,17 +60,16 @@ class ImLivechatChannel(models.Model):
|
||||
def _compute_script_external(self):
|
||||
view = self.env.ref('im_livechat.external_loader')
|
||||
values = {
|
||||
"url": self.env['ir.config_parameter'].sudo().get_param('web.base.url'),
|
||||
"dbname": self._cr.dbname,
|
||||
}
|
||||
for record in self:
|
||||
values["channel_id"] = record.id
|
||||
values["url"] = record.get_base_url()
|
||||
record.script_external = view._render(values) if record.id else False
|
||||
|
||||
def _compute_web_page_link(self):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
for record in self:
|
||||
record.web_page = "%s/im_livechat/support/%i" % (base_url, record.id) if record.id else False
|
||||
record.web_page = "%s/im_livechat/support/%i" % (record.get_base_url(), record.id) if record.id else False
|
||||
|
||||
@api.depends('channel_ids')
|
||||
def _compute_nbr_channel(self):
|
||||
@@ -228,7 +227,7 @@ class ImLivechatChannel(models.Model):
|
||||
username = _('Visitor')
|
||||
info = {}
|
||||
info['available'] = len(self._get_available_users()) > 0
|
||||
info['server_url'] = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
info['server_url'] = self.get_base_url()
|
||||
if info['available']:
|
||||
info['options'] = self._get_channel_infos()
|
||||
info['options']['current_partner_id'] = self.env.user.partner_id.id
|
||||
|
||||
@@ -45,13 +45,12 @@ class LinkTracker(models.Model):
|
||||
|
||||
@api.depends("url")
|
||||
def _compute_absolute_url(self):
|
||||
web_base_url = urls.url_parse(self.env['ir.config_parameter'].sudo().get_param('web.base.url'))
|
||||
for tracker in self:
|
||||
url = urls.url_parse(tracker.url)
|
||||
if url.scheme:
|
||||
tracker.absolute_url = tracker.url
|
||||
else:
|
||||
tracker.absolute_url = web_base_url.join(url).to_url()
|
||||
tracker.absolute_url = tracker.get_base_url().join(url).to_url()
|
||||
|
||||
@api.depends('link_click_ids.link_id')
|
||||
def _compute_count(self):
|
||||
@@ -70,12 +69,11 @@ class LinkTracker(models.Model):
|
||||
@api.depends('code')
|
||||
def _compute_short_url(self):
|
||||
for tracker in self:
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
tracker.short_url = urls.url_join(base_url, '/r/%(code)s' % {'code': tracker.code})
|
||||
tracker.short_url = urls.url_join(tracker.get_base_url(), '/r/%(code)s' % {'code': tracker.code})
|
||||
|
||||
def _compute_short_url_host(self):
|
||||
for tracker in self:
|
||||
tracker.short_url_host = self.env['ir.config_parameter'].sudo().get_param('web.base.url') + '/r/'
|
||||
tracker.short_url_host = tracker.get_base_url() + '/r/'
|
||||
|
||||
def _compute_code(self):
|
||||
for tracker in self:
|
||||
|
||||
@@ -114,10 +114,10 @@ class MassMailController(http.Controller):
|
||||
raise exceptions.AccessDenied()
|
||||
|
||||
res = mailing.convert_links()
|
||||
base_url = request.env['ir.config_parameter'].sudo().get_param('web.base.url').rstrip('/')
|
||||
base_url = mailing.get_base_url().rstrip('/')
|
||||
urls_to_replace = [
|
||||
(base_url + '/unsubscribe_from_list', mailing._get_unsubscribe_url(email, res_id)),
|
||||
(base_url + '/view', mailing._get_view_url(email, res_id))
|
||||
(base_url + '/unsubscribe_from_list', mailing._get_unsubscribe_url(email, res_id)),
|
||||
(base_url + '/view', mailing._get_view_url(email, res_id))
|
||||
]
|
||||
for url_to_replace, new_url in urls_to_replace:
|
||||
if url_to_replace in res[mailing_id]:
|
||||
|
||||
@@ -25,9 +25,8 @@ class MailMail(models.Model):
|
||||
return mails
|
||||
|
||||
def _get_tracking_url(self):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
token = tools.hmac(self.env(su=True), 'mass_mailing-mail_mail-open', self.id)
|
||||
return werkzeug.urls.url_join(base_url, 'mail/track/%s/%s/blank.gif' % (self.id, token))
|
||||
return werkzeug.urls.url_join(self.get_base_url(), 'mail/track/%s/%s/blank.gif' % (self.id, token))
|
||||
|
||||
def _send_prepare_body(self):
|
||||
""" Override to add the tracking URL to the body and to add
|
||||
@@ -62,14 +61,14 @@ class MailMail(models.Model):
|
||||
def _send_prepare_values(self, partner=None):
|
||||
# TDE: temporary addition (mail was parameter) due to semi-new-API
|
||||
res = super(MailMail, self)._send_prepare_values(partner)
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url').rstrip('/')
|
||||
if self.mailing_id and res.get('body') and res.get('email_to'):
|
||||
base_url = self.mailing_id.get_base_url()
|
||||
emails = tools.email_split(res.get('email_to')[0])
|
||||
email_to = emails and emails[0] or False
|
||||
|
||||
urls_to_replace = [
|
||||
(base_url + '/unsubscribe_from_list', self.mailing_id._get_unsubscribe_url(email_to, self.res_id)),
|
||||
(base_url + '/view', self.mailing_id._get_view_url(email_to, self.res_id))
|
||||
(base_url + '/unsubscribe_from_list', self.mailing_id._get_unsubscribe_url(email_to, self.res_id)),
|
||||
(base_url + '/view', self.mailing_id._get_view_url(email_to, self.res_id))
|
||||
]
|
||||
|
||||
for url_to_replace, new_url in urls_to_replace:
|
||||
|
||||
@@ -596,9 +596,8 @@ class MassMailing(models.Model):
|
||||
return [rid for rid in res_ids if rid not in done_res_ids]
|
||||
|
||||
def _get_unsubscribe_url(self, email_to, res_id):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
url = werkzeug.urls.url_join(
|
||||
base_url, 'mail/mailing/%(mailing_id)s/unsubscribe?%(params)s' % {
|
||||
self.get_base_url(), 'mail/mailing/%(mailing_id)s/unsubscribe?%(params)s' % {
|
||||
'mailing_id': self.id,
|
||||
'params': werkzeug.urls.url_encode({
|
||||
'res_id': res_id,
|
||||
@@ -610,9 +609,8 @@ class MassMailing(models.Model):
|
||||
return url
|
||||
|
||||
def _get_view_url(self, email_to, res_id):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
url = werkzeug.urls.url_join(
|
||||
base_url, 'mailing/%(mailing_id)s/view?%(params)s' % {
|
||||
self.get_base_url(), 'mailing/%(mailing_id)s/view?%(params)s' % {
|
||||
'mailing_id': self.id,
|
||||
'params': werkzeug.urls.url_encode({
|
||||
'res_id': res_id,
|
||||
@@ -799,10 +797,10 @@ class MassMailing(models.Model):
|
||||
random_tip = random.choice(random_tip).tip_description
|
||||
|
||||
formatted_date = tools.format_datetime(
|
||||
self.env, self.sent_date, self.user_id.tz, 'MMM dd, YYYY', self.user_id.lang
|
||||
self.env, self.sent_date, self.user_id.tz, 'MMM dd, YYYY', self.user_id.lang
|
||||
) if self.sent_date else False
|
||||
|
||||
web_base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
web_base_url = self.get_base_url()
|
||||
|
||||
return {
|
||||
'title': _('24H Stats of %(mailing_type)s "%(mailing_name)s"',
|
||||
|
||||
@@ -15,7 +15,7 @@ class TestMassMailingControllers(MassMailCommon, HttpCase):
|
||||
response = self.url_open(mail_mail._get_tracking_url())
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
base_url = mail_mail.get_base_url()
|
||||
url = werkzeug.urls.url_join(base_url, 'mail/track/%s/fake_token/blank.gif' % mail_mail.id)
|
||||
|
||||
response = self.url_open(url)
|
||||
|
||||
@@ -15,7 +15,6 @@ class SmsSms(models.Model):
|
||||
def _update_body_short_links(self):
|
||||
""" Override to tweak shortened URLs by adding statistics ids, allowing to
|
||||
find customer back once clicked. """
|
||||
shortened_schema = self.env['ir.config_parameter'].sudo().get_param('web.base.url') + '/r/'
|
||||
res = dict.fromkeys(self.ids, False)
|
||||
for sms in self:
|
||||
if not sms.mailing_id or not sms.body:
|
||||
@@ -24,7 +23,7 @@ class SmsSms(models.Model):
|
||||
|
||||
body = sms.body
|
||||
for url in re.findall(tools.TEXT_URL_REGEX, body):
|
||||
if url.startswith(shortened_schema):
|
||||
if url.startswith(sms.get_base_url() + '/r/'):
|
||||
body = body.replace(url, url + '/s/%s' % sms.id)
|
||||
res[sms.id] = body
|
||||
return res
|
||||
|
||||
@@ -19,9 +19,8 @@ class SMSComposer(models.TransientModel):
|
||||
# ------------------------------------------------------------
|
||||
|
||||
def _get_unsubscribe_url(self, res_id, trace_code, number):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
return werkzeug.urls.url_join(
|
||||
base_url,
|
||||
self.get_base_url(),
|
||||
'/sms/%s/%s' % (self.mailing_id.id, trace_code)
|
||||
)
|
||||
|
||||
|
||||
@@ -420,17 +420,6 @@ class PaymentAcquirer(models.Model):
|
||||
"""
|
||||
return True
|
||||
|
||||
def _get_base_url(self):
|
||||
""" Get the base url of the website on which the payment is made.
|
||||
|
||||
Note: self.ensure_one()
|
||||
|
||||
:return: The website base url
|
||||
:rtype: str
|
||||
"""
|
||||
self.ensure_one()
|
||||
return self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
|
||||
def _compute_fees(self, amount, currency, country):
|
||||
""" Compute the transaction fees.
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ class AdyenController(http.Controller):
|
||||
:rtype: dict
|
||||
"""
|
||||
acquirer_sudo = request.env['payment.acquirer'].browse(acquirer_id).sudo()
|
||||
domain = acquirer_sudo._get_base_url()
|
||||
domain = acquirer_sudo.get_base_url()
|
||||
data = {
|
||||
'originDomains': [domain],
|
||||
}
|
||||
@@ -144,10 +144,10 @@ class AdyenController(http.Controller):
|
||||
'allow3DS2': True
|
||||
},
|
||||
'channel': 'web', # Required to support 3DS
|
||||
'origin': acquirer_sudo._get_base_url(), # Required to support 3DS
|
||||
'origin': acquirer_sudo.get_base_url(), # Required to support 3DS
|
||||
'browserInfo': browser_info, # Required to support 3DS
|
||||
'returnUrl': urls.url_join(
|
||||
acquirer_sudo._get_base_url(),
|
||||
acquirer_sudo.get_base_url(),
|
||||
# Include the reference in the return url to be able to match it after redirection.
|
||||
# The key 'merchantReference' is chosen on purpose to be the same than that returned
|
||||
# by the /payments endpoint of Adyen.
|
||||
|
||||
@@ -29,7 +29,7 @@ class PaymentTransaction(models.Model):
|
||||
if self.provider != 'alipay':
|
||||
return res
|
||||
|
||||
base_url = self.acquirer_id._get_base_url()
|
||||
base_url = self.acquirer_id.get_base_url()
|
||||
if self.fees:
|
||||
# Similarly to what is done in `payment::payment.transaction.create`, we need to round
|
||||
# the sum of the amount and of the fees to avoid inconsistent string representations.
|
||||
|
||||
@@ -42,7 +42,7 @@ class PaymentTransaction(models.Model):
|
||||
if self.provider != 'buckaroo':
|
||||
return res
|
||||
|
||||
return_url = urls.url_join(self.acquirer_id._get_base_url(), BuckarooController._return_url)
|
||||
return_url = urls.url_join(self.acquirer_id.get_base_url(), BuckarooController._return_url)
|
||||
rendering_values = {
|
||||
'api_url': self.acquirer_id._buckaroo_get_api_url(),
|
||||
'Brq_websitekey': self.acquirer_id.buckaroo_website_key,
|
||||
|
||||
@@ -41,7 +41,7 @@ class PaymentTransaction(models.Model):
|
||||
# match in https://docs.adyen.com/checkout/components-web/localization-components, we simply
|
||||
# provide the lang string as is (after adapting the format) and let Adyen find the best fit.
|
||||
lang_code = (self._context.get('lang') or 'en-US').replace('_', '-')
|
||||
base_url = self.acquirer_id._get_base_url()
|
||||
base_url = self.acquirer_id.get_base_url()
|
||||
signature = payment_utils.generate_access_token(
|
||||
converted_amount, self.currency_id.name, self.reference
|
||||
)
|
||||
@@ -91,7 +91,7 @@ class PaymentTransaction(models.Model):
|
||||
converted_amount = payment_utils.to_minor_currency_units(
|
||||
self.amount, self.currency_id, CURRENCY_DECIMALS.get(self.currency_id.name)
|
||||
)
|
||||
base_url = self.acquirer_id._get_base_url()
|
||||
base_url = self.acquirer_id.get_base_url()
|
||||
signature = payment_utils.generate_access_token(
|
||||
converted_amount, self.currency_id.name, self.reference
|
||||
)
|
||||
|
||||
@@ -53,7 +53,7 @@ class PaymentTransaction(models.Model):
|
||||
if self.acquirer_id.provider != 'ogone':
|
||||
return res
|
||||
|
||||
base_url = self.acquirer_id._get_base_url()
|
||||
base_url = self.acquirer_id.get_base_url()
|
||||
return_url = urls.url_join(base_url, OgoneController._flexcheckout_return_url)
|
||||
rendering_values = {
|
||||
'ACCOUNT_PSPID': self.acquirer_id.ogone_pspid,
|
||||
|
||||
@@ -34,7 +34,7 @@ class PaymentTransaction(models.Model):
|
||||
if self.provider != 'paypal':
|
||||
return res
|
||||
|
||||
base_url = self.acquirer_id._get_base_url()
|
||||
base_url = self.acquirer_id.get_base_url()
|
||||
partner_first_name, partner_last_name = payment_utils.split_partner_name(self.partner_name)
|
||||
notify_url = self.acquirer_id.paypal_use_ipn \
|
||||
and urls.url_join(base_url, PaypalController._notify_url)
|
||||
|
||||
@@ -88,7 +88,7 @@ class PaymentTransaction(models.Model):
|
||||
# enter his email on the checkout page.
|
||||
'customer': customer['id'],
|
||||
}
|
||||
base_url = self.acquirer_id._get_base_url()
|
||||
base_url = self.acquirer_id.get_base_url()
|
||||
if self.operation == 'online_redirect':
|
||||
return_url = f'{urls.url_join(base_url, StripeController._checkout_return_url)}' \
|
||||
f'?reference={urls.url_quote_plus(self.reference)}'
|
||||
|
||||
@@ -135,10 +135,11 @@ class PosPaymentMethod(models.Model):
|
||||
|
||||
def _proxy_adyen_request_odoo_proxy(self, data, operation):
|
||||
try:
|
||||
return self.env.company.sudo().adyen_account_id._adyen_rpc(operation, {
|
||||
company_sudo = self.env.company.sudo()
|
||||
return company_sudo.adyen_account_id._adyen_rpc(operation, {
|
||||
'request_data': data,
|
||||
'account_code': self.sudo().adyen_payout_id.code,
|
||||
'notification_url': self.env['ir.config_parameter'].sudo().get_param('web.base.url'),
|
||||
'notification_url': company_sudo.get_base_url(),
|
||||
})
|
||||
except Forbidden:
|
||||
return {
|
||||
|
||||
@@ -61,6 +61,6 @@ class Rating(http.Controller):
|
||||
record_sudo.rating_apply(rate, token=token, feedback=kwargs.get('feedback'))
|
||||
lang = rating.partner_id.lang or get_lang(request.env).code
|
||||
return request.env['ir.ui.view'].with_context(lang=lang)._render_template('rating.rating_external_page_view', {
|
||||
'web_base_url': request.env['ir.config_parameter'].sudo().get_param('web.base.url'),
|
||||
'web_base_url': rating.get_base_url(),
|
||||
'rating': rating,
|
||||
})
|
||||
|
||||
@@ -157,13 +157,11 @@ class SurveyCase(common.TransactionCase):
|
||||
return self.url_open('/survey/%s/%s' % (survey.access_token, token))
|
||||
|
||||
def _access_begin(self, survey, token):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
url = base_url + '/survey/begin/%s/%s' % (survey.access_token, token)
|
||||
url = survey.get_base_url() + '/survey/begin/%s/%s' % (survey.access_token, token)
|
||||
return self.opener.post(url=url, json={})
|
||||
|
||||
def _access_submit(self, survey, token, post_data):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
url = base_url + '/survey/submit/%s/%s' % (survey.access_token, token)
|
||||
url = survey.get_base_url() + '/survey/submit/%s/%s' % (survey.access_token, token)
|
||||
return self.opener.post(url=url, json={'params': post_data})
|
||||
|
||||
def _find_csrf_token(self, text):
|
||||
|
||||
@@ -98,9 +98,8 @@ class SurveyInvite(models.TransientModel):
|
||||
|
||||
@api.depends('survey_id.access_token')
|
||||
def _compute_survey_start_url(self):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
for invite in self:
|
||||
invite.survey_start_url = werkzeug.urls.url_join(base_url, invite.survey_id.get_start_url()) if invite.survey_id else False
|
||||
invite.survey_start_url = werkzeug.urls.url_join(invite.survey_id.get_base_url(), invite.survey_id.get_start_url()) if invite.survey_id else False
|
||||
|
||||
# Overrides of mail.composer.mixin
|
||||
@api.depends('survey_id') # fake trigger otherwise not computed in new mode
|
||||
|
||||
@@ -28,7 +28,7 @@ class ServerAction(models.Model):
|
||||
action.xml_id = res.get(action.id)
|
||||
|
||||
def _compute_website_url(self, website_path, xml_id):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
base_url = self.get_base_url()
|
||||
link = website_path or xml_id or (self.id and '%d' % self.id) or ''
|
||||
if base_url and link:
|
||||
path = '%s/%s' % ('/website/action', link)
|
||||
|
||||
@@ -1162,7 +1162,7 @@ class Crawler(HttpCase):
|
||||
# | Filter By Country
|
||||
|
||||
self.authenticate("admin", "admin")
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
base_url = website_1.get_base_url()
|
||||
|
||||
# Simulate website 2 (that use only generic views)
|
||||
self.url_open(base_url + '/website/force/%s' % website_2.id)
|
||||
@@ -1373,7 +1373,7 @@ class Crawler(HttpCase):
|
||||
# ########################################################
|
||||
# Test the controller (which is calling get_related_views)
|
||||
self.authenticate("admin", "admin")
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
base_url = website_1.get_base_url()
|
||||
|
||||
# Simulate website 2
|
||||
self.url_open(base_url + '/website/force/%s' % website_2.id)
|
||||
|
||||
@@ -27,7 +27,7 @@ class CrmLeadForwardToPartner(models.TransientModel):
|
||||
'lead_location': ", ".join(lead_location),
|
||||
'partner_assigned_id': partner and partner.id or False,
|
||||
'partner_location': ", ".join(partner_location),
|
||||
'lead_link': self.get_lead_portal_url(lead.id, lead.type),
|
||||
'lead_link': self.get_lead_portal_url(lead),
|
||||
}
|
||||
|
||||
@api.model
|
||||
@@ -103,18 +103,22 @@ class CrmLeadForwardToPartner(models.TransientModel):
|
||||
self.env['crm.lead'].message_subscribe([partner_id])
|
||||
return True
|
||||
|
||||
def get_lead_portal_url(self, lead_id, type):
|
||||
action = type == 'opportunity' and 'action_portal_opportunities' or 'action_portal_leads'
|
||||
def get_lead_portal_url(self, lead):
|
||||
action = lead.type == 'opportunity' and 'action_portal_opportunities' or 'action_portal_leads'
|
||||
action_ref = self.env.ref('website_crm_partner_assign.%s' % (action,), False)
|
||||
portal_link = "%s/?db=%s#id=%s&action=%s&view_type=form" % (
|
||||
self.env['ir.config_parameter'].sudo().get_param('web.base.url'),
|
||||
lead.get_base_url(),
|
||||
self.env.cr.dbname,
|
||||
lead_id,
|
||||
lead.id,
|
||||
action_ref and action_ref.id or False)
|
||||
return portal_link
|
||||
|
||||
def get_portal_url(self):
|
||||
portal_link = "%s/?db=%s" % (self.env['ir.config_parameter'].sudo().get_param('web.base.url'), self.env.cr.dbname)
|
||||
if self:
|
||||
portal_url = self[0].get_base_url()
|
||||
else:
|
||||
portal_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
portal_link = "%s/?db=%s" % (portal_url, self.env.cr.dbname)
|
||||
return portal_link
|
||||
|
||||
forward_type = fields.Selection([
|
||||
|
||||
@@ -12,11 +12,11 @@ class RecruitmentSource(models.Model):
|
||||
|
||||
url = fields.Char(compute='_compute_url', string='Url Parameters')
|
||||
|
||||
@api.depends('source_id', 'source_id.name', 'job_id')
|
||||
@api.depends('source_id', 'source_id.name', 'job_id', 'job_id.company_id')
|
||||
def _compute_url(self):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
for source in self:
|
||||
source.url = urls.url_join(base_url, "%s?%s" % (source.job_id.website_url,
|
||||
source.url = urls.url_join(source.job_id.get_base_url(), "%s?%s" % (
|
||||
source.job_id.website_url,
|
||||
urls.url_encode({
|
||||
'utm_campaign': self.env.ref('hr_recruitment.utm_campaign_job').name,
|
||||
'utm_medium': self.env.ref('utm.utm_medium_website').name,
|
||||
|
||||
@@ -36,7 +36,7 @@ class TestLivechatCommon(tests.TransactionCase):
|
||||
}] + [visitor_vals]*self.max_sessions_per_operator)
|
||||
self.visitor_demo, self.visitor = self.visitors[0], self.visitors[1]
|
||||
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
base_url = self.livechat_channel.get_base_url()
|
||||
|
||||
self.open_chat_url = base_url + "/im_livechat/get_session"
|
||||
self.open_chat_params = {'params': {
|
||||
|
||||
@@ -12,7 +12,7 @@ class MailGroup(models.Model):
|
||||
|
||||
def _notify_email_header_dict(self):
|
||||
headers = super(MailGroup, self)._notify_email_header_dict()
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
base_url = self.get_base_url()
|
||||
headers['List-Archive'] = '<%s/groups/%s>' % (base_url, slug(self))
|
||||
headers['List-Subscribe'] = '<%s/groups>' % (base_url)
|
||||
headers['List-Unsubscribe'] = '<%s/groups?unsubscribe>' % (base_url,)
|
||||
|
||||
@@ -14,7 +14,7 @@ class MailMail(models.Model):
|
||||
if self.model == 'mail.channel' and self.res_id:
|
||||
# no super() call on purpose, no private links that could be quoted!
|
||||
channel = self.env['mail.channel'].browse(self.res_id)
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
base_url = channel.get_base_url()
|
||||
vals = {
|
||||
'maillist': _('Mailing-List'),
|
||||
'post_to': _('Post to'),
|
||||
|
||||
@@ -13,20 +13,9 @@ class PaymentAcquirer(models.Model):
|
||||
ondelete="restrict",
|
||||
)
|
||||
|
||||
def _get_base_url(self):
|
||||
""" Override of payment to take multi-website feature into account.
|
||||
|
||||
Note: self.ensure_one()
|
||||
|
||||
:return: The website base url
|
||||
:rtype: str
|
||||
"""
|
||||
def get_base_url(self):
|
||||
self.ensure_one()
|
||||
url = ''
|
||||
if request: # Give priority to url_root to handle multi-website cases
|
||||
url = request.httprequest.url_root
|
||||
if not url and self.website_id: # Secondly, use the website set on the acquirer
|
||||
url = self.website_id._get_http_domain()
|
||||
if not url: # Fallback to web.base.url
|
||||
url = super()._get_base_url()
|
||||
return url
|
||||
# Give priority to url_root to handle multi-website cases
|
||||
if request and request.httprequest.url_root:
|
||||
return request.httprequest.url_root
|
||||
return super().get_base_url()
|
||||
|
||||
@@ -52,8 +52,7 @@ class Users(models.Model):
|
||||
'email': self.email
|
||||
}
|
||||
params.update(kwargs)
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
token_url = base_url + '/profile/validate_email?%s' % urls.url_encode(params)
|
||||
token_url = self.get_base_url() + '/profile/validate_email?%s' % urls.url_encode(params)
|
||||
with self._cr.savepoint():
|
||||
activation_template.sudo().with_context(token_url=token_url).send_mail(
|
||||
self.id, force_send=True, raise_exception=True)
|
||||
|
||||
@@ -1154,13 +1154,13 @@ class WebsiteSlides(WebsiteProfile):
|
||||
# slide, the error will be the website.403 page instead of the one of the website_slides.embed_slide.
|
||||
# Do not forget the rendering here will be displayed in the embedded iframe
|
||||
|
||||
# determine if it is embedded from external web page
|
||||
referrer_url = request.httprequest.headers.get('Referer', '')
|
||||
base_url = request.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
is_embedded = referrer_url and not bool(base_url in referrer_url) or False
|
||||
# try accessing slide, and display to corresponding template
|
||||
try:
|
||||
slide = request.env['slide.slide'].browse(slide_id)
|
||||
# determine if it is embedded from external web page
|
||||
referrer_url = request.httprequest.headers.get('Referer', '')
|
||||
base_url = slide.get_base_url()
|
||||
is_embedded = referrer_url and not bool(base_url in referrer_url) or False
|
||||
if is_embedded:
|
||||
request.env['slide.embed'].sudo()._add_embed_url(slide.id, referrer_url)
|
||||
values = self._get_slide_detail(slide)
|
||||
|
||||
@@ -334,10 +334,12 @@ class Slide(models.Model):
|
||||
|
||||
@api.depends('document_id', 'slide_type', 'mime_type')
|
||||
def _compute_embed_code(self):
|
||||
base_url = request and request.httprequest.url_root or self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
if base_url[-1] == '/':
|
||||
base_url = base_url[:-1]
|
||||
base_url = request and request.httprequest.url_root
|
||||
for record in self:
|
||||
if not base_url:
|
||||
base_url = record.get_base_url()
|
||||
if base_url[-1] == '/':
|
||||
base_url = base_url[:-1]
|
||||
if record.datas and (not record.document_id or record.slide_type in ['document', 'presentation']):
|
||||
slide_url = base_url + url_for('/slides/embed/%s?page=1' % record.id)
|
||||
record.embed_code = '<iframe src="%s" class="o_wslides_iframe_viewer" allowFullScreen="true" height="%s" width="%s" frameborder="0"></iframe>' % (slide_url, 315, 420)
|
||||
@@ -515,10 +517,9 @@ class Slide(models.Model):
|
||||
# ---------------------------------------------------------
|
||||
|
||||
def _post_publication(self):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
for slide in self.filtered(lambda slide: slide.website_published and slide.channel_id.publish_template_id):
|
||||
publish_template = slide.channel_id.publish_template_id
|
||||
html_body = publish_template.with_context(base_url=base_url)._render_field('body_html', slide.ids)[slide.id]
|
||||
html_body = publish_template.with_context(base_url=slide.get_base_url())._render_field('body_html', slide.ids)[slide.id]
|
||||
subject = publish_template._render_field('subject', slide.ids)[slide.id]
|
||||
# We want to use the 'reply_to' of the template if set. However, `mail.message` will check
|
||||
# if the key 'reply_to' is in the kwargs before calling _get_reply_to. If the value is
|
||||
@@ -548,12 +549,11 @@ class Slide(models.Model):
|
||||
def _send_share_email(self, email, fullscreen):
|
||||
# TDE FIXME: template to check
|
||||
mail_ids = []
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
for record in self:
|
||||
template = record.channel_id.share_template_id.with_context(
|
||||
user=self.env.user,
|
||||
email=email,
|
||||
base_url=base_url,
|
||||
base_url=record.get_base_url(),
|
||||
fullscreen=fullscreen
|
||||
)
|
||||
email_values = {'email_to': email}
|
||||
|
||||
@@ -349,13 +349,13 @@ class IrActionsReport(models.Model):
|
||||
:return: bodies, header, footer, specific_paperformat_args
|
||||
'''
|
||||
IrConfig = self.env['ir.config_parameter'].sudo()
|
||||
base_url = IrConfig.get_param('report.url') or IrConfig.get_param('web.base.url')
|
||||
|
||||
# Return empty dictionary if 'web.minimal_layout' not found.
|
||||
layout = self.env.ref('web.minimal_layout', False)
|
||||
if not layout:
|
||||
return {}
|
||||
layout = self.env['ir.ui.view'].browse(self.env['ir.ui.view'].get_view_id('web.minimal_layout'))
|
||||
base_url = IrConfig.get_param('report.url') or layout.get_base_url()
|
||||
|
||||
root = lxml.html.fromstring(html)
|
||||
match_klass = "//div[contains(concat(' ', normalize-space(@class), ' '), ' {} ')]"
|
||||
|
||||
Reference in New Issue
Block a user