Commit Graph
3117 Commits
Author SHA1 Message Date
MANALIMALPANI 8a0dd29899 [FIX] auth_ldap: fix LDAP error handling
In order to ensure consistent results of all error conditions returned
    by the LDAP server, the _authenticate() method should return `False`
    for every kind of exception, not just for INVALID_CREDENTIALS.

    This is not actually relevant in 12.0 as the result is exactly the
    same, due to the way the `entry` variable is being initialized, but it
    will make the code path "visibly consistent" across all supported
    versions

closes odoo/odoo#72484

X-original-commit: 24a3f669e5199c35849dabbf7b0d37f43b684538
Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
2021-06-21 17:50:25 +00:00
fw-bot de5be74db5 [FIX] website_slides: allow to use only in POST
This method only expects to be called as POST and should not be called
with GET.
This commit enforces that.

[CLA] Signature for sushiwushi

closes odoo/odoo#71575

X-original-commit: 00f2eeee7aa514599b40e049be46eacdcc8332fa
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-06-01 17:22:18 +00:00
Krutarth Buch 0acac7eb74 [CLA] Corporate signature for Entrivis Tech Pvt Ltd.
closes odoo/odoo#71567

X-original-commit: f03b2d9f0e1ea57d1f94040786248e0d887c8afa
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-06-01 14:57:20 +00:00
Jeremy Cormier eaed74dec0 [FIX] stock: fixed singleton in picking write method
closes odoo/odoo#71535

X-original-commit: 922ee844f699fdb230b32d3f8c06ff22476f99c3
Signed-off-by: William Henrotin <Whenrow@users.noreply.github.com>
2021-06-01 11:06:00 +00:00
fw-bot 5a5fdcebd6 [CLA] signature for janikvonrotz
closes odoo/odoo#71434

X-original-commit: 2b4ae68892bf963f5170651e4ca4a9983ea18af9
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-05-28 15:58:58 +00:00
dosipchuk 24154294b2 [CLA] Dmytro Osipchuk
closes odoo/odoo#71389

X-original-commit: 68182733f8a625a13e44c6be2708a98ece20d80a
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-05-28 10:58:10 +00:00
newtratip a0529acd08 [CLA] newtratip signs Odoo's CLA
closes odoo/odoo#71200

X-original-commit: c49bcce249b9ffcbc98dded17b6dbe71a1c22552
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-05-25 08:21:06 +00:00
guimarc-br c328957c17 Adding the CLA Signature
closes odoo/odoo#70552

X-original-commit: 44e05cd802593f6d18dcdec41fe821e30d7ae893
Signed-off-by: William Henrotin <Whenrow@users.noreply.github.com>
2021-05-07 15:13:07 +00:00
Victor FeyensandAntoine Vandevenne 609082da2f [MOV] doc: move documentation to a dedicated repository
In odoo/documentation-user#945, the developer documentation is merged
with the user documentation in a single repository and build config.

This commit then removes source files for the developer documentation
from the odoo/odoo repository.

DOC PR: https://github.com/odoo/documentation-user/pull/945

task-2351938
task-2352371
task-2205684
task-2352544

Co-authored-by: Victor Feyens <vfe@odoo.com>
Co-authored-by: Antoine Vandevenne <anv@odoo.com>
2021-05-04 08:25:12 +00:00
Samuel Degueldre 557a24e4f4 [IMP] web: allow lazy-loading asset bundles' templates
Previously, lazy-loading xml templates was only possible by fetching the
xml file directly, this meant that it was impossible to lazy-load an
entire bundle's templates with a single request. Additionally,
requesting the xml files directly meant that no inheritance was applied,
causing the need for a separate inheritance system using t-jquery on the
client-side.

This commit alters the /web/webclient/qweb route so that it now takes a
bundle id, meaning that it is now possible to lazy-load the xml from
arbitrary bundles.

task-2497943

closes odoo/odoo#70084

Signed-off-by: Géry Debongnie (ged) <ged@openerp.com>
2021-05-03 07:25:20 +00:00
Francois (fge) c1abb1841e [DOC] web: export an object containing a comment is not supported
closes odoo/odoo#69407

Signed-off-by: Géry Debongnie (ged) <ged@openerp.com>
2021-04-23 10:01:41 +00:00
Simon Genin (ges) ecfe85db84 [REF] web: static/src/(img|fonts) => static/(img|fonts) 2021-04-29 07:34:40 +00:00
Xavier Morel 01875541b1 [CHG] core, web: deprecate t-raw
Add a big fat warning when the qweb compiler finds a `t-raw`.

`t-esc` should now be used everywhere, the use-case for `t-raw` should
be handled by converting the corresponding values to `Markup`
objects. Even though it's convenient, this constructor *should never
be made available in the qweb rendering context* (maybe that should be
checked for explicitely?).

Replace `werkzeug.escape` by `markupsafe.escape` in
`odoo.tools.html_escape`, this means the output of `html_escape` is
markup-safe.

Updated qweb to work correctly with escaping and `Markup`, amongst
other things QWeb bodies should be markup-safe internally (so that a
`t-set` value can be fed into a `t-esc`). See at the bottom for the
attributes handling as it's a bit complicated.

`to_text` needed updating: `markupsafe.Markup` is a subclass of `str`,
but `str` is not a passthrough for strings. So `Markup` instances
going through would be converted to normal `str`, losing their safety
flag. Since qweb internally uses `to_text` on pretty much
everything (in order to handle None / False), this would then cause
almost every `Markup` to get mistakenly double-escaped.

Also mark a bunch of APIs as markup-safe by default

* html_sanitize output.
* HTML fields content, sanitization is applied on intake (so stripped
  by the trip through the database) and if the field is unsanitised
  the injection is very much intentional, probably. Note: this
  includes automatically decoding bytes as a number of default values
  & computes yield bytes, which Markup will happily accept... by
  repr-ing them which is useless. This is hard to notice without `-b`.
* Script-safe json, it's rather the point (though it uses a
  non-standard escaping scheme).
* Note that `nl2br`, kinda: it should work correctly whether or not
  the input is markup-safe, this means we should not need to escape
  values fed to `nl2br`, but it doesn't hurt either.

Update some qweb field serialisations to mark their output as
markup-safe when necessary (e.g. monetary, barcode,
contact). Otherwise either using proper escaping internally or doing
nothing should do the trick.

Also update qweb to return markup-safe bytes: we want qweb to return
markup-safe contents as a common use-case is to render something with
one template, and inject its content in an other one (with Python code
inbetween, as `t-call` works a bit differently and does not go through
the external rendering interface).

However qweb returns `bytes` while `Markup` extends `str`. After a
quick experiment with changing qweb rendering to return `str` (rather
unmitigated failure I fear), it looks like the safest tack is to add a
somewhat similar bytes-based type, which decodes to a `Markup` but
keeps to bytes semantics.

For debugging and convenience reasons, MarkupSafeBytes does *not*
stringify and raises an error instead (`__repr__` works fine). This is
to avoid implicit stringifications which do the wrong thing (namely
create a string `"b'foo'"`).

Also add some configuration around BytesWarning (which still has to be
enabled at the interpreter level via `-b`, there's no way to enable it
programmatically smh), and monkeypatch `showwarning` to show warning
tracebacks, as it's common for warnings to be triggered in the bowels
of the application, and hard to relate to business logic without the
complete traceback.

`t-out`
=======

`t-esc` is a bit confusing for the new behaviour of "maybe escape
maybe not", so add a `t-out` alias with the same behaviour.

Unlike `t-raw`, `t-esc` is only soft-deprecated for now: there are
thousands of instances, so editing all the templates is not
great. Eventually we'll add a `ci/style` to prevent addition of new
ones, and eventually we might do a bulk-replace and hard-deprecate.

Attributes handling
===================

There are a few issues with respect to attributes. The first issue is
that markup-safe content is not necessarily attributes-safe
e.g. markup-safe content can contain unescaped `<` or double-quotes
while attributes can not. So we must forcefully escape the input, even
if it's supposedly markup-safe already.

This causes a problem for script-safe JSON: it's markup-safe but
really does its own thing. So instead of escaping it up-front and
wrapping it in Markup, make script-safe JSON its own type which
applies JSON-escaping *during the `__html__` call.

This way if a script-safe JSON object goes through `markupsafe.escape`
we'll apply script-safe escaping, otherwise it'll be treated as a
regular strings and eventually escaped the normal way.

A second issue was the processing of format-valued
attributes (`t-attf`): literal segments should always be markup-safe,
while non-literal may or may not be. This turns out to be an issue if
the non-literal segment *is* markup-safe: in that case when the
literal and non-literal segments get concatenated the literal segments
will get escaped, then attributes serialization will escape
them *again* leading to doubly-escaped content in attributes.

The most visible instance of this was the `snippet_options` template,
specifically:

    <t t-set="so_content_addition_selector" t-translation="off">blockquote, ...</t>
    <div id="so_content_addition"
        t-att-data-selector="so_content_addition_selector"
        t-attf-data-drop-near="p, h1, h2, h3, .row > div > img, #{so_content_addition_selector}"
        data-drop-in=".content, nav"/>

Here `so_content_addition_selector` is a qweb body therefore
markup-safe, When concatenated with the literal part of
`t-atff-data-drop-near` it would cause the HTML-escaping of that
yielding a new Markup object. Normal attributes processing would then
strip the markup flag (using `str()`) and escape it again, leading to
doubly-escaped literals.

The original hack around was to unescape() `Markup` content before
stringifying it and escaping it again, in the attribute serialization
method (`_append_attributes`).

That's pretty disgusting, after some more consideration & testing it
looks like a much better and safer fix is to ensure the
expression (non-literal) segments of format strings always result in
`str`, never `Markup`, which is easy enough: just all `str()` on the
output of strexpr. We could also have concatenated all the bits using
`''.join` instead of repeated concatenation (`+`).

Also add a check on the type of the format string for safety, I think
it should always be a proper str and the bytes thing is only when
running in py2 (where lxml uses bytestrings as a space optimization
for ascii-only values) but it should not hurt too much to perform a
single typecheck assertion on the value... instead of performing one
per literal segment.

Note: we may need to implement unescape anyway, because it's still
possible to get double-escaping with the current scheme: given an
explicitly escape-ed `foo` and `t-att-foo="foo"`, `foo` will be
re-escaped.

fixup! [CHG] core, web: deprecate t-raw
2021-04-29 05:34:19 +00:00
Alessandro Fiorino 4bd87b8375 [CLA] add Digital Domus
closes odoo/odoo#69855

X-original-commit: 16c09f3964ef32f0729efd815ba5f397e07c8925
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-04-26 15:12:33 +00:00
ram ddf7195ae3 [IMP] rating, project, im_livechat: improve handling of ratings
RATING

Rating texts currently have a negative skewness. Indeed apart top rating
all ratings have a negative feeling. In this commit we update them
to match more closely a 1-5 range from dissatisfied to satisfied, ok being
the middle value.

PROJECT

Filter customer rating were taking in account ratings from first e-mail
instead of current satisfaction.

IM LIVECHAT

Livechat did not catch feedbacks without comment.

Task ID-2439720
COM PR odoo/odoo#66992
ENT PR odoo/enterprise#16757
2021-04-26 14:10:20 +00:00
fw-bot 4da5f2eaba [FIX]account_edi_ubl : fix finding of partner using vat identification
closes odoo/odoo#69226

X-original-commit: 66c7ee23320c595e71c1183a3bd439530ace13c9
Signed-off-by: Laurent Smet <smetl@users.noreply.github.com>
2021-04-19 07:35:25 +00:00
Simon Genin (ges)andjeh-odoo 0774459f5d [IMP] web: prepare calendar view to ease modifications
The calendar renderer used a template for events.
Now moved as a configurable template to ease futur calendar changes.

This commit adds also a custom event to the calendar renderer so that custom
implementations have a way to re-render the event items within the calendar
after making internal changes to the event records.

We introduce also a new option for a field "filter_field" which allows to specify
the field of the model in which we will save the status of a filter.

This is preliminary changes in order to make the calendar view able to modify
the attendance status of a meeting and refresh the events to visually display
if the user is attending or not.

Task ID 2196775
COM PR: odoo/odoo#55190
ENT PR: odoo/enterprise#12196
UPG PR: odoo/upgrade#1532

Co-authored-by: Simon Genin (ges) <ges@odoo.com>
Co-authored-by: jeh-odoo <jeh@odoo.com>
2021-04-15 14:05:10 +00:00
Ivan Yelizariev 5ddf7c6fde [IMP] doc: replace pyflame with py-spy
pyflame is archived and not maintained since July 2018
https://github.com/uber-archive/pyflame/commits/master

closes odoo/odoo#69128

X-original-commit: 9864fb6a159f5f145421b4e51b6125e25a69e7c9
Signed-off-by: Adrian Torres (adt) <adt@odoo.com>
Signed-off-by: Ivan Yelizariev // IEL <yelizariev@users.noreply.github.com>
2021-04-12 13:51:16 +00:00
emilkholod 3d5101fa18 [CLA] Signature for emilkholod
X-original-commit: 58649ef6ab7476b90c7deb5a9a2acc2553e1bb62
2021-04-11 11:56:14 +00:00
root 905d2963ff [CLA] add CLA for Mainframe Monkey
closes odoo/odoo#68995

X-original-commit: d81973ab79dec066b3b6f98b473e73c6d41f0d34
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-04-08 15:44:41 +00:00
Leonardo Gavidia fab70f4a09 [CLA] signature for leogavidia
closes odoo/odoo#68948

X-original-commit: 73430f2cf2dd9ffa128ad192dc586cc6e647bccc
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-04-08 10:35:16 +00:00
Julien Mougenot 3e3dce0eb8 [REF] *: rename assets 'glob' to 'path'
Rationale:
The majority of cases where an ir.asset is manually declared
outside of manifest files is to specifically add a single asset file.
This means developers are specifying a single asset *path*, and not a
glob expression. In this context, it seems better to name the filepath
field `path`, and document that it can be specified with a glob
expression when (seldom) needed, rather than making the exception appear
to be the norm - possibly puzzling many developers (What's a glob and
why do I need one?)

The doc is updated as well, and some spell-checking and wording
improvements were done too.

This required some adaptations to the existing `ir.asset` declarations:
- odoo/enterprise#17465
- odoo/design-themes#459

closes odoo/odoo#68695

Related: odoo/upgrade#2348
Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
2021-04-07 20:39:10 +00:00
Andres Calle 7f62aae8ee [CLA] corporate signature for trescloud
closes odoo/odoo#68752

X-original-commit: 3de6216b5bb0fd423faf5c40a3e9811a1ffc9d42
Signed-off-by: oco-odoo <oco-odoo@users.noreply.github.com>
2021-04-03 10:18:26 +00:00
27166ff9df [REM] web_editor, website: remove Summernote wysiwyg rte library
Co-authored-by: David Monjoie <dmo@odoo.com>
Co-authored-by: Antoine Guenet <age@odoo.com>
Co-authored-by: Nicolas Bayet <nby@odoo.com>
Co-authored-by: Sébastien Geelen <sge@odoo.com>
Co-authored-by: Emilien Durieu <edu@odoo.com>
2021-04-01 12:49:47 +00:00
Tymoteusz Motylewski f1ea45c402 [IMP] doc: add missing command line options
- fixes some typos
- adds command parameters which are present when running odo-bin --help
- updates some descriptions, e.g. regarding configuration file and data-dir

closes odoo/odoo#67778

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-04-01 15:48:47 +00:00
Julien Mougenot 38561b9c97 [FIX] doc: Clean Assets Management documentation
A few changes to the layout and texts of the "Assets Management" part of
the javascript reference documentation.

closes odoo/odoo#68649

Signed-off-by: Géry Debongnie (ged) <ged@openerp.com>
2021-04-01 13:53:44 +00:00
8cc066173d [IMP] *: Improve assets management
This commit changes the way assets are declared in Odoo modules.

Before: assets were declared in template files. Template bundles were
generated from primary templates, so technically any qweb template could
have been called as an asset bundle, with the 't-call-assets' directive.

Being standard qweb templates, they had access to standard HTML tags
(script, link, with or without raw scripts or style definition), qweb
directives (t-call, t-raw, etc.) and could be inherited by other
templates.

Now: assets are defined in the module's manifest and generated by the
't-call-assets' directive.

More information on the new system can be found on the updated user
documentation (see the "JavaScript Reference" section).

Task: 2352566

Co-authored-by: Bruno Boi <boi@odoo.com>
Co-authored-by: Julien Mougenot <jum@odoo.com>
Co-authored-by: Lucas Perais <lpe@odoo.com>
Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com>
Co-authored-by: Raphael Collet <rco@odoo.com>
Co-authored-by: Simon Genin <ges@odoo.com>
2021-03-31 13:57:17 +02:00
Khalid El Haji 5dee24c670 [CLA] signature for khalidelhaji
closes odoo/odoo#68558

X-original-commit: 610e1cea4b158c9fa28e63ab33cf7c7fa76873bf
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-30 16:40:03 +00:00
Qaidjohar 163f7acb2c [CLA] signature for QaidjoharBarbhaya
closes odoo/odoo#68551

X-original-commit: 6fa6d67531408ce51a3a762575f5c576fe916866
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-30 13:21:14 +00:00
Ossi Mantylahti 5d250cdef3 [CLA] signature for ossimantylahti
closes odoo/odoo#68544

X-original-commit: f9cdaa3deef305ce45aba7e9102ac23ef6f5fac1
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-30 12:37:21 +00:00
Bilal el Attar ef9431aae5 [CLA] Signature for bilalattar
closes odoo/odoo#68531

X-original-commit: a281aafecb043fb935b69f2f7f2c13fdf41cae62
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-30 09:58:23 +00:00
Mohammad M. Shahbazi fcdd8a1fa2 [CLA] signed by mshahbazi
closes odoo/odoo#68525

X-original-commit: 217848a3e3c8cd052473f0b1a4d2fc038e40ac4f
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-30 09:11:12 +00:00
abharos 55b5918803 [CLA] signature for abharos
closes odoo/odoo#68524

X-original-commit: d623afe03571007f98c2b7c29412775f79f53447
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
Signed-off-by: abharos <abharos@users.noreply.github.com>
2021-03-30 09:10:49 +00:00
geraldaistleitner 16a5666099 [CLA] signature for geraldaistleitner
closes odoo/odoo#68522

X-original-commit: 3aeeaa40fcf5a89619f3ecd886377f46b9df0364
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-30 09:10:12 +00:00
Pablo Fuentes 096629d669 [CLA] Studio73 signature
closes odoo/odoo#68518

X-original-commit: 994032cc29e715627bd80ff0cd529581cb950132
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-30 08:19:12 +00:00
Marc Kolly 8ef8ac5e36 [CLA] signature for makuser
closes odoo/odoo#67725

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-11 20:25:15 +00:00
YOGRAJ TANDELandMohammed Shekha 7da9c296eb [ADD] calendar,lunch,web: weekly recurrent widget
with this commit we adding weekly recurrent widget, currently proeject and
calendar shows boolean for each day vertically but with this widget we displays
week days and its boolean horizontally.

Here widget will display first day as per language's week_start field, also we
adds FieldDependencies on custom widget and consider those FieldDependencies
while processing view node in basic_view.js

We add support of registry to contain owl custom widgets and add support
of rendering owl custom widgets.

Also with this commit we removes fields like sun, mon, tue etc. from view and
instead use "web_weekly_recurrence" custom widget to display boolean for each
week day.

Co-authored-by: Mohammed Shekha <msh@odoo.com>
2021-03-26 12:25:44 +00:00
Barad Mahendra 9a57330d06 [IMP] web: display the default label next to the icon in state_selection
Purpose of the commit is to display the default label next to the icon
for state_selection widget in list view.
also that widget support the hide_label option to hide the label in
state_selection widget of the list view.

Related Ent PR: odoo/enterprise#16559

closes odoo/odoo#66589

Taskid: 2451287
Related: odoo/upgrade#2195
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2021-03-22 08:42:04 +00:00
Aaron Bohy d613f97320 [CLA] add kmagusiak
X-original-commit: 3fb99e44164b4bfe79ba7ba61efff39c45006cac
2021-03-24 14:38:11 +00:00
Martin Trigaux 13dd40ea55 [IMP] doc: modernize NGINX SSL recommandations
TLS 1 and 1.1 are not recommended anymore
This configuration was generated with Mozilla SSL Configuration
Generator (https://ssl-config.mozilla.org) with a fairly conservative
approach:
- nginx 1.10.3, OpenSSL 1.1.0l (Debian Stretch)
- Supports Firefox 27, Android 4.4.2, Chrome 31, Edge, IE 11 on
  Windows 7, Java 8u31, OpenSSL 1.0.1, Opera 20, and Safari 9

Fixes odoo/odoo#68002

closes odoo/odoo#68227

X-original-commit: ece5778c205765e5e5b1a3fd86e6f031bf25c12d
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-23 10:14:16 +00:00
Denis Mudarisov a4cc5cef6e [CLA] add IT Projects Labs
closes odoo/odoo#68202

X-original-commit: 1335d16c8dddb0f89d90d2f71e50250dc0b395ff
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2021-03-22 13:28:27 +00:00
dominikkertys 4577b10881 [CLA] add 26HOUSE
X-original-commit: 6e2e88c518e8efa30e848feed92a090c56ad4f61
2021-03-19 16:03:15 +00:00
Veronika Kotovich 43d70a670a [FIX] mail: prepare mail header References to avoid line breaks
When Odoo routes incoming emails it is looking for existing messages in
database using Message Ids which are coming from e-mail header
References.

In Odoo the message id looks pretty long like

    743570479975566.1584086032.522504091262817-openerp-message-notify@ip-172-31-45-160

As it declared in [RFC2822] long header bodies can be "folded" using
CRLF+WSP. And some mail clients do that very thing. They split
References header body which contains Message Ids by "\n ".  The example
of mail client where it can be reproduced is apps.rackspace.com We
created Sales Order in Odoo, sent this quotation to the client email. He
replied with e-mail, and this email can't be matched with any existing
message id and as result it's not attached to the Sales Order.

RFC2882: https://tools.ietf.org/html/rfc2822#section-2.2.3

closes odoo/odoo#68077

X-original-commit: 559f6cf62711ad45557eddec3af7c66616724eb5
Signed-off-by: Julien Castiaux <Julien00859@users.noreply.github.com>
2021-03-18 12:10:03 +00:00
Aaron Bohy 6418a55fe4 [IMP] web: patch/unpatch: allow to re-apply a patch
In tests, we might want to disable a specific patch for a specific
test (e.g. to remove a monkey patch done when another addon is
installed, to test the behavior of the current addon).

Before this commit, it was possible to unpatch at the beginning of
the test, but we couldn't re-patch when the test was over.

Feature required by task~2392303
2021-03-18 09:59:53 +00:00
Tymoteusz Motylewski 24d9b5990e [CLA] Sign contributor license tmotyl
closes odoo/odoo#67717

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-11 18:06:30 +00:00
Aaron Bohy cd367a3967 [FIX] web: FieldMany2Many: link/unlink options
Commit [1] altered the way the FieldMany2Many behaves with respect
to 'create' and 'delete' options. Indeed, for many2many fields,
adding or removing records doesn't mean "creating" or "deleting"
records, as it is only about adding/removing records to/from a
relation. This is completely fine and correct.

Unfortunately, a feature has been lost in the process: it is no
longer possible to state that a many2many field should be editable
but should not allow to add (or remove) record to the relation.

This commit fixes the issue by adding two new options: 'link' and
'unlink' for that purpose.

[1] https://github.com/odoo/odoo/commit/c98579d25af01c14df4baf57fb4652f3e7469096

opw~2466213

closes odoo/odoo#67495

X-original-commit: df44e65bbbba55a7ee2224ad5b4f13248a39423a
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2021-03-08 16:37:38 +00:00
Aaron Bohy 469dd4cad9 [FIX] web: correctly edit Many2ManyCheckboxes with 100+ values
The Many2ManyCheckboxes widget displays all values that could be
in the many2many relation, with a checkbox indicating whether each
value is in the relation or not. It is designed to be set on fields
where the comodel contains a few records (typically, we don't want
to see dozens of checkboxes in the form view). This widget shouldn't
be used on many2manys with a large comodel, as we have better tools
to handle them (like a tree view).

We deal with extreme cases (when the widget is, by mistake,  set on
a field where the comodel is huge) by using the name_search limit
of 100: at most 100 checkboxes are displayed.

Before this commit, this extreme situation wasn't correctly handled.
If there were in the relation records that weren't displayed
(because they weren't inside the 100 limit), then, editing the value
by (un)selecting a checkbox would automatically remove all non
displayed values from the relation.

This commit ensures that we keep in the relation all values that
aren't displayed.

Issue spotted when working on opw~2439041

closes odoo/odoo#67400

X-original-commit: 9e9d3aa78c42ad4ffca3b56a28382ed84078cde3
Signed-off-by: Géry Debongnie (ged) <ged@openerp.com>
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2021-03-05 16:59:25 +00:00
Martin Trigaux cc1780cdbc [ADD] doc: section on Escaping vs Sanitizing
Source https://github.com/odoo/enterprise/pull/15297#issuecomment-768985663

closes odoo/odoo#67381

X-original-commit: d767e01ca02b702dbef22451fc1c72c996192708
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-05 14:58:09 +00:00
Carlos Roca 1ff825c012 [CLA] update Tecnativa signature
closes odoo/odoo#67262

X-original-commit: 42291b957ba4f33640c99097be73f16aa9e06d47
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-04 15:02:06 +00:00
Ronald Portier 81c3974a01 [CLA] Add Danny de Jong to Therp CLA
closes odoo/odoo#67073

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2021-03-02 14:43:35 +00:00