Commit Graph
18 Commits
Author SHA1 Message Date
Christophe Matthieu b3302398bc [IMP] ir.qweb: extract and create independent qweb class from ir.qweb
The goal is to make the code more readable, more easily be optimized, allowing to share the library "QWEB" (python and js) separately Odoo.
2016-06-14 13:12:14 +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 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