We have multiple ways of simulating a frontend context while running python
tests (mainly during TransactionCase):
- `MockObject` class from 8557bcfa30
- `simulate_frontend_context` method from a5a5a57e48
- `DotDict` from f8efc9a957
This commit moves `MockObject` to misc to be reusable and adapt it to be
accessible by dot notation with `DotDict`.
Part of #34396
Before this commit, when an address would be edited or created from checkout,
we would always add a website_id on it.
(values_postprocess -> _checkout_form_save)
That would be incorrect if the website has not 'specific user account' enabled.
It would lead to an error as the user would not be able to connect to another
website. Indeed, the billing address is stored on the partner directly. Since
the res.user website_id is a related to the partner one, the user would then be
restricted to that website.
Closes#34396Fixes#34308
Card readers act as barcode scanners, they produce barcodes in a
certain format (see pos_mercury.barcode_rule_credit). Update the label
of the option to reflect this.
opw-2006596
Currently, while editing user profile from frontend, biography is displayed in
textarea despite of being an HTML field.
This commit fixes the behavior by providing users with wysiwyg ediotr to
update their biography while editing profile from frondend.
task-2007731
closesodoo/odoo#34207
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Before this commit, it was considered as an error because status was not OK
closesodoo/odoo#34377
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Commit https://github.com/odoo/odoo/commit/0c6e0d660ea00ad7ee9a3e94c0ac944cdf46565f
used flex to properly align address information and the fa icons. The
problem is that using flex prevents the parent div to ask for the
address information to be center/right aligned. This is the case for
the job pages in internal.
This commit uses display: inline-block on the top-level element of the
address to solve the problem.
opw-2000947
closesodoo/odoo#34371
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
As we will move those from other localizations to base,
we add those for Mongolia to base already.
closesodoo/odoo#34281
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
A special folder named `0.0.0` can contain scripts that are run on
upgrade of any version.
They are useful to make some sanity checks or other verifications to
ensure database consistency.
The first version of this patch used the more eye-catching `any` for
the migration folder, but it was problematic for upgrading from an older
version that doesn't contain this patch.
Using a version "number" containing two dots is required to avoid it
being prefixed with the server version (see `convert_version` method) and
resulting in a version like `10.0.any`.
Such version would have been executed, even without this patch, when
upgrading from an older major server version (9.0.1.0 < 10.0.any).
closesodoo/odoo#34268
Signed-off-by: Christophe Simonis <chs@odoo.com>
cache_hashes was introduced at 8a28cc22fd to reduce the number of reload
The cache is correctly reseted when the translations content changed but did
not contain all the translation-related parameters that are, however, stored
in the session_info
This commit fixes two bugs:
Language parameters invalidation:
1. Access the webclient in a specific language
2. Modify the language parameters (e.g. thousands separator)
3. Refresh the page
--> webclient is still using old language parameters (from cache)
No translation flag after installing a language:
1. Load a database in English in mono-language
2. Load a second language
3. Access a record with a translated field
--> translation button not present on translated field (multi_lang is still
false in cache value)
To fix it, this commit adds all the information that are returns by the
/web/webclient/translations call to make sure the hash represent the reality
closesodoo/odoo#34266
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
When e61639723d was forward-ported, there was an adapatation in 12.3
version with bbc8c9fc2 so the test pass (because of another issue where
if a line is moved after the draft line, the code tried to discard the
moved line and not the draft line).
The same adaptation is necessary in saas-12.4 but since the code changed
amply, the test was temporarily just skipped (in 83d0eaedc7).
With this changeset, the adaptation is forward-ported from saas-12.3 to
saas-12.4 and the test is re-enabled.
opw-1966589
closes#34277
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
- Create 2 included taxes: 21 % and 6 %
- Create a product A with 21 % as default tax
- Create a fiscal position to map the tax 21 % to tax 6 %
- Allow the fiscal position in the POS
- Add product in a POS order
- Apply the fiscal position
The subtotal is not recomputed correctly. On the other hand, if the
fiscal is first set then the product added, there is no problem.
This is because the `fix_tax_included_price` is only called by
`add_product` and not when changing the fiscal position.
opw-2020755
closesodoo/odoo#34260
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
The optimize modal was adding images to the modal even when closing
without optimizing the image.
Now when we close the modal, no images is append to it, same if we
click on "Keep Original" while optimizing an already existing image.
Part of #33983
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
The wysiwyg.widgets.image.existing template was not used and
reintroduced in a refactoring. It is now gone as it should be.
Commit where the template is removed with its only usage:
(in editor.xml as web_editor.dialog.image.existing)
78a30d44cf
Commit where the template is reappearing refactored but not used:
f296992317
Part of #33983
The div that is replaced with the existing.attachments template was not
the right target and kept nesting div into each other.
The parent div of the existing.attachments now has the
o_we_existing_attachments class (the target to be replaced by itself).
Part of #33983
DROP CONSTRAINT (even with IF EXISTS is specified) acquires an ACCESS
EXCLUSIVE lock on the table, preventing e.g. inserts in an other
transaction, so ir_logging would systematically deadlock if configured
to the same database and a warning would be triggered during install
or update (if that ran ir.logging's init).
1. hand-roll the "IF EXISTS" bit, to avoid taking an ACCESS EXCLUSIVE
lock on the table if the problematic constraint does not exist and
thus doesn't need to be dropped (which by now should be the vast
majority of cases).
Replacing DROP CONSTRAINT with DISABLE TRIGGER does not fix the
issue as *that* acquires SHARE ROW EXCLUSIVE. While that's less
constraitning than ACCESS EXCLUSIVE, it still conflicts with an
insert's ROW_EXCLUSIVE.
2. add a timeout to the logging INSERT anyway, the deadlock is still
an issue if we're updating a database which does have the
problematic constraint, and we want to preclude the possible
eventual introduction of new deadlocks in the future.
closesodoo/odoo#34243
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
Before this commit, the No Change status wasn't properly set because
the `filehash` wasn't passed to `_binary_set_headers` and because
the status was not changed to 304 if it was already set to 200 earlier.
This commit fixes this issue and also prevents images to be processed
in `content_image` if the status is 304.
opw-2008426
closesodoo/odoo#34032
Signed-off-by: Christophe Simonis <chs@odoo.com>
Under certain unknown conditions, the range cannot be applied and
triggered an error. In order to allow the user to keep editing, we need
to prevent the dialog from showing, hence the use of `console.error`.
If this error appears, the carret is moved to the beginning of the focused
node.
If this error appears, then bullet can generate an error (I managed to
have the bug once or simulate it by manually breaking the dom and range)
closesodoo/odoo#34284
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
For some strange reasons, the e-learning ranks are created in data but
the demo data override their motivational message fields.
Unfortunately, the demo data were ok but the normal data had broken
images in them.
closesodoo/odoo#34282
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
The new editor of https://github.com/odoo/odoo/pull/29775 came with a
fullscreen option. When using the toggle when the editor is in inside
a modal, the editor stretched only to match the size of the modal
instead of the viewport.
This is because the 'position: fixed' rule which is used to achieve the
fullscreen layout cannot work if a parent of the element has a CSS
transform applied on it. Indeed in that case, that element acts like the
viewport for 'position: fixed' elements.
closesodoo/odoo#34272
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
* Setup an IoTBox connected to a receipt printer
* In POS Config:
- IoT Box: check "IoTBox", set the IP of the Box and check "Receipt Printer"
- Pricing: Select "Tax-Included Price"
* Start the POS, select any product
* Click on "Disc" on the virutal keyboard on the bottom left of the POS
* Enter the amount of the discount
* Validatate payment (Click "Payment" > "Cash" > Enter Amount > "Validate")
* A ticket should print on the receipt printer:
- The price in the rigth column is correct
Current behaviour:
* In the left column, it shows : Product name, Base price, Discount: X%, 1 x Price --> This price is not correct, it shows the price with the discount applied twice.
Expected behaviour:
* Discount applied once everywhere on ticket.
task-1978564
closesodoo/odoo#34278
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Before this commit, if a user select option 'tax-Included Price' in pricing
from pos.config and sale product with a discount, it is first displaying
price without tax instead of the price including tax.
Task-2002464
Closes#33733closesodoo/odoo#34259
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Following the new editor at https://github.com/odoo/odoo/pull/29775,
the html field to edit the mass mailing popups in the backend appeared
entirely broken.
This was because the editor css was not loaded for that field.
closesodoo/odoo#34250
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
When computing `is_absent` for multiple employees
(multiple records in `self`), if one employee is really absent
(leave), all employee in the recordset are also considered
absent.
Note: it never happens in saas-12.2 but in master
and possibly custo.
closesodoo/odoo#34241
Signed-off-by: Romain Libert (rli) <rli@odoo.com>
Traceback appeared due to incorrect syntax in expression.AND. The function
was called with separate arguments instead of array of arguments.
Task-2017568
closesodoo/odoo#34216
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Before, a portal user who tried to share a slide by mail got
a Odoo Server Error. He will now be able to share it without
any error.
closesodoo/odoo#34320
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Before this commit, using google geoloc, we only provide a string as address
withtout more information.
Now by defaut, we force the country as components:
https://developers.google.com/maps/documentation/geocoding/intro#geocoding
Related to task-2030886
**setup:**
```python
url = "https://maps.googleapis.com/maps/api/geocode/json"
```
**before:**
```python
params = {'address': 'Georgia', 'key': apikey}
requests.get(url, params).json()
```
> ==> Return coordinate of "Georgia, United States"
> What is completely wrong
>
**after:**
```python
params = {'address': 'Georgia', 'components':'country:Georgia', 'key': apikey}
requests.get(url, params).json()
```
> ==> Return Nothing
> What is strange but less wrong than US
>
```python
params = {'address': 'Belgium', 'components':'country:Belgium', 'key': apikey}
requests.get(url, params).json()
```
> ==> Return coordinate of Belgium
closesodoo/odoo#34582
Signed-off-by: Christophe Simonis <chs@odoo.com>
Before this commit, 50% of the time, the design of the editor in the
website appeared broken. This was because the two editor assets (the
web_editor one and the website one) are lazy loaded... but their load
order was not deterministic. The bug was introduced with the new editor
merged with https://github.com/odoo/odoo/pull/29775.
In fact the lazy loading system introduced by the `loadLibs` function
of the ajax module was designed to allow sequential and/or parallel
loading of JS files... but not of assets bundles (for CSS it is always
forced to parallel because only the DOM order matters anyway). This
commit shares the code to allow sequential and/or parallel loading of
assets bundles. It also forces the asset bundle resources to be loaded
after css and js resources.
closesodoo/odoo#34544
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
Since changes made on 'product.product' model in rev: 30e4d89a62
the domain is not represented as a string, but as a function, and that
leads to error as the javascript function is sent to the server instead
of a string representing a domain.
So we check the type of domain to see if we have to evaluate a function
or send the domain as a string
closesodoo/odoo#34453
Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
This fix correctly displayed motivational of next rank to achieve depending
on current karma. Indeed description_motivational field is not the
motivational to reach next rank but to reach the current rank, taken from
previous rank point of view. That way a given rank is configured by modifying
only 1 data.
When not having any karma points (newly created user) the next rank is computed
as being the first available rank. Motivational phrases and badges are updated
accordingly. This commit partially reverts 489c8623e2.
Result
* new user with no karma: next rank is the first rank;
* user with karma and next rank: as currently;
* user being at final rank: next rank is just current rank with a 100%
circle;
Linked to task 2005840
Related to PR #34220