Commit Graph

7 Commits

Author SHA1 Message Date
Antony Lesuisse ee4c1f702e [IMP] http move db dispatching to AbstractModel ir.http
Allow module to override the http dispatching process:
- The default implementation uses werkzeug.routing but any other method could
  be used, it'a also possible to pre/postprocess (i.e. url aliases)
- Authentication (auth param on route) is plugggable by defining now
  _auth_method_<methodname>
- Error handler are overridable, any module can define a new exception and
  handle it by orverriding the _handle_<error_code> method.
- Add model converters for routes, to directly get the browse record example
  @route(['/job/detail/<model("hr.job"):job>'], type='http', auth="user")

This is done by splitting dispatching, when the db is unknown low level http.py
dispatching is used, it's only used by a few controller in base and web. When
the db is known, ir_http is used because it's a regular Model it is fully
overridable by openerp modules.

bzr revid: al@openerp.com-20131110142731-qi9910fkty25cdtd
2013-11-10 15:27:31 +01:00
Antony Lesuisse 5f9ef80d70 [FIX] make routing converters modular
bzr revid: al@openerp.com-20131110141250-myreqy8ofvpj2r0u
2013-11-10 15:12:50 +01:00
Antony Lesuisse 575376ef29 [FIX] http.py use checked_call for concurrency retry and exception handling
bzr revid: al@openerp.com-20131110140757-tbe8yondadokd4ke
2013-11-10 15:07:57 +01:00
Antony Lesuisse 7f3133e423 [IMP] ir_http better exception handling for http errors
bzr revid: al@openerp.com-20131110135739-2tmr6iynil16ooi1
2013-11-10 14:57:39 +01:00
Antony Lesuisse c396149f4f [FIX] use AbstractModel, use session.db to ir_http dispatch for none controllers
bzr revid: al@openerp.com-20131110135406-r0cyxhnve3jl8r2i
2013-11-10 14:54:06 +01:00
Antony Lesuisse afbec17f77 [IMP] model converters for routes, to directly get the browse record
example @route(['/job/detail/<model("hr.job"):job>'], type='http', auth="user")

bzr revid: al@openerp.com-20131110123707-yb3hbdqlo063dj64
2013-11-10 13:37:07 +01:00
Antony Lesuisse d50577b69d [IMP] http move db dispatching on the orm level
Split low level dispatching and high level dispatching.
Low level dispatching is used when the db is unknown it's only used by a few
controller in base and web.
High level dispatching is used when the db is known, it is used by most
controllers and it handles authentication and errors. Because it's a regular
osv object all it is fully overridable by openerp modules.

bzr revid: al@openerp.com-20131110014609-io03vspj2q1wtqa0
2013-11-10 02:46:09 +01:00