[PATCH] Upstream patch - 19102021

This commit is contained in:
Parthiv Patel
2021-10-19 09:36:47 +00:00
parent df4d129ec9
commit a6cd7c13d3
15 changed files with 145 additions and 21 deletions
@@ -8,7 +8,7 @@
<field name="inherit_id" ref="event.event_type_ticket_view_tree_from_type"/>
<field name="arch" type="xml">
<field name="name" position="after">
<field name="product_id"/>
<field name="product_id" context="{'default_event_ok': 1, 'default_type': 'service'}"/>
</field>
<field name="description" position="after">
<field name="price"/>
@@ -22,7 +22,7 @@
<field name="inherit_id" ref="event.event_type_ticket_view_form_from_type"/>
<field name="arch" type="xml">
<field name="name" position="after">
<field name="product_id"/>
<field name="product_id" context="{'default_event_ok': 1, 'default_type': 'service'}"/>
</field>
<field name="description" position="after">
<field name="price"/>
@@ -43,7 +43,7 @@
<attribute name="string">Sales End</attribute>
</field>
<field name="name" position="after">
<field name="product_id" context="{'default_event_ok': 1}"/>
<field name="product_id" context="{'default_event_ok': 1, 'default_type': 'service'}"/>
</field>
<field name="description" position="after">
<field name="price"/>
@@ -57,7 +57,7 @@
<field name="inherit_id" ref="event.event_event_ticket_view_form_from_event"/>
<field name="arch" type="xml">
<field name="name" position="after">
<field name="product_id" context="{'default_event_ok':1}"/>
<field name="product_id" context="{'default_event_ok':1, 'default_type': 'service'}"/>
</field>
<field name="description" position="after">
<field name="price"/>
-5
View File
@@ -994,11 +994,6 @@ msgstr ""
msgid "Liabilities under Short-Term Loan Agreements"
msgstr ""
#. module: l10n_lt
#: model:account.account.template,name:l10n_lt.account_chart_template_lithuania_liquidity_transfer
msgid "Liquidity Transfer"
msgstr ""
#. module: l10n_lt
#: model:account.account.template,name:l10n_lt.account_account_template_4220
msgid "Long-Term Liabilities under Loan Agreements"
-5
View File
@@ -994,11 +994,6 @@ msgstr "Atostoginių kaupiniai"
msgid "Liabilities under Short-Term Loan Agreements"
msgstr "Įsipareigojimai pagal trumpalaikių paskolų sutartis"
#. module: l10n_lt
#: model:account.account.template,name:l10n_lt.account_chart_template_lithuania_liquidity_transfer
msgid "Liquidity Transfer"
msgstr "Likvidumo pervedimas"
#. module: l10n_lt
#: model:account.account.template,name:l10n_lt.account_account_template_4220
msgid "Long-Term Liabilities under Loan Agreements"
@@ -184,7 +184,7 @@
"chart6427","Outside services",6427,"account.data_account_type_expenses","vn_template","False"
"chart6428","Other expenses",6428,"account.data_account_type_expenses","vn_template","False"
"chart711","Other Income",711,"account.data_account_type_other_income","vn_template","False"
"chart8111","Other Expenses",811,"account.data_account_type_expenses","vn_template","False"
"chart811","Other Expenses",811,"account.data_account_type_expenses","vn_template","False"
"chart8211","Current tax expense",8211,"account.data_account_type_expenses","vn_template","False"
"chart8212","Deferred tax expense",8212,"account.data_account_type_expenses","vn_template","False"
"chart911","Income Summary",911,"account.data_unaffected_earnings","vn_template","False"
1 id name code user_type_id/id chart_template_id/id reconcile
184 chart6427 Outside services 6427 account.data_account_type_expenses vn_template False
185 chart6428 Other expenses 6428 account.data_account_type_expenses vn_template False
186 chart711 Other Income 711 account.data_account_type_other_income vn_template False
187 chart8111 chart811 Other Expenses 811 account.data_account_type_expenses vn_template False
188 chart8211 Current tax expense 8211 account.data_account_type_expenses vn_template False
189 chart8212 Deferred tax expense 8212 account.data_account_type_expenses vn_template False
190 chart911 Income Summary 911 account.data_unaffected_earnings vn_template False
+2 -2
View File
@@ -631,8 +631,8 @@ msgid "Ordinary shares with voting rights"
msgstr ""
#. module: l10n_vn
#: model:account.account,name:l10n_vn.1_chart8111
#: model:account.account.template,name:l10n_vn.chart8111
#: model:account.account,name:l10n_vn.1_chart811
#: model:account.account.template,name:l10n_vn.chart811
msgid "Other Expenses"
msgstr ""
+2 -2
View File
@@ -632,8 +632,8 @@ msgid "Ordinary shares with voting rights"
msgstr "Cổ phiếu phổ thông có quyền biểu quyết"
#. module: l10n_vn
#: model:account.account,name:l10n_vn.1_chart8111
#: model:account.account.template,name:l10n_vn.chart8111
#: model:account.account,name:l10n_vn.1_chart811
#: model:account.account.template,name:l10n_vn.chart811
msgid "Other Expenses"
msgstr "Chi phí bằng tiền khác"
@@ -82,8 +82,21 @@ class LinkTracker(models.Model):
@api.depends('url')
def _compute_redirected_url(self):
"""Compute the URL to which we will redirect the user.
By default, add UTM values as GET parameters. But if the system parameter
`link_tracker.no_external_tracking` is set, we add the UTM values in the URL
*only* for URLs that redirect to the local website (base URL).
"""
no_external_tracking = self.env['ir.config_parameter'].sudo().get_param('link_tracker.no_external_tracking')
for tracker in self:
base_domain = urls.url_parse(tracker.get_base_url()).netloc
parsed = urls.url_parse(tracker.url)
if no_external_tracking and parsed.netloc and parsed.netloc != base_domain:
tracker.redirected_url = parsed.to_url()
continue
utms = {}
for key, field_name, cook in self.env['utm.mixin'].tracking_fields():
field = self._fields[field_name]
+1
View File
@@ -2,4 +2,5 @@
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
from . import common
from . import test_link_tracker
from . import test_mail_render_mixin
@@ -0,0 +1,70 @@
# -*- coding: utf-8 -*-
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
from unittest.mock import patch
from .common import MockLinkTracker
from flectra.tests import common
class TestLinkTracker(common.TransactionCase, MockLinkTracker):
@patch('flectra.addons.link_tracker.models.link_tracker.LinkTracker.get_base_url',
return_value='http://example.com')
def test_no_external_tracking(self, mocked_get_base_url):
self.env['ir.config_parameter'].set_param('link_tracker.no_external_tracking', '1')
campaign = self.env['utm.campaign'].create({'name': 'campaign'})
source = self.env['utm.source'].create({'name': 'source'})
medium = self.env['utm.medium'].create({'name': 'medium'})
expected_utm_params = {
'utm_campaign': campaign.name,
'utm_source': source.name,
'utm_medium': medium.name,
}
# URL to an external website -> UTM parameters should no be added
# because the system parameter "no_external_tracking" is set
link = self.env['link.tracker'].create({
'url': 'http://external.com/test?a=example.com',
'campaign_id': campaign.id,
'source_id': source.id,
'medium_id': medium.id,
'title': 'Title',
})
self.assertLinkParams(
'http://external.com/test',
link,
{'a': 'example.com'}
)
# URL to the local website -> UTM parameters should be added since we know we handle them
# even though the parameter "no_external_tracking" is enabled
link.url = 'http://example.com/test?a=example.com'
self.assertLinkParams(
'http://example.com/test',
link,
{**expected_utm_params, 'a': 'example.com'}
)
# Relative URL to the local website -> UTM parameters should be added since we know we handle them
# even though the parameter "no_external_tracking" is enabled
link.url = '/test?a=example.com'
self.assertLinkParams(
'/test',
link,
{**expected_utm_params, 'a': 'example.com'}
)
# Deactivate the system parameter
self.env['ir.config_parameter'].set_param('link_tracker.no_external_tracking', False)
# URL to an external website -> UTM parameters should be added since
# the system parameter "link_tracker.no_external_tracking" is disabled
link.url = 'http://external.com/test?a=example.com'
self.assertLinkParams(
'http://external.com/test',
link,
{**expected_utm_params, 'a': 'example.com'}
)
@@ -1216,7 +1216,7 @@ function factory(dependencies) {
* If true composer will log a note, else a comment will be posted.
*/
isLog: attr({
default: false,
default: true,
}),
/**
* Determines whether a post_message request is currently pending.
@@ -43,7 +43,7 @@
</div>
</div>
<div t-if="o.workorder_ids">
<div t-if="o.workorder_ids" groups="mrp.group_mrp_routings">
<h3>
<span t-if="o.state == 'done'">Operations Done</span>
<span t-else="">Operations Planned</span>
@@ -81,7 +81,9 @@ flectra.define('web.DatePickerOwl', function (require) {
* @param {...any} args anything that will be passed to the datetimepicker function.
*/
_datetimepicker(...args) {
this.ignoreBootstrapEvents = true;
$(this.el).datetimepicker(...args);
this.ignoreBootstrapEvents = false;
}
/**
@@ -120,6 +122,9 @@ flectra.define('web.DatePickerOwl', function (require) {
* @private
*/
_onDateTimePickerHide() {
if (this.ignoreBootstrapEvents) {
return;
}
const date = this._parseInput(this.inputRef.el.value);
this.state.warning = date.format('YYYY-MM-DD') > moment().format('YYYY-MM-DD');
this.trigger('datetime-changed', { date });
@@ -132,6 +137,9 @@ flectra.define('web.DatePickerOwl', function (require) {
* @private
*/
_onDateTimePickerShow() {
if (this.ignoreBootstrapEvents) {
return;
}
this.inputRef.el.select();
}
@@ -628,6 +628,8 @@ var FieldDateRange = InputField.extend({
autoUpdateInput: false,
timePickerIncrement: 5,
locale: {
applyLabel: _t('Apply'),
cancelLabel: _t('Cancel'),
format: this.isDateField ? time.getLangDateFormat() : time.getLangDatetimeFormat(),
},
}
@@ -4,6 +4,8 @@ flectra.define('web.datepicker_tests', function (require) {
const { DatePicker, DateTimePicker } = require('web.DatePickerOwl');
const testUtils = require('web.test_utils');
const time = require('web.time');
const CustomFilterItem = require('web.CustomFilterItem');
const ActionModel = require('web/static/src/js/views/action_model.js');
const { createComponent } = testUtils;
@@ -163,6 +165,43 @@ flectra.define('web.datepicker_tests', function (require) {
testUtils.unpatch(time);
});
QUnit.test('custom filter date', async function (assert) {
assert.expect(5);
class MockedSearchModel extends ActionModel {
dispatch(method, ...args) {
assert.strictEqual(method, 'createNewFilters');
const preFilters = args[0];
const preFilter = preFilters[0];
assert.strictEqual(preFilter.description,
'A date is equal to "05/05/2005"',
"description should be in localized format");
assert.deepEqual(preFilter.domain,
'[["date_field","=","2005-05-05"]]',
"domain should be in UTC format");
}
}
const searchModel = new MockedSearchModel();
const date_field = { name: 'date_field', string: "A date", type: 'date', searchable: true };
const cfi = await createComponent(CustomFilterItem, {
props: {
fields: { date_field },
},
env: { searchModel },
});
await testUtils.controlPanel.toggleAddCustomFilter(cfi);
await testUtils.fields.editSelect(cfi.el.querySelector('.o_generator_menu_field'), 'date_field');
const valueInput = cfi.el.querySelector('.o_generator_menu_value .o_input');
await testUtils.dom.click(valueInput);
assert.containsOnce(document.body, '.datepicker');
await testUtils.fields.editSelect(valueInput, '05/05/2005');
await testUtils.controlPanel.applyFilter(cfi);
assert.containsNone(document.body, '.datepicker');
cfi.destroy();
});
QUnit.module('DateTimePicker');
QUnit.test("basic rendering", async function (assert) {
@@ -2574,6 +2574,7 @@ options.registry.ScrollButton = options.Class.extend({
'justify-content-center',
'mx-auto',
'bg-primary',
'o_not_editable',
);
anchor.href = '#';
anchor.contentEditable = "false";