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

FAQ Odoo / OpenERPConsultez toutes les FAQ

Nombre d'auteurs : 2, nombre de questions : 39, dernière mise à jour : 25 décembre 2014 

 
OuvrirSommaireDépannageMessages d'erreurs

Encore une erreur qu'on rencontre souvent sur le web.
Cela peut survenir au démarrage lorsqu'OpenERP tente de charger les modules et qu'un module est défectueux.

Par exemple, si dans votre module vous avez déclaré dans le fichier __init__.py :

__init__.py
Sélectionnez

import  mon_module

Et que vous n'avez pas créé le fichier mon_module.py qui doit se trouver à la racine du module.

Si vous regardez alors le fichier de log* d'OpenERP vous pourrez voir ceci :

openerp-server.log
Sélectionnez

File "/usr/lib/pymodules/python2.7/openerp/modules/module.py", line 133, in load_module
    mod = imp.load_module('openerp.addons.' + module_part, f, path, descr)
  File "/opt/openerp/addons/mon_module/__init__.py", line 3, in <module>
    import mon_module
RuntimeError: maximum recursion depth exceeded while calling a Python object


2013-05-19 23:25:08,735 27185 INFO ? openerp.service.wsgi_server: HTTP service (werkzeug) running on 0.0.0.0:8069
2013-05-19 23:25:08,735 27185 INFO ? openerp: OpenERP server is running, waiting for connections...
2013-05-19 23:25:16,743 27185 INFO ? werkzeug: 192.168.0.6 - - [19/May/2013 23:25:16] "GET / HTTP/1.1" 404 -
2013-05-19 23:25:16,791 27185 INFO ? werkzeug: 192.168.0.6 - - [19/May/2013 23:25:16] "GET /favicon.ico HTTP/1.1" 404 -
2013-05-19 23:25:16,842 27185 INFO ? werkzeug: 192.168.0.6 - - [19/May/2013 23:25:16] "GET /favicon.ico HTTP/1.1" 404 -

En fait, vous verrez plusieurs fois les quatre premières lignes :
OpenERP fait plusieurs tentatives pour charger le module puis abandonne.

Ensuite on voit bien où il bloque :

openerp-server.log
Sélectionnez
File "/opt/openerp/addons/mon_module/__init__.py", line 3, in <module>
    import mon_module

Il bloque en fait à import mon_module.
Il ne trouve pas le fichier mon_module.py .

Et OpenERP nous affiche finalement sa page d'erreur.
Mais ça peut être également une erreur dans un module Python ou un widget, un fichier JS, etc.
no handler found est un peu l'erreur 404 d'OpenERP.
Dans tous les cas, l'erreur sera inscrite dans le fichier de log.

Mis à jour le 25 novembre 2013  par Thierry Godin

Je vous livre cette astuce, car elle vient de me faire perdre une journée et demie. Le temps que j'ai passé pour trouver la panne.

Si quand vous ouvrez OpenERP (WebClient) et que vous voyez une page blanche sans aucun message d'erreur, plongez-vous vite dans le fichier de log du serveur. Vous devriez voir une erreur comme celle ci-dessous :

openerp-server.log
Sélectionnez
Traceback (most recent call last):
  File "/opt/openerp/web/addons/web/http.py", line 288, in dispatch
    r = method(self, **self.params)
  File "/opt/openerp/web/addons/web/controllers/main.py", line 631, in qweb
    content, checksum = concat_xml(files)
  File "/opt/openerp/web/addons/web/controllers/main.py", line 222, in concat_xml
    xml = ElementTree.parse(fp).getroot()
  File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 862, in parse
    tree.parse(source, parser)
  File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 586, in parse
    parser.feed(data)
  File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 1245, in feed
    self._parser.Parse(data, 0)
ExpatError: XML or text declaration not at start of entity: line 2, column 0

Vous voyez à la dernière ligne ExpatError: XML or text declaration not at start of entity: line 2, column 0

C'est ici que ça se corse. OpenERP ne peut pas s'afficher, car l'interpréteur XML a tenté de charger un fichier, mais celui-ci ne commence pas par la déclaration attendue :

 
Sélectionnez
<?xml version="1.0" encoding="UTF-8"?>

Dans mon cas, il s'agissait d'un fichier XML qui commençait par une ligne vide.

Le problème, c'est de trouver quel fichier commence par une ligne vide ou non conforme. Et ce n'est pas une mince affaire : il y a plus de deux mille fichiers XML dans OpenERP!

  • Commencez par sauvegarder tous les modules. C'est long et fastidieux, mais c'est indispensable.
  • Ensuite, supprimez les répertoires des modules un par un, redémarrez le serveur OpenERP à chaque fois et essayez d'afficher la page.
  • Dès qu'OpenERP s'affiche, vous pouvez en déduire que le module que vous venez de supprimer était en cause.

Une fois, le module défectueux détecté, étudiez chaque fichier XML du module pour trouver celui qui n'est pas valide.
Dès que vous l'avez trouvé, corrigez-le et redémarrez le serveur OpenERP pour vérifier que la page s'affiche correctement.
Rechargez ensuite les modules que vous aviez supprimés auparavant et redémarrez à nouveau le serveur OpenERP.

Mis à jour le 4 juin 2013  par Thierry Godin

Un message d'erreur que l'on trouve à profusion dans les forums et un peu partout sur le Web, mais malheureusement très peu de réponses probantes.

Lorsque vous tentez de sauvegarder une base de données, on vous demande le mot de passe de l'administrateur (Super Administrateur -> voir ici) puis vous cliquez sur le bouton Archiver.

Immanquablement un message d'erreur apparaît "AccessDenied".

Je le confirme, ce message apparaît si vous utilisez Internet Explorer (testé avec la version 10.0.9200.16576) et probablement d'autres versions plus anciennes.

En revanche, la sauvegarde fonctionne si vous utilisez Firefox (testé avec la version 20.0.1) ou Chrome (testé avec la Version 26.0.1410.64 m).

Donc, pensez à mettre à jour votre navigateur Web.

Dans le pire des cas, vous pouvez faire ces opérations de maintenance sur vos bases de données en utilisant un outil d'administration de bases de données PostgreSQL tel que PGadmin (Open Source) téléchargeable sur le site : http://www.pgadmin.org/Le site Officiel de PGadmin.

Mis à jour le 25 novembre 2013  par Thierry Godin

Ce message d'erreur apparaît lorsque vous créez un utilisateur et que vous lui assignez une société qui ne lui a pas été autorisée.

Cela se produit lorsque vous avez créé une nouvelle société, et que vous créez ensuite un nouvel utilisateur.
Dans ce cas, la société attribuée à l'utilisateur est la société par défaut d'OpenERP "Your Company".

Vous modifiez alors le champ Société dans le formulaire d'édition, sous le champ Connexion, de l'utilisateur pour lui assigner la société que vous aviez créée auparavant, mais quand vous cliquez sur le bouton Enregistrer, l'erreur ci-dessous apparaît:

ValidateError
Une erreur est apparue lors de la validation du/des champ(s) company_id,company_ids:
La société choisie n'est pas autorisée pour cet utilisateur.

Pour pouvoir valider le formulaire, il faut que la société que vous avez sélectionnée soit autorisée pour cet utilisateur.
Pour cela, suivez les étapes ci-dessous:

Autoriser la société pour un utilisateur
  • Allez dans Configuration puis Gestion utilisateurs.
  • Cliquez sur le nom de l'utilisateur à modifier.
  • Cliquez sur le bouton Modifier.
  • Cliquez sur l'onglet Droits d'accès.
  • Dans la rubrique Sociétés autorisées, sélectionnez la société désirée.
  • Sélectionnez alors la société dans le champ Société en haut du formulaire, sous le champ Connexion.
  • Cliquez sur le bouton Enregistrer.

L'utilisateur est maintenant autorisé pour la société que vous aviez créée auparavant.

Un utilisateur peut avoir plusieurs sociétés autorisées. Dans ce cas, vous devez cocher la case Multi-Société dans la rubrique Accessibilité du formulaire d'édition de l'utilisateur.

Mis à jour le 4 juin 2013  par Thierry Godin

C'est un message d'erreur que vous pourrez rencontrer lorsque vous coderez votre module en Python.

Ce message peut apparaître à la suite de nombreuses erreurs... mais le moins que l'on puisse dire, c'est qu'il n'est pas vraiment explicite.

Code erroné
Sélectionnez
user_ids = self.pool.get('res.user').search(cr, uid, [('id', '=', 1)], offset=0, limit=None, order=None, context=None,  count=False)

Ici, c'est facile, la table res.user n'existe pas dans OpenERP. Le nom de la table est res.users.

Code juste
Sélectionnez
user_ids = self.pool.get('res.users').search(cr, uid, [('id', '=', 1)], offset=0, limit=None, order=None, context=None,  count=False)

Attention, ce n'est pas toujours si simple, il faudra parfois une bonne dose de ténacité pour trouver l'erreur dans votre code.

Créé le 10 juillet 2013  par Thierry Godin

Un message d'erreur qui peut arriver lorsque vous créez un module et que vous faites appel à un autre module alors que vous ne l'aviez pas déclaré aparavant.

Par exemple:
Nous créons un module qui doit hériter du module product comme ceci.

class my_product
Sélectionnez
class my_product(osv.osv):
    _name = 'product.product'
    _inherit = 'product.product'
    
	#
    # mon code ici
    #

my_product()

Mais dans ce cas, nous devons le déclarer dans le tableau depends[] du fichier __openerp__.py comme ci-dessous :

__openerp__.py
Sélectionnez
# -*- coding: utf-8 -*-
{
    'name': 'My Beautiful Module',
    'version': '1.0.0',
    'category': 'Products',
    'sequence': 15,
    'author': 'My Pomme',
    'summary': 'My Module',
    'description': 'Description',
    
    # Ici !
    'depends': ["product"],   
    
    'data': [
        'my_view.xml',
    ],
    'js': [],
    'css': [],
    'qweb': [],
    'installable': True,
    'application': False,
    'auto_install': False,
}

Auquel cas, le message d'erreur apparaîtra.

Créé le 11 juillet 2013  par Thierry Godin
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.