Commit Graph
209 Commits
Author SHA1 Message Date
Olivier Dony d4d09df143 [MERGE] Forward-port saas-10 up to f76f4cd0b6 2016-07-01 20:14:28 +02:00
Denis Ledoux bc2a06c019 [FIX] http, website_form: preserve form input values order
By default, werkzeug doesn't preserve the order
of the parameters sent to routes.

As stated in the werkzeug documentation:
```
parameter_storage_class

the class to use for args and form.
The default is an ImmutableMultiDict which supports multiple values per key.
alternatively it makes sense to use an ImmutableOrderedMultiDict
which preserves order or a ImmutableDict which is the fastest
but only remembers the last key.
It is also possible to use mutable structures, but this is not recommended.

New in version 0.6.

```

For some of our use cases, it makes sense to keep the order
of the route parameters.

e.g. In the website builder, when building a form
with a bunch of inputs values that will be concatened
in a lead note, the user expects the answer to be displayed
in the same order than the form inputs.

This change is seen as a bit risky as it could lead to
performances issues in the http routes processing, and this
is the reason we do not merge this in stable 9.0 at the moment.

If needed, it could be back ported later to 9.0, after
several weeks/months of testing in this release(saas-10 atm).

opw-677508
2016-06-30 10:45:55 +02:00
Christophe Simonis dda0d3d62d [MERGE] forward port of branch saas-10 up to baf494c
# Conflicts:
#	addons/hr_timesheet/project_timesheet.py
#	addons/sale_layout/i18n/es_PE.po
#	addons/sale_layout/i18n/hu.po
#	addons/sale_layout/i18n/lo.po
#	addons/sale_layout/i18n/pl.po
#	addons/sale_service/i18n/es_MX.po
#	addons/sale_service/i18n/es_PE.po
#	addons/sale_service/i18n/lo.po
#	addons/stock/stock.py
#	addons/stock/stock_view.xml
#	addons/warning/i18n/es_PE.po
#	addons/warning/i18n/lo.po
#	addons/warning/i18n/ru.po
#	addons/web/i18n/cs.po
#	addons/web/i18n/ja.po
#	addons/web/i18n/lo.po
#	addons/web/i18n/th.po
2016-06-15 12:59:39 +02:00
Christophe Simonis bfbe2d6e6d [MERGE] forward port of branch saas-6 up to df95b1f
The changes in `l10n_es` [1] have been ignored. They will be ported to
the new accouting later.

[1] See 730890f369 and e3e5cfe82c
2016-06-14 19:22:21 +02:00
Christophe Simonis df95b1fc9d [MERGE] forward port of branch 8.0 up to baa4cc0
# Conflicts:
#	addons/account/i18n/bs.po
#	addons/account_analytic_default/i18n/lo.po
#	addons/account_analytic_plans/i18n/lo.po
#	addons/account_bank_statement_extensions/i18n/zh_CN.po
#	addons/account_cancel/i18n/ca.po
#	addons/account_check_writing/i18n/zh_CN.po
#	addons/account_payment/i18n/bs.po
#	addons/account_test/i18n/zh_CN.po
#	addons/analytic/i18n/te.po
#	addons/auth_ldap/i18n/pl.po
#	addons/auth_oauth/i18n/bs.po
#	addons/auth_oauth/i18n/pl.po
#	addons/base_geolocalize/i18n/uk.po
#	addons/base_import/i18n/pl.po
#	addons/base_import_module/i18n/pl.po
#	addons/base_setup/i18n/bs.po
#	addons/claim_from_delivery/i18n/zh_CN.po
#	addons/crm_claim/i18n/zh_CN.po
#	addons/crm_helpdesk/i18n/zh_CN.po
#	addons/crm_partner_assign/i18n/pl.po
#	addons/crm_profiling/i18n/zh_CN.po
#	addons/crm_project_issue/i18n/ca.po
#	addons/email_template/i18n/ca.po
#	addons/email_template/i18n/zh_CN.po
#	addons/event/i18n/da.po
#	addons/event_sale/i18n/da.po
#	addons/google_calendar/i18n/bs.po
#	addons/google_drive/i18n/bs.po
#	addons/hr/i18n/cs.po
#	addons/hr_expense/i18n/sv.po
#	addons/hr_holidays/i18n/pl.po
#	addons/hr_payroll_account/i18n/zh_CN.po
#	addons/hr_recruitment/i18n/ja.po
#	addons/hr_timesheet/i18n/tlh.po
#	addons/hr_timesheet_sheet/i18n/fr.po
#	addons/im_chat/i18n/bs.po
#	addons/im_chat/i18n/da.po
#	addons/im_livechat/i18n/bs.po
#	addons/l10n_be/i18n/pl.po
#	addons/l10n_be_intrastat/i18n/es_DO.po
#	addons/l10n_be_intrastat/i18n/lo.po
#	addons/l10n_be_invoice_bba/i18n/ca.po
#	addons/l10n_be_invoice_bba/i18n/lo.po
#	addons/l10n_eu_service/i18n/mk.po
#	addons/l10n_in_hr_payroll/i18n/zh_CN.po
#	addons/l10n_multilang/i18n/zh_CN.po
#	addons/l10n_th/i18n/zh_CN.po
#	addons/lunch/i18n/bs.po
#	addons/lunch/i18n/pl.po
#	addons/lunch/i18n/sv.po
#	addons/lunch/i18n/th.po
#	addons/marketing/i18n/te.po
#	addons/marketing_campaign/i18n/zh_CN.po
#	addons/marketing_campaign_crm_demo/i18n/pl.po
#	addons/membership/i18n/zh_CN.po
#	addons/mrp_byproduct/i18n/ab.po
#	addons/mrp_repair/i18n/pl.po
#	addons/mrp_repair/i18n/sv.po
#	addons/note/i18n/zh_CN.po
#	addons/pad/i18n/pl.po
#	addons/payment_buckaroo/i18n/pl.po
#	addons/payment_ogone/i18n/pl.po
#	addons/point_of_sale/i18n/bs.po
#	addons/pos_discount/i18n/bs.po
#	addons/pos_restaurant/i18n/bs.po
#	addons/procurement/i18n/ja.po
#	addons/procurement/i18n/sv.po
#	addons/product/i18n/bs.po
#	addons/product_expiry/i18n/hr.po
#	addons/product_expiry/i18n/sv.po
#	addons/product_extended/i18n/sv.po
#	addons/project/i18n/ja.po
#	addons/project_issue/i18n/ja.po
#	addons/project_issue/i18n/zh_CN.po
#	addons/project_issue_sheet/i18n/zh_CN.po
#	addons/purchase/i18n/bs.po
#	addons/purchase/i18n/ja.po
#	addons/purchase/i18n/nb.po
#	addons/purchase/i18n/sv.po
#	addons/report/i18n/fr.po
#	addons/report/i18n/pt_BR.po
#	addons/report_intrastat/i18n/sv.po
#	addons/sale/i18n/bs.po
#	addons/sale/i18n/ja.po
#	addons/sale_crm/i18n/fa.po
#	addons/sale_layout/i18n/zh_CN.po
#	addons/sale_service/i18n/lo.po
#	addons/sales_team/i18n/zh_CN.po
#	addons/stock_account/i18n/ja.po
#	addons/stock_account/i18n/sv.po
#	addons/stock_picking_wave/i18n/lo.po
#	addons/subscription/i18n/zh_CN.po
#	addons/survey/i18n/mk.po
#	addons/survey/i18n/pt_BR.po
#	addons/warning/i18n/lo.po
#	addons/web/i18n/lo.po
#	addons/website_blog/i18n/bs.po
#	addons/website_blog/i18n/ja.po
#	addons/website_crm_partner_assign/i18n/pl.po
#	addons/website_crm_partner_assign/i18n/zh_CN.po
#	addons/website_event/i18n/da.po
#	addons/website_event/i18n/zh_CN.po
#	addons/website_event_sale/i18n/da.po
#	addons/website_event_track/i18n/da.po
#	addons/website_event_track/i18n/ja.po
#	addons/website_event_track/i18n/zh_CN.po
#	addons/website_forum_doc/i18n/zh_CN.po
#	addons/website_hr_recruitment/i18n/da.po
#	addons/website_hr_recruitment/i18n/ja.po
#	addons/website_mail/i18n/fr.po
#	addons/website_mail/i18n/ja.po
#	addons/website_mail_group/i18n/zh_CN.po
#	addons/website_quote/i18n/bs.po
#	addons/website_sale/controllers/main.py
#	addons/website_sale/i18n/bs.po
#	addons/website_sale/i18n/fa.po
#	addons/website_sale_delivery/i18n/zh_CN.po
#	addons/website_sale_options/i18n/lo.po
#	openerp/addons/base/i18n/bs.po
#	openerp/addons/base/i18n/ka.po
2016-06-14 18:53:27 +02:00
Martin Trigaux de78b1b3da [FIX] http: force removing the debug in redirection
In case of local_redirect with
* forward_debug=False
* qwery={'debug': True}

the debug mode should be removed.

cf discusion on #12107 and dd4980b0
2016-06-13 15:18:09 +02:00
Martin Trigaux dd4980b0a8 [FIX] http: keep debug mode in rediction
The parameter forward_debug is used to keep the debug mode during redirection.
Previous code was setting the debug to None which is ignored by werkzeug, making
the option useless.

Closes #12107
2016-06-10 16:51:41 +02:00
Christophe Simonis ac5023060c [MERGE] forward port of branch saas-10 up to 2f948c7 2016-06-08 12:19:23 +02:00
Jeremy Kersten f413d155df [FIX] openerp: force Odoo to serve svg with mimetype image/svg+xml
Odoo serves files based on the mimetype imported with python module Mimetype.
In some case, mimetype on windows for svg is undefined or misconfigured and
the svg is returned as text/plain (and so xml and not img).

This commit overrides the default mimetype to render .svg file with mimetype
'image/svg+xml'.

It is similar to add/override the key from windows registry with:
```
[HKEY_CLASSES_ROOT\.svg]
@="svgfile"
"Content Type"="image/svg+xml"
```
The advantage to override it in Odoo, is to be sure that even if this key has
been updated or deleted by a cleaner software or malware, Odoo continue to work

This closes odoo/odoo#12150, closes odoo/odoo#9061, closes odoo/odoo#9118
2016-05-31 14:14:30 +02:00
Christophe Simonis 2f374c4cba [MERGE] forward port of branch 8.0 up to 3a32021 2016-05-12 12:38:02 +02:00
Olivier Dony ac8b7e90b5 [FIX] http: clear environment/caches on transaction rollback
Backport of 8423a0df34

Clear the cache/environment in addition to rolling back
the cursor, in order to retry the transaction with fresh
data, not partially stale data.
2016-05-11 01:01:54 +02:00
Raphael Collet 4ddc323139 [FIX] base: fix and complete migration of base/ir
- add or fix decorators on methods
- fix most compute methods (wrong dependencies)
- revert changes in `eval_context` of `ir.actions`
- various code simplifications and improvements
- migrate methods that were not
- ir_qweb: modify `QWebContext` to take an environment instead of `cr`, `uid`, `context`
- ir_qweb: convert `AssetsBundle` to use new API `env`
- ir_ui_view: use decorator `multi` on method `read_combined`
- ir_ui_view: ensure that method `render` is never called with an xml_id
- ir_ui_view: factor out part of the `ormcache` key of method `_read_template`
2016-03-21 13:46:44 +01:00
Géry Debongnie f970906c9e [IMP] base,openerp,web: add debug mode === 'assets' and don't split assets by default
This is a rather large change for developers: from this commit on, we
need to use debug=assets instead of just debug to split assets.

The About menu has been slightly improved as well (the link does not
appear when we are already in debug mode), and an option has been added
in the debugging menu to activate the assets debugging mode.
2016-03-09 13:01:34 +01:00
Denis Ledoux 3c642e283d [MERGE] forward port of branch 8.0 up to 2ba7fa3 2016-03-01 10:55:13 +01:00
Denis Ledoux 3913667396 [FIX] website: backport of 8d2a3ba12d 2016-03-01 10:53:44 +01:00
Martin Trigaux 8b4f052a38 [MERGE] Forwardport of branch saas-6 up to c649bb0df 2016-01-05 18:28:06 +01:00
Denis Ledoux aef8a4d618 [MERGE] forward port of branch 8.0 up to f9f7669 2015-12-21 18:24:22 +01:00
Xavier Morel 8595bc2ff7 [IMP] csrf: better warning and documentation
After initial implementation CSRF protection had been left poorly
documented tripping up users and developers (#9538, #10139).

Add a warning in the logs for developers, and a more extensive
explanation of the whole thing in the @route docstring (and the official
documentation).

Fixes #10158
2015-12-21 13:10:45 +01:00
andreparames 6b9b2274e5 [FIX] doc: http.route auth=public instead of admin
Removed the `admin` option, since it was removed on 04a5264, and added the
option `public`.

Fixes #9688
2015-12-11 10:52:52 +01:00
Jeremy Kersten f814dd9908 [FIX] web, openerp: debug mode now works without referer
In some cases the Referer HTTP header may be missing or
stripped by a proxy, browser extension or anti-virus.
This breaks debug mode because it was solely relying
on the Referer header.

Introducing an explicit X-Debug-Mode header for RPC
calls allows for an alternative method that works
even when the Referer is missing.

This won't work in all cases, e.g. for direct $.ajax
calls, for example.

Closes #9824
2015-12-01 13:47:30 +01:00
Nicolas Lempereur 8423a0df34 [FIX] http: clear environment on checked called rollback
If the current cursor transaction was not empty when using the check
called endpoint, at the first call the cursor would be rollbacked but
the environment could still have outdated values.

This was an issue for example when selecting the route would trigger
database insert, for instance when a model was used in the route and
this model had also translatable prefetchable fields with tokens not
already present in ir.translation

opw-652045
2015-11-26 16:57:03 +01:00
Christophe Simonis 7636b510a2 [ADD] *: CSRF protection in forms and routes
* make CSRF protection the default on all non-SAFE methods
  note: there currently is no way to call a CSRF-protected endpoint
  without a form-encoded entity-body as that's the only place we get the
  CSRF token from.
* simple CSRF token generation: just use the HMAC'd session id, no
  generating a new random token per session then HMAC it
* use constant-time equal function to avoid timing attacks
* assert that a database secret is configured before hashing/validating
  the CSRF token
* opt-out database manager from CSRF: The super-admin password serves
  the purpose of a CSRF token in the database manager screens.
  There is no request database to obtain the
  secret and generate a CSRF token.
2015-10-01 01:36:50 +02:00
Leonardo Rochael Almeida bf4b47c94d [IMP] JSONDecodeError > ValueError
JSONDecodeError extends ValueError, and is not available in the Python
Standard Library.
2015-09-28 10:53:53 +02:00
Leonardo Rochael Almeida 60af7cac02 [IMP] replace simplejson with stdlib json
The stdlib version of the json library is more recent than the 3.5.3
version we are pinning in `requirements.txt`

There is no reason to use it.

Closes #6940
2015-09-28 10:53:32 +02:00
Christophe Simonis 57168a9e90 [MERGE] forward port of branch saas-6 up to a669433 2015-09-23 14:34:26 +02:00
Christophe Simonis 88eaa7dad8 [MERGE] forward port of branch 8.0 up to 35233db 2015-09-11 17:28:07 +02:00
Olivier Dony abde3e0e5b [IMP] http: LazyResponse rendering w/ concurrent access protection
QWeb's LazyResponse mechanism allows controllers to be inherited
and to alter the rendering context (qwebcontext) *after* calling
super().

However it caused the final rendering to occur outside the protection
of the @service.model.check decorator that handles concurrent access
errors. In rare cases the lazy rendering can be interrupted by
a concurrent access error, for example when bootstrapping the
the cache of asset bundles (as it INSERTs a bunch of attachments).

By forcing the flatten()ing of the lazy response earlier, right
after calling the route's endpoint(), it occurs within the
protection of the @service.model.check, and benefits from the
automatic retry.

flatten() was modified to avoid rendering twice the template
The flatten() in get_response() is still necessary for addons
code that directly calls get_response().

Moved QWebException into openerp.exceptions next to the other
exceptions classes - since it now has more global semantics.

~
The whole request dispatching code could really do with a
complete redesign/simplification.
2015-09-11 14:15:57 +02:00
Olivier Dony 8d2a3ba12d [FIX] http: stop altering endpoints during routing
Request arguments were being stored on the routing
endpoint during the dispatching.
This could cause request0 to use parameters from request1
if request1.set_handler() is called before request0's
dispatching is over. No reason to store request arguments
on routing endpoints anyway.
2015-09-10 20:51:07 +02:00
Stéphane Bidoul 8d58d985dd [FIX] http: no auto-load for modules not installable
Closes #8289
2015-09-09 13:56:55 +02:00
Ajay Javiya 31518bc09b [IMP] base: make group "Technical Features" effective in debug mode only
In method `user_has_groups`, make "Technical Features" effective in debug mode.
Make the group "Employees" inherit "Technical Features".
Make the group "Technical Features" invisible in the user form view.
Remove useless `ir.rule` attached on group "Technical Features".
Fix `test_acl` by avoiding the tricks around the group "Technical Features".
2015-08-28 14:51:09 +02:00
Christophe Simonis 12b7e0e875 [IMP] http: name of temp files in session store
When storing files send in POST in session_store, store them with a
name based on the name of the session file itself (ease matching sessions
and files for debugging purpose)
2015-08-06 21:24:40 +02:00
Christophe Simonis b13553d2b6 [FIX] web, base: POST requests handling
POST requests on routes with auth="user" are now correctly handled when
the user is not connected. Request data (form and files) are stored in
the session. Once the user is logged, redirect her to a specific route
that will reprocess the original POST request.
2015-08-05 12:01:12 +02:00
Antony Lesuisse 4b330f3173 [FIX] http jump to database selector on broken databases 2015-08-01 17:20:43 +02:00
Antony Lesuisse a88c520d03 [IMP] db and common service cleanup
- move check_super into db
- remove some hardcoding from dispacth
- hardcode wsgi handler and rpc endpoints
2015-08-01 17:20:43 +02:00
Christophe Simonis 13468c271f [MERGE] forward port of branch 8.0 up to ed3065e 2015-06-18 19:41:31 +02:00
StefanRijnhart 3940a096b2 [FIX] http: Compatibility with psutil 3.0
Version 3.0 has replaced get_memory_info by memory_info.
Create wrapper to be able to use the correct one depending on the installed
version.
2015-06-16 08:59:44 +02:00
Christophe Simonis 4647778758 [MERGE] forward port of branch 8.0 up to ea59856 2015-06-15 12:28:32 +02:00
Alexis de Lattre 96135fa785 [FIX] http: correct authentication via JSON-RPC.
Since 31d817e, we rotate then session at login/logout.
Unfortunatly, `openerpframework.js` does not support session id change
at authentication and keep old one.

In order to keep compatibility with existing js clients (including 7.0
ones), we do not rotate the session at authentication.

Fixes #6948
Closes #6949
2015-06-05 12:38:39 +02:00
Jeremy Kersten daa69fb838 [FIX] http: avoid that request.not_found crash
return request.not_found crash with a internal error, because get_response
takes a environment as param.

Werkzeug Documentation:
Keep in mind that you have to pass an environment to get_response() because
some errors fetch additional information from the WSGI environment.
2015-06-01 10:30:16 +02:00
Christophe Simonis 14a7d52307 [MERGE] forward port of branch 8.0 up to 327e471 2015-05-21 14:50:39 +02:00
Christophe Simonis 291119c802 [FIX] http: request.env and request.cr now raise RuntimeError`.
These method used to raise an `AttributeError` when `self.registry`
returns `None`. Now raises a more appropriated exception.
2015-05-21 13:13:23 +02:00
Colin Newell 6e54c8d17a [FIX] web: avoid marking session as modified every time
The `rotate` flag introduced by 31d817e849
was initialized at the very end of the session init, after
the reset of the `modified` flag.
This had the side-effect of marking the session as modified
for every request, saving the session to disk every time
even without any change.

Closes #6795
2015-05-21 12:52:54 +02:00
Coin Newell 31d817e849 [FIX] web: rotate session identifiers after login/logout
As recommended by OWASP
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Renew_the_Session_ID_After_Any_Privilege_Level_Change

Closes #6760
2015-05-19 01:45:46 +02:00
Antony Lesuisse ceb53fad6d [IMP] website: ir.http route cache for auth public
- remove useless cache clear_prefix
- add a route cache attribute when used it will save the rendered page into the
  ormcache for the specified time, this is only enabled if the user is public
  and reponse code is 200
- enable it on /page controller for 5min
2015-05-17 17:08:13 +02:00
Christophe Simonis 0da722aa6a [MERGE] forward port of branch 8.0 up to bff6dff 2015-05-11 15:12:24 +02:00
Raphael Collet fdc6ba1820 [FIX] http: make sure to instantiate an environment before calling method
This fixes an issue in property `field.digits` that cannot find a valid cursor
to the database.  Forcing the instantiation of an environment makes the cursor
retrievable.
2015-05-11 12:32:00 +02:00
Christophe Simonis fefb298972 [MERGE] forward port of branch 8.0 up to dc41a9b 2015-03-02 18:19:34 +01:00
Ravi Gohil 04de292885 [FIX] http: support old version of psutil
Add support for older versions of psutil (<1.2.0). Only used when
debug_rpc is enabled.

Closes #5108, #5163
2015-03-01 02:17:04 +01:00
Christophe Simonis fa75094e6f [MERGE] forward port of branch 8.0 up to 4af53de
ignore .po and .pot changes
2015-02-03 18:47:42 +01:00
Xavier Morel 88cc816670 [IMP] http: don't warn when using HTTPException results
When returning an HTTPException e.g. by calling ``request.not_found()``
which returns a ``werkzeug.exceptions.NotFound()``, the http system
would log a warning as HTTPException is neither a subclass of Odoo's
Response nor a subclass of werkzeug's BaseResponse.

Move the string response case about (for flow clarity), and convert
HTTPException instances to Werkzeug responses then fall into the normal
BaseResponse -> Response case to ultimately get an Odoo response object
out of the HTTPException instance.
2015-01-29 16:15:36 +01:00