Commit Graph
168 Commits
Author SHA1 Message Date
Christophe Simonis dd43071638 [MERGE] forward port branch saas-16 up to 278e478d55 2017-06-27 14:19:31 +02:00
David Monjoie 99ce9e7c60 [FIX] web: fix duplicated tags at re-render 2017-06-23 16:36:38 +02:00
David Monjoie 9d1744b797 [FIX] web: fix kanban view grouped on unset m2o
The previous code loading the tooltip data was sending a null value
to read as id, which resulted in an access error. This behavior was
not observable in the tests because of b8c1571 which was meant to
allow giving inexistant ids to mockRead but also ended up accepting
falsy values, which was not true to the actual server.

In addition, the title of the column was wrong for unset m2o, it
displayed false, the value of the field when unset, rather than
the default "Undefined" title.
2017-06-23 09:58:46 +02:00
David Monjoie 0236ac510b [FIX] web: update buttons in editable list view when no changes
When I introduced this line in 374295b, I was working on the form
view and didn't realize I would be breaking the editable list view.

The _setMode function only updates the buttons when given the id of
a record. Since I was working on a form view at the time, I didn't
need to give a recordID to make it work since the default ID of a
form view is the id of the record itself. However, in editable list
view, the id of the view is a list of ids, so the buttons would not
be updated in this case.
2017-06-23 09:58:45 +02:00
Martin Geubelle c62a4edcb0 [FIX] web: set 0 as default value for numeric fields
When creating a new record, the numeric field default value should be 0 in order
to avoid manually setting mandatory fields to 0.

This behaviour has been removed with the new views but one wants to restore it.

The `mockRead` function has also been adapted in this commit because the server
returns 0 for unset numeric fields.
2017-06-22 10:52:26 +02:00
Martin Geubelle 3de0715f12 [FIX] web: basicController: stop translate event
Before this fix, a traceback occured when we clicked on the translate icon
in a form dialog.

The `translate` event wasn't stopped and was thus handled by the dialog's form
controller and by the main controller.
2017-06-21 16:42:56 +02:00
Martin Geubelle e921f14d24 [FIX] web: disable phone test with voip
The module `crm.voip` alters the focusable behaviour of the phone
widget by overriding the `canCall` method.

We thus disable this test if the module is installed.
2017-06-21 11:44:53 +02:00
Martin Geubelle 28b67ee7dc [FIX] web: properly handle tab navigation with widgets in edit
Rev. https://github.com/odoo/odoo/commit/c5f8f35747b4ca9633c664d6be74614c5ce22fcd
introduced a regression: the input of widgets 'email' and 'url' was not correctly
focused anymore with tab navigation.

The method `getFocusableElement` on their common parent (`InputField`) has not been
correctly overriden because `_super``was not called in edit mode.
2017-06-20 11:17:35 +02:00
Martin Geubelle c5f8f35747 [FIX] web: properly handle tab navigation in readonly
The tab navigation was only working in edit mode. Entering a readonly form
view with input fields was causing a traceback.

As the default browser behaviour has been overriden with custom navigation,
we need to specify which widget can be focused (e.g.: url, many2one, etc.).
2017-06-19 16:47:34 +02:00
Martin Geubelle 21fca784dc [FIX] web: Kanban: avoid ghost records when moving record
In an empty kanban view, when moving a freshly created record from
the second column to the first one, then moving it back again in to
the first one, the record was mysteriously duplicated.

When moving the record, it should be removed from the old column.
In this case, the second column was not found (and thus the record
not removed) because the iteration was on `parent.count` (which is
the count of records in this datapoint (1 in our case)) and not
parent.data.length (the number of columns).
2017-06-19 16:47:33 +02:00
David Monjoie b8c1571d94 [FIX] web: prevent crash when giving wrong id in url
The mock server had to be modified in order to test this behavior
since it used to throw an error for invalid ids, while the actual
server just ignores it and continues forth with the other ids.
2017-06-19 07:56:42 +02:00
David Monjoie 584c60f1ba [FIX] web: display buttons without icon in list view
Previously, the button was completely invisible when no icon
was given, which is a regression from saas-15 where the string
attribute is used to write the button label.
2017-06-19 07:56:41 +02:00
Christophe Simonis ed2ddeccdf [MERGE] forward port branch saas-16 up to 1b50c829ef 2017-06-15 18:46:47 +02:00
Martin Geubelle d88d1abcf0 [FIX] web: reimplement group_by_tooltip option in kanban
This option hadn't been implemented in the new views.
It allows to display informative explanations as tooltips on column over.

It can be set on a many2one field in the kanban view, e.g.:

```<field name="stage_id" options='{"group_by_tooltip":
    {"<tooltipFieldOnStageModel>": "<ABeautifulTitle>"}
}'/>
```

An extra RPC needs to be done on the many2one relation to fetch these additional
fields and the data are stored in the datapoint under the key `tooltipData`.
2017-06-15 13:22:07 +02:00
Aaron Bohy f6525c6b6c [FIX] web: BasicModel: onchanges: send all values
Since commit ebd17217c4, values of readonly fields inside x2many
fields weren't sent for onchanges, whereas they should. This was
for example an issue on the stock.picking form view (which is in
state 'draft' by default). If the user added a stock.move, the
state field on the move wasn't sent for the onchange, and thus the
state field on the picking was set to false.
2017-06-15 08:39:50 +02:00
Aaron Bohy a3bea9a62b [FIX] web: Form: delete the correct record
When the user duplicated a record 'A', and deleted the new record
'A (copy)' directly, the wrong record was deleted: 'A' was deleted
instead of 'A (copy)', because de id of 'A' was bound to the delete
handler, and it wasn't updated after the duplication.

Also correctly updates the record's offset after the deletion, so
that it doesn't produce a warning when deleting the last record of
the dataset.
2017-06-14 10:15:37 +02:00
Aaron Bohy 70624772b2 [FIX] web: Pivot: allow to click on a cell
Before this rev., when the user clicked on a data cell of a pivot
view, it crashed. This was due to several problems, fixed by this
commit.
2017-06-14 10:15:37 +02:00
Christophe Matthieu 83115b2a10 [FIX] web: SelectCreateDialog uses the domain of the view when searching
before this fix: the domain is used when opening the dialog but it is not
used if the user update the filter or the group_by.
2017-06-13 15:47:47 +02:00
Aaron Bohy 708c1c2915 [FIX] web: false id should remain false in evalContext
'id' is a particular field that should not be considered like other
integer fields. For instance, in the evalContext, its value should
not fallback to 0 if it is false. This would break domains in attrs
like ['id', '=', False], which is supposed to be true on new (not
saved yet) records.

This was for example the case in the Product form view: go to Sales
Orders form view, add a line, on the product field choose 'Create
and Edit', try to save the product -> error: field Product Template
is required but not set (actually it is invisible), as its required
modifier says ['id', '!=', False], which was always the case.
2017-06-13 09:26:40 +02:00
Aaron Bohy ebd17217c4 [FIX] web: BasicModel: don't write on readonly fields
Ultimately, it seems that sending the value of readonly fields
when saving is not such a good idea. Suppose that there is a
computed field displayed as readonly in a form view. This field is
computed from other records, e.g. from a one2many field which is
editable in the form view. Finally, the inverse function of the
computed field creates the one2many records. If the user adds some
records to the one2many, then saves, the readonly computed field's
value is sent to the server as well, and thus the inverse function
is executed, which isn't what we want.

This commit essentially reverts 0494d61274, except that we now take
into account the readonly modifier to determine whether or not a
value is sent to the server, and not only the readonly attribute of
the field (which can be seen as a default). Before rev. 0494d61274,
we made a difference between write and create RPCs, for an unclear
reason. We don't do that anymore: readonly fields are never sent to
the server (same behavior as before the new views).
2017-06-13 08:24:59 +02:00
Christophe Simonis a47a95cde0 [MERGE] forward port branch saas-16 up to 76262f2043 2017-06-12 20:41:44 +02:00
Christophe Simonis 76262f2043 [FIX] web: handle correctly deactivation of duplicate option
This new behavior has been introduced by previous forward-port.
2017-06-12 20:10:11 +02:00
Christophe Simonis ab02bf34b0 [MERGE] forward port branch saas-16 up to cc38b93ab2 2017-06-09 17:11:47 +02:00
Aaron Bohy 8648d16e45 [FIX] web: correctly display nocontent helper if create='0'
When the root node of the arch has attribute 'create' set to '0',
the generated DOM element must have classname 'o_cannot_create'.
This is used to correctly display the nocontent helper (when there
is no record).

Before this rev., the helper indicated that the user can click on
'Create' to create a new record, even if the create action was
disabled. This was for example the case in Point of Sale > Orders.
2017-06-08 10:48:31 +02:00
ppr-odoo ac1fad575e [FIX] web: apply modifiers on separator in FormRenderer
Before this commit, the separator tag ignored all modifiers.
2017-06-07 10:01:33 +02:00
Aaron Bohy 5aa1cf1890 [FIX] web: re-introduce wow effect
When clicking on buttons with classname o_wow (e.g. when marking
an opportunity as won).
2017-06-07 09:25:48 +02:00
Aaron Bohy 25e7014650 [FIX] web: Form: correctly autofocus fields
The autofocus worked fine when switching from 'readonly' to 'edit',
but not when clicking on 'Create' from the multi-record view. This
was because in this case, we were trying to focus the field while
the view wasn't in the DOM yet. This rev. ensures that we wait for
the view to be appended to the DOM before trying to set the focus
on the default field.

Also ensures that the first visible field is correctly focused.
Before this rev., if the first field was invisible (or simply
not focusable), no field was focused.

Credit goes to @msh-odoo for the preliminary work.
2017-06-07 08:08:49 +02:00
Aaron Bohy 98142f731d [FIX] web: BasicModel: default_get: fetch x2manys of x2manys
Suppose that a default_get returns the value [[6, 0, [1]] for an
x2many field (i.e. put id 1 in the relation). A read is performed
to fetch record of the comodel whose id is 1. Suppose that there
is another x2many field of the comodel. This x2many has to be
fetched (if not empty), and processed by the BasicModel (i.e. a
dataPoint must be created for it) as well.

Before this rev., the second x2many wasn't fetched nor processed,
and it produced a traceback for example in Expenses app, when
clicking on 'Submit to manager' from an expense form view.
2017-06-07 08:08:49 +02:00
Christophe Simonis 99c34c4119 [MERGE] forward port branch saas-16 up to 6f3eada2c3 2017-06-06 19:38:29 +02:00
Christophe Matthieu 1b07daf2ed [FIX] calendar: can create an event with start_date as readonly
Before this fix, if the start field is readonly, the user could not create
an event. With this commit, it is also ensured that the context sends the
right default values to the view
2017-06-06 16:17:30 +02:00
David Monjoie 2d26ed05a7 [FIX] web: fix handle widget functionality
Also added tests for handle in list view and inside an x2many.
2017-06-02 15:12:55 +02:00
David Monjoie 6d75ccdb59 [FIX] web: mock server should not catch errors
Otherwise some changes can create rpc errors that are silently caught
and never seen as long as, out of (un)luck, the end result is the same.

Tests which need to create a server error can just simulate it using
the mockRPC mechanism.
2017-06-02 11:06:44 +02:00
Aaron Bohy 1749ac2cd1 [FIX] web: allow to unset and reset same many2one value
Suppose that we have a many2one which is set (has a value) in
a form view. Before this rev., if the user unset the value (by
erasing the input content in edit mode), and then reset the same
value, the input remained empty, and the old value wasn't actually
reset.
2017-06-01 20:45:06 +02:00
Martin Geubelle 19cbbb21fb [FIX] web: handle ´domain´ widget rendering without model
When creating a new record where the ´domain´ widget is set in the view
with an associated model but this model field has no value, an rpc
(search_count) was done on an unknown model, that causes a traceback.

To avoid this, the rpc is not done if the model is not set.
2017-06-01 13:23:30 +02:00
Aaron Bohy 2f4d3d0e66 [FIX] web: Graph: don't ignore graph keys in context
Keys 'graph_mode', 'graph_measure' and 'graph_groupbys' can be
specified in the context and must be used by the graph view to
determine the default mode, meadure and groupbys. Before this rev.,
those keys were simply ignored.
2017-06-01 12:02:17 +02:00
Aaron Bohy 033aec0826 [FIX] web: Graph: correctly return graph's context
allowing to properly save the current state (mode, measure,
groupbys) of the view in the Favorites or add it to the dashboard.
2017-06-01 12:02:17 +02:00
Parth Gajjar d24ea500e6 [FIX] web: basicmodel: properly link parent in m2m
In some cases, the parentID was not properly set, which is a problem
when we need to evaluate the parent in a context.

Note: I also added a better error explanation in the mock server, to
make it better for the developper to see what is wrong.
2017-06-01 11:26:53 +02:00
Parth N. Patel 97ecc4bc93 [IMP] web: kanban: do not remove quick create if dirty
In this commit, we improve the behaviour of quick creation in grouped kanban views.  The issue was that the quick create widget was removed when the user click somewhere else, even if the user added some text. For example, the problem could be seen in the kanban view for the tasks.

In this commit, we simply keep it around if there is a non empty text.
2017-06-01 09:22:51 +02:00
Olivier Dony 5d2869cbc8 [MERGE] Forward-port saas-16 up to ba15df47cb 2017-06-01 01:46:13 +02:00
Aaron Bohy f9a1241721 [FIX] web: editable list: don't create invalid records
Clicking multiple times on 'Create' (in main list views) or 'Add an
item' (in o2m lists) might create invalid rows (i.e. rows with
required fields unset).

Creating a new record requires two sequential RPCs: a default_get
and an onchange (only if there is an onchange of one of the
record's field). When clicking twice to create a new record, that
sequence of RPCs is done twice in parallel, after unselecting the
current row (i.e. saving it if it is valid). However, in both
cases, there is no line to unselect yet (as both operations are
done basically simultaneously). When the first onchange returns,
a first new record is added to the list. When the second returns,
the second one is added and takes the edition, leaving the first
one, invalid, in the list.

This rev. ensures this doesn't happen by preventing concurrent
record creation.
2017-05-31 20:53:55 +02:00
Martin Geubelle a5f139a504 [FIX] web: client-side sort of x2many values
When a ´default_order´ is set on an embedded view for a x2many field,
the sort was only applied server-side, after saving the record. After
adding a record in a x2many, the records were thus not correctly sorted.

We reintroduce here the client-side sort after the x2many modification.
2017-05-31 14:10:13 +02:00
Martin Geubelle e116a69f25 [FIX] web: properly handle autocomplete attribute
With the new views, the attribute autocomplete on input was no
longer supported. We simply reintroduce its support in this commit.

The basic attribute values are 'on' and 'off' but one may want to use a
random string.

Note that an input with type='password' is a special case: the autocomplete
attribute should always be set to 'new-password' to remove autocompletion
(autocomplete='off' doesn't actually remove the autocompletion).
2017-05-31 14:10:13 +02:00
Martin Geubelle e3fdce9643 [FIX] web: add parent in context after 'Save & New'
When clicking on 'Save & New' in the form view dialog, a new default record
is created. The parent was not correctly set in this record, which causes an
error if `parent` was used in context.
2017-05-31 14:10:12 +02:00
Simon Lejeune a0c16e9cd2 [ADD] web: special = save on form buttons
Add support for value 'save' to attribute 'special' for buttons in
form view. This is useful for form views in dialogs. When clicked,
it saves the form view and closes the dialog (the default 'Save'
button doesn't close the dialog). Without this, the only way to
achieve that was to define a dummy python method and call it with
<button type="object" name="dummy_method"/>.
2017-05-30 13:04:06 +02:00
Aaron Bohy 9369afdada [FIX] web: Form: crash when clicking on buttons in dialogs
In view dialogs (e.g. click on the external button of a many2one
in edit mode), the attribute $buttons of the form controller is
undefined (the buttons are rendered by the dialog directly). The
code that (de)activate the buttons to prevent concurrent clicks
made the assumption that $buttons exist, so it crashed when it
doesn't.
2017-05-30 11:08:52 +02:00
Aaron Bohy 625110d527 [FIX] web: Form: don't reload twice on button clicked
For example: open a draft quotation, click on 'Confirm sale',
before this rev., the record was reloaded twice (each RPC done to
load the data was duplicated). This was actually tested, but the
tests didn't mock well the behavior of the ViewManager, so they
couldn't detect that those RPCs were done twice.
2017-05-30 09:29:06 +02:00
Géry Debongnie bbf724e401 [FIX] web: properly support password attribute for fields
With the new views, the special attribute password was no longer
supported.  We simply reintroduce in this commit proper support to
display password fields with *.

Note: we may want to display passwords with a static number of *, but
this requires some thoughts on the usability of the change. We simply
reintroduce the previous behaviour here.
2017-05-29 12:12:45 +02:00
Aaron Bohy d76dc17a98 [FIX] web: Pivot: make expand all actually work
The 'Expand All' feature was tested, but in the test environment
RPCs are mocked, and everything is synchronous (by default). So
even if the tests passed, the feature actually didn't work because
of a deferred (the reload deferred) that wasn't waited for.
2017-05-26 15:15:59 +02:00
Aaron Bohy f72bc6c9be [FIX] web: Pivot: don't reload twice on expand all
Before this rev., the option 'reload: false' wasn't correctly
passed when clicking on 'Expand All', and the data was reloaded
twice.
2017-05-26 15:15:59 +02:00
Aaron Bohy 62f446004f [FIX] web: Pivot: don't ignore pivot keys in context
Keys 'pivot_measures', 'pivot_col_groupby' and 'pivot_row_groupby'
can be specified in the context and are meant to be used by pivot
views to determine the initial measures and groupbys. Before this
rev., the new implementation of the pivot view simply ignored them..
2017-05-26 15:15:59 +02:00