Commit Graph
16426 Commits
Author SHA1 Message Date
amdi-odoo 2a015600b2 [FIX] web,auth_totp,base: fix 2FA views
Web:

Adding a css rule constraint to avoid the rule
from overwriting the o_field_highlight css class
applied on a field in a form view.

Base, auth_totp:

Adding the o_field_highlight class on the 2FA
form fields to display the input bottom border and
thereby more easily identify the fields.

Adding a placeholder to the 2FA password field.

Modifying the 2FA title and toggle font to keep
a consistency between the different page titles.

Task-3083540

closes odoo/odoo#108611

X-original-commit: c128a01490bbbcbf824781f5e8716aa30e65ba5b
Signed-off-by: Warnon Aurélien (awa) <awa@odoo.com>
2022-12-26 11:39:47 +01:00
Ivan Yelizariev f59cea4521 [FIX] web: add missing binary class to domain_selector/fields
Domain widget has Components for every type of field to define list of available
operators, initial value, etc. However, class and template for some fields is
missing (e.g. for binary field).

This commit adds support for such fields via Default class. More specific
classes could be added later.

STEPS

* Activate Debug mode
* Open menu *User-defined Filters*
* Create a filter for `product.product`
* Select any binary field in the domain widget

opw-3084273

closes odoo/odoo#108631

X-original-commit: 3d0044046517690215625c92a6550fd6083fbd93
Signed-off-by: Michaël Mattiello <mcm@odoo.com>
Signed-off-by: Ivan Elizaryev (iel) <iel@odoo.com>
2022-12-26 10:39:10 +01:00
Adrien Dieudonné d816ef8939 [FIX] web: property fields should take all width
This commit restores the style we have for fields.
- Takes the full avalables space for the input value
- No limit for the label size
- Align property value to the top (only usefull in case of long label)
- Clean unnecessary css since we use grid

After this commit, the property field will be shown with the same
layout used for standard fields in groups.

closes odoo/odoo#108630

X-original-commit: a89c6763a7440822e839bdccc75d8a6177db7eec
Related: odoo/enterprise#35225
Signed-off-by: Romeo Fragomeli (rfr) <rfr@odoo.com>
2022-12-23 20:18:02 +01:00
Samuel Degueldre a5c0889748 [IMP] odoo,web: tests: ease memory leak debugging
This commit adds (in comments) the necessary code to (more) easily
detect memory leaks in the qunit test suite. Running the test with
those lines uncommented would log information about the heap size
after each test module and the delta of the module, after garbage
collecting.

Useful regexes to extract information from the log:
```
remove lines not containing "delta: ":
`(^.*?delta: .*$\n)|(^.*$\n)` => $1

extract deltas:
`.*suite (.*) -.*gc: (\d+).*delta: (-?\d+).*` => $1,$2,$3
```

closes odoo/odoo#108620

X-original-commit: 0d5cb1659468f01f1b6f88deca0b46c1810111b0
Related: odoo/enterprise#35224
Signed-off-by: Samuel Degueldre <sad@odoo.com>
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-23 19:19:15 +01:00
Aaron BohyandSamuel Degueldre 3ab33f6737 [FIX] web: assets: fix wrong usage of memoize
The `assets.loadBundle` function was memoized. However, this
function takes in arguments an object. What matters here is the
list of js/css libs/contents to load, and the methods to load them
are already memoized (based on the url to load, which is correct).

So the use of memoize for loadBundle was
 1) wrong, because you basically never call it twice with the same
    object reference, so you never do cache hits
 2) causing memory leaks because in mvc.js, it is called with the
    view controller instance as argument, which could thus never
    be garbage collected.

This commit remove the wrong usage of memoize, thus fixing the
memory leak.

X-original-commit: 921c68d587845785189c938aa90bd02b9936182f
Part-of: odoo/odoo#108620
Co-authored-by: Samuel Degueldre <sad@odoo.com>
2022-12-23 19:19:15 +01:00
Aaron BohyandSamuel Degueldre 969bdafe1e [FIX] web: tests: App: correctly cleanup sharedTemplates
A lot of tests generate dynamic owl templates (e.g. form tests).
These are added in a data structure (sharedTemplates). To mitigate
the memory footprint, there was a piece of code aiming at clearing,
at the end of each test, templates generated during the test.
However, the way it was implemented was wrong, as the cleanup was
only done after the first test.

This commit fixes the issue, and thus improve the memory footprint
of the qunit suite.

X-original-commit: 6ba84b4da195d65f53c45a4e00a8ef7425f121de
Part-of: odoo/odoo#108620
Co-authored-by: Samuel Degueldre <sad@odoo.com>
2022-12-23 19:19:14 +01:00
Aaron BohyandSamuel Degueldre 868adb0e46 [FIX] web: tests: clear handlers on LegacyBus
Before this commit, there was a piece of code aiming at clearing
event handlers registered on core.bus (the main instance of Bus),
registered during a test (main use case being: there is a service,
started in a test, and that service registers an event handler on
core.bus).

However, core.bus isn't the only instance of Bus, and this logic
should be applied to all of them (e.g. web_studio.bus). This was
a memory leak. This commit fixes it.

X-original-commit: 2e7dd01cfdad35b3c6384fec60b158747b86ab78
Part-of: odoo/odoo#108620
Co-authored-by: Samuel Degueldre <sad@odoo.com>
2022-12-23 19:19:14 +01:00
Aaron BohyandSamuel Degueldre a39e703a2e [FIX] web: remove memory leak with bootstrap tooltips
This commit fixes a memory leak occurring in basic renderers. It
seems that the issue comes from bootstrap 5.1 (might be fixed in
5.2). As this is legacy code, and updating from 5.1 to 5.2 doesn't
seem easy (moreover in stable), we come with a simple and local
patch in BasicRenderer.

X-original-commit: 3c01b1cd77adec146b1a90f96bb1223a2108678b
Part-of: odoo/odoo#108620
Co-authored-by: Samuel Degueldre <sad@odoo.com>
2022-12-23 19:19:14 +01:00
luviandBastien Fafchamps 0566b5f6ba [REF] base_import, web: convert import action to Owl
This commit reimplements the import action view to fully use Owl instead
of its legacy implementation. Different components have been created to
separate the UI in smaller blocks, and a model file contains the main
aspects of the import logic.

The SelectMenu component is now used instead of the jquery select2, and some
other web components and hooks have been used or modified to bring this
action to a better state. A custom ImportBlockUI component is used, to
support custom messages and the use of components. It was required to
reimplement the loading progress and indicator used by the view.

The set_file route in the base_import controller has been adapted to remove
the usage of jsonp type of code for this situation since it is no longer
needed nowadays.

On top of the rewrite, js tests have been added to make sure the feature
behaves correctly, and to assert the intended specs.

Finally, legacy files have been removed, since they are no longer required.

Enterprise PR: https://github.com/odoo/enterprise/pull/34249

task-3092474

Part-of: odoo/odoo#106265
Co-authored-by: Bastien Fafchamps <bafa@odoo.com>
2022-12-23 17:03:37 +01:00
Bastien Fafchampsandluvi 26a1eee340 [ADD] web: add SelectMenu component
This commit adds a new SelectMenu component. This component makes it
possible to search for options for a select element. It can be used to
replace the jquery select2 element for most cases.

Changes have been made to the Dropdown component as well as the position
hook, to allow the menu to be placed with the same width than the toggler,
using the 'fit' variant. Tests have been added to assert this position
feature.

Tests have been added to make sure the behavior of this component is
working as expected, and let the core element's usage being asserted.

Part-of: odoo/odoo#106265
Co-authored-by: luvi <luvi@odoo.com>
2022-12-23 17:03:36 +01:00
luvi 6a7b3dedaf [IMP] web: position_hook supports fit variant
This commits adds another variant to the position hook. This one allows
a popper to be positionned next to a side, having the same dimension from
this side. A classname is then added to the popper, allowing the element
to be stylized depending of the side it's fitting.

Possible values:
(bottom/top)-fit would give the same width as the reference
(left/right)-fit would give the same height as the reference

Tests have been added to make sure those dimensions are correctly
applied when using thr fit variant.

Part-of: odoo/odoo#106265
2022-12-23 17:03:36 +01:00
luviandFlorent Dardenne 97cc94269d [REF] mail, *: convert Activity view to Owl
*: project, web

This commit converts the Activity view to the current framework shared by
other views. Instead of extending Kanban view/elements, the Activity view
has been implemented by its own.

The project customization of the view has also been converted, as legacy
files have been removed.

Some tests have been adapted since some classnames might differ from the old
implementation, resulting to failing tests. But the overall testing cases
have been conserved.

closes odoo/odoo#107916

Related: odoo/enterprise#35177
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Co-authored-by: Florent Dardenne <dafl@odoo.com>
2022-12-23 16:07:06 +01:00
luviandFlorent Dardenne 28927c2eeb [REF] web, crm: adapt Kanban progressbar to be a component
This commit moves some parts of the code used by the progress bar of kanban
to its own component. It is now clearer to distinguished its code from the
renderer code (see crm_kanban_renderer). Also, it allows to re-use this
component in other views without making a direct use of 'kanban' elements.

The KanbanAnimatedNumber component has simply be renamed to AnimatedNumber,
as this naming suggested the element was only used as a Kanban element. This
more generic name now indicates that the element can be imported and used in
other places.

Part-of: odoo/odoo#107916
Co-authored-by: Florent Dardenne <dafl@odoo.com>
2022-12-23 16:07:05 +01:00
fdardenne 5358930855 [IMP] web,project: kanban: quick create when grouped by many2many
This commit adds the ability to quick create records from the
kanban view when it is grouped by a many2many field.

This feature improve the user experience for multiple views, here are
some examples of new possible workflows:

- Project -> My tasks (this view is grouped by m2m) -> quick create
- Project -> Select a project -> group by Assignees -> quick create
- Multiples module -> group by tags -> quick create

The "My Tasks" view is grouped by the m2m `personal_stage_type_ids`
field which is a complicated computed field on which we cannot write. A
custom behaviour in their `ProjectTaskRecord` was necessary in order to
support this feature. Previously, they also implemented a custom
behaviour for this field to be able to move records between groups.

closes odoo/odoo#108150

Task-id: 2960497
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-23 15:08:15 +01:00
Aaron Bohy a3d77e877d [IMP] web: list view: sticky header
With this commit, the header of list views no longer scrolls with
the table, it remains visible on the top when scrolling.

Task 1917230

closes odoo/odoo#107631

Related: odoo/enterprise#35097
Signed-off-by: Adrien Dieudonné (adr) <adr@odoo.com>
2022-12-23 14:09:23 +01:00
FrancoisGe ec201d2205 [FIX] web: save ace field with alt+s
Before this commit, edit an ace field and press alt+s remove the change.

How:
- edit an ace field
- press alt+s

Before:
The change is removed.

After:
The change is saved.

closes odoo/odoo#108579

X-original-commit: 5ca1b68ef9f5b31416cdfbeee6e984ca754d38cd
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-23 12:11:14 +01:00
Michael (mcm) 296413a616 [IMP] web: edit view in current action
Before this commit, editing views from debug menu opened a dialog
and the user needed to refresh the page to see the changes.
Now, the edit view is opened in a new action so when the user goes back
in the breadcrumb, the view is updated.

task id: 3081332

closes odoo/odoo#108524

Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-23 12:11:03 +01:00
Samuel Degueldre f7f16bd85d [FIX] web: correctly log full traceback for uncaught errors
Previously, we added some handling so that errors that were not
defaultPrevented would have their traceback logged by the error service
instead of the default behaviour of the browser, because not all
browsers correctly log error chains (errors with causes). This did not
actually work because the errorEvent was written on the object at the
top of the error chain and checked on the error at the bottom of it.

This commit fixes that by just looking at the event on the uncaught
error.

closes odoo/odoo#108463

X-original-commit: cefba026ad7fe453da840a948e25d29d4d1837e9
Signed-off-by: Géry Debongnie <ged@odoo.com>
Signed-off-by: Samuel Degueldre <sad@odoo.com>
2022-12-23 12:10:55 +01:00
Xavier-Do bc61ab4fb2 [FIX] web: format set_profiling output nicely
JSON content can be rendered nicely by browsers when using the
appropriate mimetype

closes odoo/odoo#107708

X-original-commit: 70153bbe233bb81d51752c5f1ed1766414eb875b
Signed-off-by: Olivier Dony (odo) <odo@odoo.com>
2022-12-23 12:10:52 +01:00
Mathieu (mano) c1d3cc88f6 [FIX] web: fixing font weight on fedora
This commit replaces Liberation Sans for Noto Sans in the default system
font stack as Liberation doesn't support font-weight: 500 and had a 
fallback at 400.

Liberation Sans was the fallback font on Fedora Linux, this commit fixes
it by setting Noto Sans (variable font) as the fallback font for Fedora.

task-3076171

closes odoo/odoo#106525

Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-23 10:09:54 +01:00
Adrien Dieudonne 87858d6e00 [FIX] web: status_indicator: 'unable to save' not aligned
Before this commit, the warning message was below the buttons.

Steps to reproduce:
- Accounting -> Configuration -> Payment Providers
- Select one of them (e.g. Stripe)
- Change the state to 'Test Mode'
- Try to save

Task-ID: 3106197

Related PR: https://github.com/odoo/odoo/pull/107227

closes odoo/odoo#108411

X-original-commit: 94f8c4875e3c79709450986ba03e7dee6cb60afe
Signed-off-by: Romeo Fragomeli (rfr) <rfr@odoo.com>
Signed-off-by: Adrien Dieudonné (adr) <adr@odoo.com>
2022-12-21 15:35:55 +01:00
Samuel Degueldre deacb8c94b [FIX] web: remove incorrect usage of patch in mock_env
Previously, when restoring service metadata after clearing it, we would
use the patch function instead of an Object.assign. This is probably a
relic of a previous version of the code that used patchWithCleanup, but
in this context it is completely wrong, as we are giving something other
than a string as the patch name and no object at all as the patch value.

closes odoo/odoo#108390

X-original-commit: b83ab5061fe15e69f6c0703baf6f1eec61332f0e
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-21 07:59:57 +01:00
Toufik Ben Jaa 17a25ee69d [FIX] web: incorrect CSS selector
- When clicking on settings we get a crash for an incorrect
    CSS selector.
    `Caused by: SyntaxError: Element.querySelectorAll: 'footer:not(field footer' is not a valid selector`

    This issue happens on outdated version of Firefox (tested on firefox 78)

closes odoo/odoo#108371

X-original-commit: 68b05bc9911f899a2b8a8c3335af90d9ed8129cb
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-21 07:59:55 +01:00
Aaron Bohy 02244890d4 [FIX] web: kanban: quick create buttons misaligned
In a grouped kanban view with progressbars, click on a progressbar
to filter a column, and then click on the "+" icon of that column
to quick create a record (e.g. in a project). Before this commit,
the buttons ("Add", "Edit" and trash icon) overlapped the bottom
of the card.

This is due to special rules applying when a progressbar filter is
applied. Those rules aim at grouping non filtered out cards on the
top, s.t. the other ones (e.g. a dragged&dropped card) are displayed
below.

It was decided that this grouping isn't really wanted anymore. For
instance, it could lead to weird UX if the filtered column contains
a lot of records, as the dropped one would appear at the bottom,
i.e. would not be visible for the user.

This commit thus simply removes those rules, which fixes the issue.

closes odoo/odoo#108396

X-original-commit: 69fa3654e479f427606d05cdb244fd24225f9eeb
Signed-off-by: Julien Mougenot (jum) <jum@odoo.com>
2022-12-20 18:31:53 +01:00
Aaron Bohy 0ce0f51043 [IMP] web: clickbot: test all views in studio
This commit adds a step in the click all test: for each view, enter
and leave Studio, to ensure that the view doesn't crash in Studio.

With the migration of views to owl, a lot of views worked fine, but
crashed when entering Studio. Those issues have been solved now,
and we want to ensure that this no longer happens in the future.

closes odoo/odoo#107992

X-original-commit: d18310bddf0a4f741a6335e5499ab213fb046993
Related: odoo/enterprise#35054
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-20 12:33:41 +01:00
Didier (did) 45850003f1 [IMP] web: better typing for the RPC service.
This better expose the settings object when using the RPC service

closes odoo/odoo#108294

Signed-off-by: Samuel Degueldre <sad@odoo.com>
2022-12-20 08:26:09 +01:00
Adrien Dieudonne 497d76954a [FIX] web: add spacing between groups
Some people are confused because since 'always edit mode'
the alignments of the labels vary according to the groups.
This feature is wanted and the goal is to have the input as close
as possible depending of the largest label of the group (max-width: 150px)
to easily find it when you hover it.
We only keep the aligenment per ´o_inner_group´.

To reinforce this idea of aligned grouped fields, this commit adds
a margin-bottom to separate these groups.
in addition, it allows to better see the groups on mobile.

closes odoo/odoo#108311

X-original-commit: be9e1c666c3bb5aa36fb41a62783c6ecf01aa106
Signed-off-by: Pierre Paridans (app) <app@odoo.com>
Signed-off-by: Adrien Dieudonné (adr) <adr@odoo.com>
2022-12-19 16:49:12 +01:00
Adrien Dieudonné 73af454f11 [FIX] web: form: align o_group and o_inner_group label field
Before this commit, labels in a ´o_inner_group´ not wrapped in
a ´o_group´ had a margin-right of 5px while the other labels
have no margin.
it is probably an oversight during the refactoring because margins
are now managed by the grid system.

<group>
    <group>
	<field name="A"/>
    </group>
    <group>
	[...]
    </group>
</group>
<group>
    <field name="B"/>
</group>

In this example, inputs of A and B were not aligned because
of the margin-right of label B.

X-original-commit: fb629dc91df1720cb0658d3e9f946a4fda83fbd0
Part-of: odoo/odoo#108311
2022-12-19 16:49:12 +01:00
Samuel DegueldreandAaron Bohy 78188249ca [FIX] bus, web: clean up event handlers and message ports correctly
This commit fixes two things:

- The owl compatibility layer adds an `on` and `off` method on owl's
EventBus so that it can keep being used as it used to in owl 1. To do
this, it needs to keep track of the the callbacks that are attached to
it and by whom. To do this it keeps a Map where the "owners" are keys.
When calling `off` to remove event listeners, we remove the callbacks
but did not remove the owner from the Map, causing the EventBus to
always hold a strong reference to any object that was given as the owner
to the `on` method, preventing the item from being garbage collected.
Objects that do this are typically components, and components hold a
reference to their owl application that contains the entire tree of
components. This was particularly problematic in tests where components
are created and destroyed at a rapid pace.

- The mock websocket creates a MessageChannel so that it can mock the
server side of the websocket, but it never closes that MessageChannel's
MessagePorts, which can cause garbage collection to be slow to happen
[1] (in practice it looks like these are basically never garbage
collected unless closed). This commit registers a cleanup to close the
message ports after the execution of the current test.

[1]: https://html.spec.whatwg.org/dev/web-messaging.html#ports-and-garbage-collection

closes odoo/odoo#108309

X-original-commit: 4facc396a4e8036592a473002253d5a5daf41a19
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Co-authored-by: Aaron Bohy <aab@odoo.com>
2022-12-19 16:49:06 +01:00
Aaron Bohy ea7ef13b0f [FIX] web: kanban: allow to specify custom Compiler
This commit allows to specify a custom Compiler to be used by the
KanbanRecord of a custom Kanban view (js_class). This is necessary
for the social kanban views. Something similar is already done in
the Form view.

closes odoo/odoo#108221

Related: odoo/enterprise#35065
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-19 16:49:03 +01:00
Aaron Bohy 7095310672 [FIX] web: view compiler: generic tags are case insensitive
In html, tags are case-insensitive. However, owl templates aren't,
as nodes starting with a capital letter are considered as component
nodes (not html). This means that people can use capital letters in
form or kanban archs for html nodes and it should work.

Before this commit, it didn't, because the compiler kept the case
when generating the owl templates. For instance, an arch like
`<form><Div/></form/>` produced the error 'Cannot find the
definition of component "Div"'. This commit fixes the issue.

Part-of: odoo/odoo#108221
2022-12-19 16:49:03 +01:00
Aaron Bohy aa616d2880 [FIX] web,mail,project: ViewCompiler: warn if wrong usage
Kanban and form archs aren't owl templates. Kanban archs define
a (historically) qweb template ("kanban-box") which is html + some
directives (e.g. t-esc, t-foreach...) and extra tags (field, widget).
Form view archs are html + some extra tags (e.g. group, notebook,
field, widget...).

With the conversion of those views to owl, a door was left open:
one *could* use owl directives (for instance, t-on-click) in archs.
However, we don't want people to do that, as it would tie the archs
in database with js implementation details, which will then limit
the evolution of the js framework.

This commit adds warning when such forbidden directives are detected.
In master, we'll raise errors.

Part-of: odoo/odoo#108221
2022-12-19 16:49:02 +01:00
Aaron Bohy 4ed9c18199 [FIX] note,web(_editor): fix html field style
Commit [1] added a div around the `.note-editable` node of the html
editor. This broke some css rules. For instance, the html field in
form view's notebooks should have a transparent bottom border when
focused, this was no longer the case (e.g. crm lead form view).
Moreover, we sometimes want to control the height of the editor
(e.g. in Notes or in the mail full composer). That was broken as
well due to the added div.

This commit fixes those issues.

We also ensure to set the border-radius to 0 when the editor only
has a bottom border.

In notes, we do not want to have borders, but the rule didn't
apply due to selector precedence, we fix that as well.

Finally, we fix a typo in a selector in the web_editor addon.

[1] https://github.com/odoo/odoo/commit/60ac6be0d3545#

closes odoo/odoo#107740

Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-19 12:43:09 +01:00
Abdelouahab (abla) e8d4c06300 [FIX] web: add ar-sy to arab numbering system
To Reproduce
============
- change language to Arabic Syria
- go to any form that has a Date field and try to change the date
the Date won't change

Problem
=======
the default numbering system of Arabic Syria is not defined so we take the default one
which is `latn`, when parsing dates using this numbering system we got a parsing error
because `latn` is not compatible with Arabic Date.

Solution
========
Numbers in Arabic Syria have the same format as the numbers in Arabic (Default one),
so we add Arabic Syria to the pattern.

opw-3081285

closes odoo/odoo#108247

X-original-commit: 8c50eb447da41a3ae0186d99972dd7e56d12cd23
Signed-off-by: Julien Mougenot (jum) <jum@odoo.com>
Signed-off-by: abla001 <abla@odoo.com>
2022-12-19 00:15:54 +01:00
FrancoisGe ce30c50e8d [IMP] web: add buttons in control panel without selection in list
This commit adds the possibility to define buttons that are always
present in the arch of a list view.

Purpose:
Several customisations of the list view consist in adding an always
present button in the control panel that performs an action/calls a
model's method.
We want to support this feature directly in the framework to remove
these customisations.

Solution:
Add a "display" option that lets you know when to display a button.
The different values that can be assigned to "display":
- "selection": the button is only displayed if at least one record is selected.
- "always": the button is always displayed.
The default value of "display" is "selection".

Exemple:
<tree>
    <header>
        <button name="to_do" type="object" string="Do" display="always"/>
    </header>
</tree>

Taskid: 3082303
Part-of: odoo/odoo#106519
2022-12-16 18:39:56 +01:00
Morgane (morm) a25a3847b6 [FIX] mrp: kanban card settings fix
Prior to this commit, the layout of the settings in the kanban card was
broken

closes odoo/odoo#107895

X-original-commit: 922029c2197145d555b65becd7210c4d7a13d439
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
2022-12-16 10:28:42 +01:00
Bruno Boi ff619c4761 [FIX] web: repair keynav in dropdowns
- Before this commit
Keyboard navigation in dropdowns lead to a traceback

- Explanation
The traceback happens in the bootstrap library.
When upgrading to bootstrap v5.1.3 (see c48f57e), a fix done in the
previous bootstrap version was lost (see 78f85f2).
This previous fix also added a test but it was not enough to
detect the issue when the bootstrap lib was upgraded.

- After this commit
This commit reintroduce the same previous fix and adapts the test,
hoping it would be enough for future changes to not break further
the expected behavior.

closes odoo/odoo#108080

X-original-commit: daca8fe4e3da4a5ad5fabf3730496a3919af8abc
Signed-off-by: Georis François (fge) <fge@odoo.com>
Signed-off-by: Bruno Boi (boi) <boi@odoo.com>
2022-12-15 15:45:18 +01:00
Julien Castiaux 5502313853 [FIX] web, *: multi-db /web/session/authenticate
*: base_setup, hr_timesheet, mail, partner_autocomplete, web_tour

Start odoo without -d and with a --dbfilter that allows multiple
databases. Via JSON-RPC access the /web/session/authenticate route
providing a non-filtered database and valid credentials. Traceback,
`request.env` is None.

Since httpocalypse the initialization of the ORM (cursor, registry,
environment) is greedy. It means that the connection to the database is
established very early during the request routing or skip altogether in
case no dbname was known at that time. This contrast with prepocalypse
where the various ORM thingies were lazily setup the first time they
were accessed.

This changement has an important implication regarding authentication.

In prepocalypse, thanks to the lazy approache, a cursor/registry/env
would be setup on the database you just login upon using the
`request.env` for the first time. This was very nice in this regard but
had other problems.

Since httpocalypse such operation is no more possible. Devs must
initialize and use their own cursor/registry/env in case they
authenticate on another database than the one `request.cr` is (maybe)
connected to.

The `/web/session/authenticate` controller is an example of such case.
It crates its own cr/registry/environment after authentication. The
problem the controller uses `ir.http.session_info` and that not all
overrides were updated to use `self.env` (=the env created in the web
controller) instead of `request.env` (=the missing env of the request).

closes odoo/odoo#108063

X-original-commit: 7b9bd9d37731fae724dc5d91da656dab70aa9ad4
Related: odoo/enterprise#35012
Signed-off-by: Julien Castiaux <juc@odoo.com>
2022-12-15 15:45:07 +01:00
Pierre Paridans fea6aee7a1 [FIX] web: MobileCompanyMenu's checkbox rendering
This commit replaces the .h2 with the .fs-2 class on the
MobileCompanyMenu checkboxes' icons to keep the same visual size but
without the other styling changes made for the header-like tags/classes.
This avoids an override of the .fa font-family which breaks the Font
Awesome's icon font.

Note: this is a "symptomatic fix" ; the proper fix should be to look for
the override's cause (cf. o-bg-color mixin).

closes odoo/odoo#108051

X-original-commit: 2aa76227296767701b1ea4b2e78e0701a061cf6f
Signed-off-by: Adrien Dieudonné (adr) <adr@odoo.com>
Signed-off-by: Pierre Paridans (app) <app@odoo.com>
2022-12-15 13:41:02 +01:00
Pierre Paridans 015c2f345d [FIX] web: BugerMenu's user name color
This commit sets the username's foreground color to match the one from
the body to avoid having a white text on a white background (cf. bg-view
for the background).

Note: the dark mode isn't affected
X-original-commit: 35072cab808ca0598cd16b7294d07abb42758c78
Part-of: odoo/odoo#108051
2022-12-15 13:41:02 +01:00
Valentin Vallaeys (vava) 927a2b38db [FIX] payment: move button label to string attribute
Before this commit, the text of a `CopyClipboardButtonField` could be
edited with a `label` option. But this label was never translated.

After this commit, the field `string` is used instead to rename the
button. This is automatically exported for translatation.

task-3054813

closes odoo/odoo#105560

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-12-15 11:30:50 +01:00
Aaron Bohy 79727cca9c [FIX] web: AutoComplete: do not crash on "Enter"
Before this commit, there were two kind of related issues with the
AutoComplete component, involving an "Enter" keydown.

1) Click in an empty Autocomplete input s.t. the (only) source has
   no option, then press "Enter" -> crash
2) Enter something in an Autocomplete input s.t. there are results
   in the dropdown, then update the input again s.t. the (only)
   source has no option, then press "Enter" -> crash

This commit fixes those two issues by
1) Ensuring that we don't store in the state an option index that's
   out of range with respect to the current available options
2) Reseting the options when reloading the sources.

Those issues were reproducible on the Company form view, by using
the company name field (which uses partner_autocomplete).

closes odoo/odoo#107982

X-original-commit: 390a9b589495e67235b15137ccc510b76350443f
Signed-off-by: Michaël Mattiello <mcm@odoo.com>
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2022-12-14 22:04:15 +01:00
Pierre Paridans bc325631b3 [FIX] web: lint tooling - exit script if cd fails
Ref:
- https://www.shellcheck.net/wiki/SC2164

closes odoo/odoo#107937

Signed-off-by: Pierre Paridans (app) <app@odoo.com>
2022-12-14 17:17:57 +01:00
Pierre Paridans 591c091c7a [FIX] web: lint tooling scripts - Double quote to prevent globbing
Double quote to prevent globbing and word splitting.

Ref.
- https://www.shellcheck.net/wiki/SC2086

Part-of: odoo/odoo#107937
2022-12-14 17:17:57 +01:00
Sergey ShebaninandAaron Bohy 91b80fbb5c [IMP] web: blockui when executing a target=self act_url action
An act_url action in target "self" redirects the current window/tab
to the given url. It always reloads the page, except when only the
hash or query string changes.

This commit blocks the ui when the page reloads, because there's a
lack of feedback and interacting with the ui is unnecessary anyway.

For instance, module operations (install, remove and update) end
with page reload. During the operation, the ui is already blocked
because the operation takes time. After the operation and before
the page is actually reloaded, the ui is unblocked. As the reload
also takes time because of asset rebuilding, it makes false feeling
for the user that operation completes and interface is ready for
interaction. With this commit ui is blocked until the page is
reloaded.

closes odoo/odoo#107830

Signed-off-by: Géry Debongnie <ged@odoo.com>
Co-authored-by: Aaron Bohy <aab@odoo.com>
2022-12-14 17:17:47 +01:00
Jorge Pinna Puissant 76add62453 [FIX] web: settings view, always perform an onchange to fetch the data
- On the settings view;
- Open the CRM settings;
- Click on "Update Probabilities" button;
- Change the "consider leads created as of the" date;
- Click on "Confirm" button;

Before this commit, the fields on the settings related to the dialog
were not updated. This occurs because, as the setting model is a
transient model, the settings view should always perform an onchange to
fetch the view, and it wasn't the case here.

Now, we patch the basic model used on the settings view to remove the
res_id, to consider the record always as new. This will always perform
an onchange to fetch the data. Note that, this hack is the same as it
was done before the owl migration.

opw-3073124

closes odoo/odoo#107879

X-original-commit: 792567c71aed626b5566f32b656104e3e70c496c
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
2022-12-14 11:42:08 +01:00
Denis Ledouxandkebeclibre a9f020e777 [FIX] web_studio: fields with groups set as invisible in views
This revision is related to odoo/enterprise#33088

The needs is the same:
While using Studio,
instead of removing the node from the view
when the user is not part of the group,
set the node as invisible.
This is so the xpath expressions computed by Studio
takes into account nodes which are removed from the view
when the user is not part of the group required by the node.

e.g.
```xml
<form>
    <group>
        <field name="name"/>
	<field name="currency_id" groups="base.group_multi_currency"/>
	<field name="foo"/>
    </group>
</form>
```

With the above view, if you want to add a new field after
`<field name="foo"`/>
and the `currency_id` field node is removed from the view
during the post-processing of the view
because the user doesn't have the group,
Studio computed the xpath expression with `field[2]`,
and then the new field was mis-placed,
it was before the `foo` field instead of after.
The strategy is to let the nodes, as invisible,
for which the user doesn't have the groups
so the xpath expression is correctly computed
for the view as it is stored in the database/
before the post-processing step removing the nodes.

The above revision applies this strategy for
nodes other than `<field/>` and `<t/>`.

The `<field>` were not included because it was,
at that time, believed it wasn't necessary.
Even though the index was wrong as demonstrated
in the above example, it was then converted
with the expression `field[@name="foo"]`
instead of `field[2]`, and therefore it was
fine not to include the `field` nodes
in the strategy.
Also, fields were not included in the strategy
because for them, if the `groups` is set
in the Python model
e.g.
```py
currency_id = fields.Many2one(..., groups='base.group_multi_currency')
```
Attempting to read them while you don't have the group
will lead to an AccessError exception.
And there was no way to display the field as invisible in the view
without the web client to try to read its content.

Unfortunately, it isn't the case,
as demonstrated by the tours included in this revision,
field nodes must be included in the views, as invisible,
so Studio can compute correctly the xpath expression.

This revision therefore aims to apply the same strategy
for `field` nodes, make them invisible instead of removing
them from the view when the user is not part of the groups.
The revision takes care to override the web client so it doesn't
try to read the value of group-protected fields when the user
doesn't have the group.
So the field, with the label and everything,
is included in the view, but its content/value is left empty,
as the user cannot read the content.
Technically, there won't be many cases, because
users editing views using Studio are admins,
and in most-cases admins have access to these group-protected fields.
Having a field group-protected to which the admins do not belong
doesn't happen that often.

closes odoo/odoo#107877

X-original-commit: 91f213e202ca29c4ef0bb190663fc48f169a64a6
Related: odoo/enterprise#34940
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Signed-off-by: Denis Ledoux (dle) <dle@odoo.com>
Co-authored-by: kebeclibre <lpe@odoo.com>
2022-12-14 11:42:02 +01:00
Samuel Degueldre 990b10aece [REF] point_of_sale, *: convert legacy modules to ES odoo modules
*: l10n_co_pos, l10n_fr_pos_cert, l10n_gcc_pos, l10n_in_pos,
l10n_sa_pos, pos_adyen, pos_discount, pos_epson_printer,
pos_epson_printer_restaurant, pos_hr, pos_loyalty, pos_mercury,
pos_restaurant, pos_restaurant_adyen, pos_restaurant_stripe, pos_sale,
pos_sale_product_configurator, pos_six, pos_stripe

We are about to refactor most of the Javasript code base of the point of
sale and related modules. In doing so, we will move a lot of files and
modernize the entire code-base. In order to avoid diffcult rebases,
their conversion to odoo-modules is done as a first step to avoid
getting lots of conflicts on files that were unindented, which marks the
entire file as being in conflict. Conflicts will occur during forward
ports but they will be easier to manage as the changes will be much
smaller in scope, and the author will have the context of the change
that causes the conflict in mind when dealing with it.

closes odoo/odoo#107621

Related: odoo/enterprise#34910
Signed-off-by: Trinh Jacky (trj) <trj@odoo.com>
2022-12-14 11:41:52 +01:00
Joseph Caburnay fead26df53 [FIX] web: more lenient monetary parser
**Issue:**

- Install CRM.
- Change language to French.
- From CRM, open a lead that has `Revenu espéré` thousands as value, e.g. 10 000,00.
- Try changing `Revenu espéré` by deleting one of the thousands digit.
  E.g. 10 000,00 -> 1 000,00
- BUG: The modified value is not understood by the system.

**Solution:**

This is because the thousands separator from the French language is nbsp.
Coincidentally, the parsing logic assumes that the separator between the
currency symbol and value is also nbsp. So when inputting `1 000,00`,
the parsers thinks either `1` or `000,00` is the currency symbol.

We concluded that it's better to be less restrictive when parsing
monetary values. So, instead of making sure that the current input's
currency is compatible with the currency of the the field, we just
strip the non-numeric characters from beginning and end of the input
without validating the currency symbol, then parse the remaining
string as float.

This leads to a more user-friendly monetary input fields such that
inputting "DOGE 1,000,000.01" in a "$" monetary field will be
parsed as 1000000.01. NOTE that *no* currency conversion is performed.

**Minor breaking change:**

The second parameter `options` of the `parseMonetary` function is now
removed. Any existing use of that parameter is just ignored.

closes odoo/odoo#107862

X-original-commit: dc27f1f4c039bdbf84c55a4fb5364c6398c45949
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com>
2022-12-13 17:03:25 +01:00
Joseph Caburnay 4e5eebf966 [FIX] web: generalize whitespace separator when parsing
**Issue:**

When the thousands separator is "nbsp" and the user inputs a value
that is "1 234", the parser will crash because the thousands separator
is different from what is manually inputted by the user.

This is problematic because when typing, it's very difficult for
users to enter "nbsp" character in their input.

**Solution:**

This change proposes that if the thousands separator is a whitespace,
we consider all whitespace characters from user input as thousands
separator. As a result, even if the thousands separator is "nbsp",
the system will successfully parse "1 234" as 1234.

X-original-commit: bffddcf015da9cf514fc25cc7f839e923e470d94
Part-of: odoo/odoo#107862
2022-12-13 17:03:25 +01:00