IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Odoo (ex-OpenERP) Discussion :

Comment utiliser une fonction de l'ancienne API dans un modèle de la nouvelle API ?


Sujet :

Odoo (ex-OpenERP)

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Comment utiliser une fonction de l'ancienne API dans un modèle de la nouvelle API ?
    Bonjour,

    J'essaie d'utiliser la fonction copy_data dans une classe héritée de product_packaging.
    J'utilise _set_product_tmpl_id_fnc() dans un champ calculé (compute).

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     @api.one
     def _set_product_tmpl_id_fnc(self):
         packaging_obj = self.pool.get('product.packaging')
         if len(self.product_tmpl_id.product_variant_ids) >= 1
         for product in self.product_tmpl_id.product_variant_ids
             packaging_copy = packaging_obj.copy_data(self.id)
             packaging_copy.write({'product_id':self.product_id})
    Lorsque je l'exécute, j'ai le message d'erreur suivant:

    TypeError: copy_data() takes at least 4 arguments (2 given)
    Voici la signature de la fonction copy_data:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    def copy_data(self, cr, uid, id, default=None, context=None):
    Pourriez-vous m'éclairer sur la situation s'il-vous-plaît ?

    Par avance merci,
    Hugo

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 100
    Points : 114
    Points
    114
    Par défaut
    Bonjour,
    Votre problème est simple. Vous avez une fonction de la nouvelle API qui a en argument (self) et vous voulez utiliser une fonction de l'ancienne API qui a en argument (self, cr, uid, id, default=None, context=None).
    Votre erreur vous dit simplement qu'il vous manque deux arguments à passer à la fonction copy_data pour utiliser.
    En effet vous lui passé juste self et l'id.

    Il vous faut donc trouver un moyen pour lui passer (self, cr, uid , id) au minimum.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    J'ai eu une discussion sur ce topic au terme de laquelle il semblerait qu'il s'agisse d'un bug.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/05/2010, 20h08
  2. Réponses: 4
    Dernier message: 22/09/2008, 09h11
  3. Comment utiliser une fonction dans une fonction
    Par hatenaku dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2008, 20h00
  4. Comment utiliser une fonction dans une classe.
    Par metalamania dans le forum wxPython
    Réponses: 5
    Dernier message: 17/02/2008, 17h50
  5. comment utiliser une fonction sql en dotNet?
    Par bicho dans le forum Accès aux données
    Réponses: 6
    Dernier message: 19/03/2007, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo