Commit Graph
17 Commits
Author SHA1 Message Date
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 0bd4545348 [LEGAL] Use global LICENSE/COPYRIGHT files, remove boilerplate text
- Preserved explicit 3rd-party copyright notices
- Explicit boilerplate should not be necessary - copyright law applies
  automatically in all countries thanks to Berne Convention + WTO rules,
  and a reference to the applicable license is clear enough.
2015-06-02 03:16:04 +02:00
Goffin Simon 0fd773a486 [IMP] Cleanup and refactoring of exception handling
Unify and refactor exception handling in framework and addons.

The generic `except_osv` is now deprecated, and replaced by more specialized exception subtypes:
 - `UserError` (renamed from Warning, as it conflicts with the built-in `Warning`) raised when a non-technical error occurs during a business operation. It could be a missing information in the data provided by the user, or a misconfiguration.
 - `AccessError`: raised when any operation is denied because the user conducting it does not have the required access rights.
 - `AccessDenied`: raised when an operation that requires authenticated access is attempted via an unauthenticated request.
 - `MissingError`: raised when an operation is attempted on a record that does not exist.
 - `ValidationError`: raised when an operation violates a SQL or Python constraint.
 - All other exceptions are internal errors due to a system problem or bug, and raised untouched to the client-side, which should display a traceback.

All exceptions take a single message argument.

The `test_exceptions` module has been updated to showcase both new and old (deprecated) exceptions.

A great many old `except_osv` had a useless title with "Error!" or "Warning", those have been removed, as this is handled by the client-side widget that displays the messages.

This commit introduces a more consistent policy for logging errors and warnings:
 - All messages that do not require administrator attention should be logged at INFO level or lower. This includes all errors that are notified to the user in a friendly manner, even for access right problems or validation errors during business operations.
 - All messages that indicate a likely misconfiguration or malicious use by the users should be logged at WARNING level, as they typically require administrator attention.
 - All other unhandled internal errors cannot typically be handled by the user and should be logged at ERROR or higher level, as they require immediate administrator attention.
2015-01-16 17:15:18 +01:00
Leonardo Donelli 4a0b13ed92 [REF] remove vim modelines and resulting trailing blank lines
Let 2015 be a year without modelines!
cf #4174
2014-12-31 15:52:13 +01:00
Raphael Collet 2ad092b5e5 [ADD] doc: new documentation, with training tutorials, and new scaffolding 2014-08-22 17:51:20 +02:00
Raphael Collet cbe2dbb672 [MERGE] new v8 api by rco
A squashed merge is required as the conversion of the apiculture branch from
bzr to git was not correctly done. The git history contains irrelevant blobs
and commits. This branch brings a lot of changes and fixes, too many to list
exhaustively.

- New orm api, objects are now used instead of ids
- Environements to encapsulates cr uid context while maintaining backward compatibility
- Field compute attribute is a new object oriented way to define function fields
- Shared browse record cache
- New onchange protocol
- Optional copy flag on fields
- Documentation update
- Dead code cleanup
- Lots of fixes
2014-07-06 17:05:41 +02:00
Quentin (OpenERP) 0a27066e54 [REF] code review
bzr revid: qdp-launchpad@openerp.com-20130215143503-6a6x53gdeb6j33tm
2013-02-15 15:35:03 +01:00
Antonin Bourguignon 195be49479 [IMP] add a new test for the new exception type
bzr revid: abo@openerp.com-20130201171742-axfcg7y99uxpersw
2013-02-01 18:17:42 +01:00
Antonin Bourguignon a4af860968 [IMP] introduce a new kind of exception: RedirectWarning (warning with an additional redirection button)
bzr revid: abo@openerp.com-20130131181520-q5ol3ngsn93u7hg5
2013-01-31 19:15:20 +01:00
Antonin Bourguignon 59dc49061c [IMP] we don't need a special type of exception anymore
bzr revid: abo@openerp.com-20130124154119-5283u6x1it5xvt0r
2013-01-24 16:41:19 +01:00
Antonin Bourguignon 9d8a2b9eb5 [WIP] move the code to another place
bzr revid: abo@openerp.com-20130121150748-3bw28jhvsj23s1zo
2013-01-21 16:07:48 +01:00
Antonin Bourguignon 64eedb6816 [WIP] start the implementation of WarningConfig
bzr revid: abo@openerp.com-20130118171619-dx0yjwuun0j7m43p
2013-01-18 18:16:19 +01:00
Antonin Bourguignon 8bd622202b [IMP] introduce a new type of exception: WarningConfig. Note that no corresponding RPC_FAULT_CODE has been added; WarningConfig will share the same RPC_FAULT_CODE than Warning (RPC_FAULT_CODE_WARNING = 2)
Also remove a few whitespaces

bzr revid: abo@openerp.com-20130118152346-5v4j94wjrq34hq4m
2013-01-18 16:23:46 +01:00
Vo Minh Thu f82c6503b7 [FIX] xmlrpc: handle old/new exceptions with old/new clients.
bzr revid: vmt@openerp.com-20110930085012-pqzzb3qwvdwu9hxy
2011-09-30 10:50:12 +02:00
Antony Lesuisse c71979e6ae [MERGE] /openerp/6.1 xmlrpc compliant
bzr revid: al@openerp.com-20110928220539-5q8eujk1l0q43d4x
2011-09-29 00:05:39 +02:00
Vo Minh Thu 08cfadaff0 [IMP] xmlrpc: somewhat streamlined the exception types/
exception handling code.
OpenERPDispatcherException which was simply wrapping an exception together with
an exc_info is removed.

bzr revid: vmt@openerp.com-20110927102246-87ibftawukc2d8lc
2011-09-27 12:22:46 +02:00
Vo Minh Thu 157580b8e8 [IMP] xmlrpc: use proper exception type to map to xmlrpc error codes.
bzr revid: vmt@openerp.com-20110926151403-fhx4ph22tua2s3st
2011-09-26 17:14:03 +02:00