Gestion des contrôleurs pour les requêtes HTTP dans Odoo

Dans Odoo, la classe Controller, encapsulée dans le module web, sert d'interface pour gérer les requêtes HTTP. Elle fournit une structure pour le routage et le traitement des demandes web.

RequestHandler

Cette classe offre plusieurs méthodes utilitaires :

  • masquer_mot_de_passe(args) : rempalce les caractères de mot de passe dans la requête par des astérisques.
  • traiter_rpc(nom_service, méthode, paramètres) : gère les requêtes RPC. Le nom_service peut être 'common', 'db', 'object' ou 'report'.
  • redirection_locale(chemin, requête=None, conserver_hash=False, transférer_debug=True, code=303) : redirige vers une nouvelle URL.
  • redirection_avec_hash(url, code=303) : méthode de redirection incluant la valeur du hash local.

WebRequest

Classe parente pour les requêtes web d'Odoo. Ses propriétés incluent : httprequest, httpresponse, httpsession, env, context, session, lang, cr, debug, registry_cr, session_id, registry, db.

Décorateur route

Ce décorateur ancapsule les méthodes de traitement pour le routage des requêtes web. Il doit être appliqué à des méthodes de sous-classes de Controller.

Signature : route(chemin=None, **options)

Paramètres :

  • chemin : chaîne ou liste, mappée au chemin dans l'URL.
  • type : type de requête, 'http' ou 'json'.
  • auth : méthode d'authentification, peut être 'user', 'admin' ou 'none'.
  • methods : méthodes HTTP autorisées, par défaut toutes (GET, POST).
  • cors : valeur pour les en-têtes CORS.

JsonRequest

Sous-classe de WebRequest, dédiée au traitement des requêtes JSON-RPC.

HttpRequest

Sous-classe de WebRequest, gère les requêtes HTTP et les réponses.

  • fabriquer_réponse : pour les réponses non-HTML ou les en-têtes et cookies personnalisés.
  • rendu : affiche un template QWeb.
  • introuvable : gère les erreurs 404.

Exemple 1 : Créer un chemin /accueil qui retourne la chaîne "Bonjour Odoo !"

import odoo
from odoo import http

class MonControleur(odoo.addons.web.controllers.main.Home):

    @http.route(['/accueil'], type='http', auth='none')
    def afficher_accueil(self, *args, **kwargs):
        return 'Bonjour Odoo !'

Exemple 2 : Créer un chemin /recherche qui redirige vers bing.com

import odoo
from odoo import http
from odoo.http import local_redirect_with_hash

class MonControleur(odoo.addons.web.controllers.main.Home):

    @http.route(['/recherche'], type='http', auth='public')
    def rediriger_vers(self, *args, **kwargs):
        return local_redirect_with_hash('http://www.bing.com')

Étiquettes: Odoo Python Contrôleur HTTP QWeb

Publié le 9 juin à 23h02