Commit Graph
128520 Commits
Author SHA1 Message Date
jem-odoo 20f3290eab [FIX] sale_timesheet: billable task access error for project user
When a project user (without any sales acces rights) want to create a task in
a billable project (linked to a sales order / sales order line), he will face
some access right issues :
1/ the system want to set the default customer on the task, by taking the one
from the sale order line linked to the project in which the task is created. This
raises an error as the task creator has no right to read the project'sale line.
2/ after that, the "sales order" field is computed on the task. This raises the
same error as we need acces through sale line to determine the sales order of the
task.

This commit fixes thoses problem by adding a `sudo` and by adding the "sales order"
field only for sales person.

opw-1999673
2019-06-06 06:58:46 +00:00
jem-odoo 5513ebdf1b [FIX] sale_timesheet: default filters to setup services
In settings, we added the possibility to edit service products per type
(time-based, fixed, or milestone). An action was trigger and a default filter
was applied. This filter was removed with c1f7987f49, making the 3 settings
links displaying all products.
This commit restore the filters. In order to keep the UI silmplification,
those 3 filters are only displayed (in search view) for this specific flow.
So, we keep the general search view simple.

opw-1987352
2019-06-06 06:58:46 +00:00
Florent de Labarre 808238212e [FIX] mrp: add persistent domain
Steps to reproduce the bug:

- Create a product template A with variant color: black and white.
- Create attribute : size : 16gb and 32 gb
- Create a bom with template A.
- Add a bom line L with product B
- Save the bom ,edit it and select an attribute value for L

Bug:

All attribute values of the database (color: white, color: black, size: 16 gb, size 32 gb)
were displayed.

opw:2006988

closes odoo/odoo#33949

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-06-06 12:03:19 +00:00
Goffin Simon 2e7cbca0e9 [FIX] hr_holidays: Not able to fill holiday request
Steps to reproduce the bug:
- Log as admin user in company C
- Go to Leaves module and click on Managers > Allocations
- Create a leave.allocation with type = Compensatory Days, duration = 7 days
mode = By Company and Company = C
- Approve the allocation
- Create a leave request LR for all the company C and approve it
- Log as demo user (only user access right for Leaves)
- Go to Leaves > My Leaves and click on "Leaves requests"

Bug:

A traceback was raised

opw:2005813

closes odoo/odoo#33899

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-06-06 07:29:02 +00:00
Christophe Simonis 995aa1685e [FIX] purchase_stock: correctly set cost_method and valuation in tests
Oversight of previous forward-port.
2019-05-31 16:31:44 +02:00
Christophe Simonis b1970c6f08 [FIX] stock_account: correctly force cost_method in tests
Oversight of previous forward-port.
2019-05-31 16:13:49 +02:00
Nicolas Martinelli dea93a683b [FIX] purchase: orderpoint on existing PO
- Create product A:
Reordering rule of 5 units
Set a vendor V
- Create a SO with 1 unit of A
- Create a PO with 1 unit of A for vendor V
- Run the scheduler => the PO contains 6 units
- Run the scheduler => the PO contains 12 units

The PO should not be updated the second time the scheduler is run.

It occurs because the `orderpoint_id` is not set on the PO line, while
the `_quantity_in_progress` method searches for PO lines with the
orderpoint set.

opw-2000962

closes odoo/odoo#33798

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-05-31 13:19:15 +00:00
Priyanka Kakadiya 0799742d05 [FIX] web_editor: restoreRange on invalid node
In a web editor, add some text, select the text, add a link and
immediately discard the link modal. Traceback.

The traceback is a execute `setEnd` on `Range`, that error is thrown
because editable DIV doesn't save old range

Odoo wrap code does some text node split in order to attach the link
just on the selected text. If it correctly re-set the underlying
structure, it does not update the $(editable) structure used to restore
ranges.

After this commit, editable div will use newly created range for the element

for ex:
-> content: test
-> selected content "test"

when click on link dialog:
ec: test , eo: 4, sc: test, so: 0
selected content  ->  start 0, end 4 -> "test" like this

after clicking on discard:
ec: null text element, eo: 4, sc: null text element, so: 0
selected content  ->  ec and sc both are null, so it will throw an error
while setting cursor position

after applying fix when click on discard:
ec: test, eo: 4, sc: test, so: 0
selected content -> start 0,  end 4 -> "test"

task - 1955863

closes odoo/odoo#33692

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-06-03 05:36:08 +00:00
Jorge Pinna Puissant 37ab5a7009 [FIX] base: ir field - set dependence as required when creating a compute field
Before this commit:
- When you create a compute field, from the model view, dependence field
was not required when creating a compute field.
- When removing the compute code, the dependence field stays marked as
required.

fine-tuning : f01c195288

opw-2003784

closes odoo/odoo#33760

Signed-off-by: Jorge Pinna Puissant (jpp) <jpp@odoo.com>
2019-06-03 06:10:23 +00:00
Odoo Translation Bot 72a0963d2d [I18N] Update translation terms from Transifex 2019-06-02 03:08:27 +02:00
Christophe Simonis 6c16a1f3ba [FIX] product: correct variant image test
Oversight of previous forward-port.
2019-05-31 15:12:11 +02:00
Christophe Simonis cfe0523714 [MERGE] forward port branch 12.0 up to 8f21148e1a 2019-05-31 14:37:38 +02:00
Julien Legros 9993f9c9f9 [FIX] web: typo in font-family for boxed layouts
closes odoo/odoo#34091

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-05-31 12:19:32 +00:00
Abridbus 648a3af3ca [FIX] calendar: exclusive recurrent event from Google with empty update value
During a Google Calendar sync,
exclusive instance of a recurrent event to which you are not the owner and
without an update datetime shouldn't be considered.

See developers.google.com/calendar/v3/reference/events/update
where cancelled status event might have empty fields.

> A cancelled status represents two different states
> depending on the event type:
> Cancelled exceptions of an uncancelled recurring event indicate
> that this instance should no longer be presented to the user.
> Clients should store these events for the lifetime of the parent recurring event.
> Cancelled exceptions are only guaranteed to have values for the id,
> recurringEventId and originalStartTime fields populated. The other fields might be empty.

As you are not the owner, the event shouldn't be deleted from Odoo
as the actual event owner might still attend the meeting.
It should just remove the user who is syncing his calendar from the attendees,
but as the sync currently doesn't support syncing event without an update datetime
from Google, we just choose to ignore the sync of this event.
The attendee will be removed/marked as not attending when the owner of the event
will sync his calendar.

opw-1966309

closes odoo/odoo#34075

Signed-off-by: Denis Ledoux <beledouxdenis@users.noreply.github.com>
2019-06-13 08:17:33 +00:00
Nicolas Martinelli 115ae7f894 [FIX] mrp: next WO lot
- Set the products tracked by lot
- Set 1 route with steps that allow to begin next one after a minimum
amount processed.
- Plan and begin the manufacturing process.
- Process partially step 1, but fully step 2
- Finish step 1

The error 'You can not change the finished work order.' is raised.

This is because we try to set the default final lot on a WO which is
done.

This is only used to suggest the right lot number, so we can safely skip
the step if the WO is done or canceled.

opw-2002044

closes odoo/odoo#34072

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-06-12 13:51:53 +00:00
Fanny He 3c45f08825 [FIX] mail: Remove failure_type and failure_reason when mail successfully sent
When sending a message (e.g. in a CRM lead or SO),
a failure_type and failure_reason are displayed, even when the message
is successfully sent.

This is because these fields are not updated when the email_status
is changed to "sent". We reset these fields to '' when the message is sent.

OPW-2003290

closes odoo/odoo#34082

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-06-12 15:13:36 +00:00
Elmeri Niemelä f417acc2c7 [FIX] website_sale_wishlist: correct _sql_constraints typo
Attribute called _sql_constrains is missing a 't'.

closes odoo/odoo#34033

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-06-12 10:24:27 +00:00
Nans Lefebvre 9ff767ec64 [FIX] uom: fix nonempty reference constraint on uom categories
What's the deal with SQL queries?
The query in _check_category_reference_uniqueness returns:
category_id | uom_count
-------------+-----------
(0 rows)
but if we removed AND U.active = 't', we would have had:
category_id | uom_count
-------------+-----------
8 |         0
(1 row)
As a result, the check on uom_data['uom_count'] == 0 could simply never be true.

opw 1959679

closes odoo/odoo#32788

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-06-12 11:31:16 +00:00
Nans Lefebvre c41170ddc5 [FIX] delivery: get correct package default weight for packages
Make a SO for some products with weight and a delivery set.
Put some products in a pack. It returns a wizard to choose the package type.
This wizard also allows to input the shipping weight.
It always defaulted to 0, instead of the sum of the weight of the products.

Due to ff7df19bd3, default_stock_quant_package_id is in context so
_default_shipping_weight would try to use stock_quant_package.shipping_weight,
which is always set to 0 at that point.
Note that furthermore, the active_id might not be a picking (e.g. a SO).
Therefore we always make the computation, with the default_picking_id in context

opw 2006566

closes odoo/odoo#33930

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-06-12 08:53:03 +00:00
Nans Lefebvre 6b14ceb225 [FIX] account: select default journal with the correct currency
Create a journal J1 of a given type T with no currency.
Create a journal J2 of type T with a currency Y, default currency of company C.

Invoices of type T are created with journal J1 by default.
However, if the currency Y is explicitly set in the context, it will be created
with journal J2, even in company C. In that case J2 will be selected,
because the currency is explicitly set in context.

Now suppose we have a journal J3 of type T with a currency Y', different from
the currency of company C.
Give a lower sequence index to J3 than to J1.
Create an invoice with no currency in context.
Then J3 will be selected despite not being on the correct currency, because
no currency condition has been put in the domain.

We solve these two bugs by always adding the clause in the domain,
and adding that the currency can not be set in the case of the company currency.

opw 2002748

closes odoo/odoo#33795

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-05-31 12:01:30 +00:00
Romain Derie 87d2661aba [FIX] website: remove noupdate for aboutus, contactus, homepage arch
Before this commit, aboutus contactus and homepage would be flag as noupdate.
If not modified, those view would not get modification on module update, which
is not logic.

Now, those view will benefit from any update. It makes even more sense since
multi-website, as those views will never get modified directly (it will COW).

closes odoo/odoo#33919

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-06-05 13:36:38 +00:00
Nans Lefebvre 8bd4f438b1 [FIX] stock: create backorder for all pickings in a batch
Create two pickings, add them to a batch.
Set a quantity less than the order to done on each.
Confirm and set to done. A wizard asks if a backorder should be created.
If confirmed, the first picking is done with a backorder but not the second.

Since the method is in api.multi, we can simply get all pickings.

opw 2004727

closes odoo/odoo#33902

Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
2019-06-05 10:38:00 +00:00
Nicolas Martinelli fea84b5757 [FIX] sale_timesheet: multiple lines create new project
- Create 2 products A & B set as:
Service Invoicing Policy: Milestones (manually set quantities on order)
Service Tracking: Create a new project but no task
- Create a SO with A & B, validate
- Set a delivered quantity for both products
- Go to the project overview

Only the delivered quantity of a single SO line is retrieved in the 'To
invoice'.

It occurs because only a single SO line is linked to the project, while
both are expected to be linked to it.

opw-2003097

closes odoo/odoo#33815

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-06-04 06:02:24 +00:00
Romain Derie 0e403f8d8a [FIX] website_sale_delivery: restore monetary widget
In Odoo 11.0, fb5015d5fc fixed some flows related to prices. By doing that,
the `t-options` dict was set on a variable to avoid code duplication.

But starting from Odoo 12.0, setting a variable on `t-options` attribute seems
to do nothing and is ignored.

This commit fix it by setting the price rather than the options on a variable.

Fixes #33451

closes odoo/odoo#33900

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-06-05 10:10:37 +00:00
Jorge Pinna Puissant 3cbdfe8807 [FIX] crm: change team with the default one
- Have two crm teams with the same team leader, and without team members
(team1, team2 as instance).
- Create a new lead, add as Salesperson the team leader, and as Sales
team the second previously created team (team2).
- Save the new lead.

Before this commit, when we save the lead, the sales team will change,
to set the default sales team for the chosen Salesperson, in this case
team1.

opw-2005924

closes odoo/odoo#33898

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-06-05 09:24:58 +00:00
Goffin Simon 46d0b461cd [FIX] point_of_sale: Initial balance of a new statement in the POS
Steps to reproduce the bug:
- Create a new Bank Account A available in the POS
- Set A as a payment method in the pos.config
- Create a new session and sell a product P for 100€
- Make the payment with A
- Close the session and validate the entries
- Check that a new statement in A has been created with a starting
balance = 0€ and an ending balance = 100€
- Create a new session and close the session

Bug:

A new statement for A had been created with a starting balance = 0€
instead of 100€ (the ending balance of the previous session)

opw:1981984

closes odoo/odoo#33868

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-06-04 11:10:51 +00:00
Bohdan Lisnenko bd3a788479 [FIX] http_routing: slugify_lib - max_length param should be int
closes odoo/odoo#33858

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-06-04 10:53:17 +00:00
Nans Lefebvre 77da958be6 [FIX] account_invoice_report: fix group by product
Group by invoice, products: the untaxed total is correct,
while the (taxed) total is the sum of the lines divided by the number of lines.

On account.invoice.line, there is a price_subtotal_signed, which is the
price_subtotal (untaxed) in the company currency.
Unfortunately price_total_signed does not exist for price_total (untaxed).

As a result, we need to use the price_total on the invoice line,
and divide by the currency rate.
Unfortunately we cannot do it in the subquery because of the scope of the rate.

opw 2003185

closes odoo/odoo#33802

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-06-04 06:00:08 +00:00
Nicolas Martinelli 16f9375dab [FIX] website: website-specific child views
On a eCommerce page were there was no SEO optimization change:
- Customize > Activate "eCommerce categories"
- Customize > Activate "Colapsible category list"
- Promote > Optimize SEO > Change description > Save

Nothing happens.

Actually, an SQL error is raised because of the `ondelete='restrict'`
set at:

https://github.com/odoo/odoo/blob/897feb553e6ef75af9434cb77436b26abde3a761/odoo/addons/base/models/ir_ui_view.py#L212

In this case, we have the following structure:

```
View 1
|
---> View 2 (Website-specific)
|
---> View 3 (Website-specific)
```

For example:

```
Products
|
---> eCommerce Categories (Website-specific)
|
---> Collapsible Category List (Website-specific)
```

Since the inherited view (View 2) is website-specific, we duplicate it
and try to unlink it. However, this view has children, which raises the
error.

To solve the issue, we re-attach the children of the inherited view to
its copy. In a realistic situation, the children of a website-specific
view should also be website-specific, so there is no need to apply the
'copy or re-attach' logic recursively.

We end up with:

```
View 1 (Website-specific, duplicated)
|
---> View 2 (Website-specific, duplicated)
|
---> View 3 (Website-specific)
```

opw-1997946

closes odoo/odoo#33787

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-06-04 08:30:08 +00:00
Nicolas Lempereur 7ff8eb0c15 [FIX] website_event: page edit intent more clear
The bottom of event is shared between all event page and all events.

This is especially misleading when "website menu" with
website_event_track is activated on the event, then we will have several
pages such as "Introduction" / "Location" and depending on if we drop a
widget some pixel too high or two low, it will be only on the current
page or on all events.

With this changeset, when editing there is an information block saying
what part is on all page.

opw-2002163
closes #33857

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-06-04 07:43:14 +00:00
Pierre Rousseau 743434cb2e [FIX] snailmail: send the contact_address
Before this commit, the param contact_address was not sent to the service. However, the service need it to correctly send the letter if the format is wrong.

OPW-1981168

closes odoo/odoo#33855

Signed-off-by: Pierre Rousseau (pro) <pro@odoo.com>
2019-06-04 07:03:36 +00:00
Lucas Perais (lpe) 7be17b739b [FIX] sale: color_field for analytic account should be in list
Have the group analytic tags ON
Have the order.line o2m list non editable
Make a SO, make a line with a tag
Confirm the SO

Click on the line
in the modal, click on the analytic tag

Before this commit, there was a traceback because the color was never fetched
This was because the o2m list view did not fetch the color_field

After this commit, there is no traceback, and displaying
as well as changing the color works as expected

OPW 2002456

closes odoo/odoo#33846

Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
2019-06-03 14:21:35 +00:00
Goffin Simon 74706e9e03 [FIX]payment_paypal: wrong fees computation
Steps to reproduce the bug:
- Create a product P with price=100€
- Configure payment aquier Paypal with fees_int_fixed = 1€ and fees_int_var = 1%
- Set Paypal to be available in the website
- Go to the web shop and add P in the cart
- Choose to pay with Paypal

Bug:

The amout to pay was 102.02€ instead of 102.01€

Before the fix, the fees was computed as followed:

fees = (percentage / 100.0 * amount + fixed) / (1 - percentage / 100.0)
Where fees_dom_fixed = fixed and fees_int_var = percentage

With this computation, the percentage was applied twice.
If for example, we had fixed = 0 then

fees = (percentage / 100.0 * amount) / (1 - percentage / 100.0)

In this case, it's easy to see that the percentage is applied twice.

opw:1981784

closes odoo/odoo#33830

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-06-04 07:24:34 +00:00
Nicolas Martinelli 4cdcab43ee [FIX] mrp: no qty consumed
- Create a MO for '[FURN_8855] Drawer'
- Consume 1 unit of '[FURN_2100] Drawer Black', but DO NOT consume
anything for '[FURN_5623] Drawer Case Black'.
- Complete the MO, then Unlock it
- Edit the '[FURN_5623] Drawer Case Black' line

It is not possible to add a line.

This is expected from 9e77ce2edc, but we still want to be able
to consume some quantity.

Instead of canceling the move lines without any quantity consumed, we
set it to done.

opw-1986919

closes odoo/odoo#33820

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-06-03 11:45:00 +00:00
Nans Lefebvre 9b26052c54 [FIX] sales_team: fix team pipeline kanban overflows
In the kanban views, cards have a fixed size (here it is overriden as 450px).
All internal elements use col-x Bootstrap classes, with have flex 0 0 x/12.
Note that 0 0 correspond to flex-grow and flex-shrink, so the sizes are fixed.
It follows that any long translation or number will overflow badly.
Hover this overflow is, in terms of usability, less worse hiding the overflow
or even  scrollbars.

So nothing is flexy, but too avoid this issue as much as possible,
we give more space to the right side, since the left side only shows a button.

opw 2001951

closes odoo/odoo#33818

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-06-03 08:43:22 +00:00
Nicolas Martinelli b8115cc4c6 [FIX] purchase: incorrect attribute
When the `purchase.order` is added as an embedded tree view on a model
without a `state` field, a crash occurs.

The existing condition doesn't make sense on a PO (while it would make
sense on a PO line), so we simply remove it. Since the condition implied
that the field `invoice_status` was always hidden, we keep it that way.

opw-2005768

closes odoo/odoo#33827

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-06-03 11:06:21 +00:00
Nicolas Martinelli 8f21148e1a [FIX] hr_contract: contract type name
Make the contract type name translatable.

opw-2003957

closes odoo/odoo#33781

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-05-31 05:41:25 +00:00
Christophe Monniez b27077bb0c [MOV] test_pylint, test_lint: add es-check linter
Because Odoo still supports Android Kitkat and Internet Explorer, ES5 is
the highest ECMAScript allowed version.

This commit adds a new test that parses each javascript file found in
addons. The test fails if unsupported js code is found.  As ES6 is
allowed during tests, the files under a path that contains 'static/test'
are just skipped.

This test uses the es-check tool
(https://www.npmjs.com/package/es-check).

If the es-check tool cannot be found, the test is simply skipped.

Also the test_pylint module is renamed to a more generic name test_lint,
that way, every linter test can find a shelter  here.

closes odoo/odoo#33724

Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2019-05-30 11:22:10 +00:00
Priyanka Kakadiya d85451800f [FIX] web_editor: restoreRange on invalid node
In a web editor, add some text, select the text, add a link and
immediately discard the link modal. Traceback.

The traceback is a execute `setEnd` on `Range`, that error is thrown
because editable DIV doesn't save old range

Odoo wrap code does some text node split in order to attach the link
just on the selected text. If it correctly re-set the underlying
structure, it does not update the $(editable) structure used to restore
ranges.

After this commit, editable div will use newly created range for the element

for ex:
-> content: test
-> selected content "test"

when click on link dialog:
ec: test , eo: 4, sc: test, so: 0
selected content  ->  start 0, end 4 -> "test" like this

after clicking on discard:
ec: null text element, eo: 4, sc: null text element, so: 0
selected content  ->  ec and sc both are null, so it will throw an error
while setting cursor position

after applying fix when click on discard:
ec: test, eo: 4, sc: test, so: 0
selected content -> start 0,  end 4 -> "test"

task - 1955863

closes odoo/odoo#33792

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-06-03 05:52:13 +00:00
Toufik Ben Jaa 29762514ae [FIX] sale: singleton error when validating payments
- When validating a payment an "expected singleton" exception is
raised due to the fact that we are using a recordset with multiple
record instead of a recordset with a single record.

OPW-1981632

closes odoo/odoo#33767

Signed-off-by: Christophe Simonis <chs@odoo.com>
2019-05-29 16:16:18 +00:00
Nicolas Martinelli d92acc602c [FIX] event_sale: no currency
If the company is not set on the SO, the creation of a SO line crashes
because `currency` is empty.

opw-2005143

closes odoo/odoo#33783

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-05-31 06:36:55 +00:00
Sébastien Theys 7bb0c8b6c5 [IMP] website_sale: prevent new product from being published
Before this commit, new products created from the website backend were published
by default. This is a problem because the product manager might click on save
before he has finished configuring his new product. He should always be given
a chance to see it himself on the website before the publication.

closes odoo/odoo#32211

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-05-29 13:36:13 +00:00
Lucas Lefèvre 0b36687bc1 [FIX] resource: Avoid to set attendances twice
Don't set attendance_ids default value if the field
is not in the field list parameter.

closes odoo/odoo#33904

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2019-06-05 10:22:51 +00:00
Thanh Dodeur c212cfe899 [REF] *: removes datas_fname from ir.attachment
This commit removes the field `datas_fname` from `ir.attachment` as
it was unnecessary and most of the time the duplicate of `name` or
`url`.

Task #1909865

closes odoo/odoo#32976

Signed-off-by: Martin Geubelle (mge) <mge@openerp.com>
2019-06-05 09:12:13 +00:00
Robot Odoo d6847bacb1 [IMP] web, http, http_routing, *: new asset for test files
Coming with https://github.com/odoo/enterprise/pull/4281

This commit goal is to encapsulate every tour-test into a separate assets
bundle that would be called only during tests (command line) or by URL
(debug=tests). That way, a lot of .js files would not be loaded anymore
uselessly outside test mode and will speed up the page loads (especially in the
frontend as the backend do not reload the page anyway).

In order to do that, we needed to propagate the `debug` state from page to
page.
Otherwise, every page change during a test would simply lose the debug mode and
the test would stop as the test assets would not be loaded.
As we could not add the `&debug=tests` on every link (either hardcoded or
preprocess during the rendering), it has been decided to store it in session.

Technical summary:
1. `debug` state (currently only stored in URL) will be stored in session.
Either when adding the `debug` param in URL (handled with _dispatch) or by
starting Odoo with `test-enable` or `test-file` (handled by session init).
2. Once activated (and so set in session), debug mode will be remain activated
even if not visible in URL (after a page navigation eg).
To remove it,  set its value to nothing, `debug=`. That will exit debug mode
(whatever mode it is: debug, assets, tests).
3. As tour-test files are now in a separate bundle, every layout (when needed)
should `t-call="web.compiled_assets_tests"`.
As it would be redundant and verbose, no `t-if` is needed on the t-call to
load it only in test debug mode. That will be handled by
`compiled_assets_tests` that will actually do the conditionnal t-call-assets
to web.assets_tests, if tests debug mode is activated.
4. In addition to separating the tour-tests files in a separate bundle, we also
moved those files to a specific folder under /static/tests/tours next to
QUnit tests.
5. Also, tour files will be moved in a specific folder /static/src/js/tours for
cleanness purpose (those files will still be kept in their 'normal' assets
as needed outside test mode since it is tours).

closes odoo/odoo#33213

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-06-05 09:42:45 +02:00
Jeremy Kersten 7a3046a38f [IMP] tools: add DotDict helper
This function allow a quck dot.notation access to dictionary attributes

We need to make it re-usable for a future enterprise commit
2019-06-05 05:56:33 +00:00
Romain Derie 72f7139f52 [IMP] *: use new helper config.isDebug()
Before this commit, both config and session were aliases to odoo.debug.
Now, config.isDebug() should be call, with possibility to pass a parameter to
check if we are in a specific debug mode such as 'tests' or 'assets'.

task-1934445
Coming with https://github.com/odoo/enterprise/pull/4281
Closes https://github.com/odoo/odoo/pull/33213
2019-06-05 05:56:33 +00:00
Romain Derie 73327db065 [IMP] *: add debug manager in frontend
Now that the debug mode is stored in session, we need a clear indication that
debug mode is activated.
In backend, the 'fa-bug' is doing the trick but in frontend there is no visible
clue that debug mode is enabled.

This commit separate the debug manager code/feature so we can instanciate it in
frontend only with usefull options (such as enable assets, leave debug mode..).

Now, in frontend, people having access to the navbar (o_main_navbar) will see
the same 'fa-bug' icon with minimal options as mentioned above.
Also, in the footer, there will be another 'fa-bug' icon without any options.
It will be usefull when the navbar is not shown, typically the case for
public user, or for portal (without website installed)).
Clicking on it will simply leave debug mode as hinted in tooltip.

task-1934445
Comes with https://github.com/odoo/enterprise/pull/4281
Closes #33213
2019-06-05 05:56:33 +00:00
Romain Derie fbe5b64eb3 [IMP] web: rename file to prepare changes on next commit
As this file will be split in 2 parts, this will minimize diff.

task-1934445
Comes with odoo/enterprise#4281
Closes #33213
2019-06-05 05:56:33 +00:00
Romain Derie 3c37e0e110 [IMP] web, web_tour, website, point_of_sale: adapt code to new debug
As now the debug state is stored in session, the JS framework code and some
templates needed some changes.
First, the debug state is retrieved from session and not the URL anymore.
Second, the debug state does not need to be forwarded as it is now persistent.

task-1934445
Comes with https://github.com/odoo/enterprise/pull/4281
Closes #33213
2019-06-05 05:56:33 +00:00