FAQ Odoo / OpenERPConsultez toutes les FAQ
Nombre d'auteurs : 2, nombre de questions : 39, dernière mise à jour : 25 août 2014 Ajouter une question
Cette FAQ a été réalisée pour répondre aux questions concernant le progiciel de gestion intégré Odoo (anciennement OpenERP).
- Erreur: page blanche + No Handler found à l'ouverture d'OpenERP
- Page blanche sans message à l'ouverture d'OpenERP - ExpatError: XML or text declaration not at start of entity
- Access Denied : Sauvegarde base de données
- La société choisie n'est pas autorisée pour cet utilisateur
- AttributeError: 'NoneType' object has no attribute 'search'
- TypeError: The model "xxxxxxxxxxxx" specifies an unexisting parent class
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 :
Code python : | Sélectionner tout |
import mon_module
Si vous regardez alors le fichier de log* d'OpenERP vous pourrez voir ceci :
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | 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 - |
OpenERP fait plusieurs tentatives pour charger le module puis abandonne.
Ensuite on voit bien où il bloque :
Code : | Sélectionner tout |
1 2 | File "/opt/openerp/addons/mon_module/__init__.py", line 3, in <module> 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.
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 :
Code log : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 |
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 :
Code xml : | Sélectionner tout |
<?xml version="1.0" encoding="UTF-8"?>
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.
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/ . |
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 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. |
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 python : | Sélectionner tout |
user_ids = self.pool.get('res.user').search(cr, uid, [('id', '=', 1)], offset=0, limit=None, order=None, context=None, count=False)
Code python : | Sélectionner tout |
user_ids = self.pool.get('res.users').search(cr, uid, [('id', '=', 1)], offset=0, limit=None, order=None, context=None, count=False)
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.
Code python : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | class my_product(osv.osv): _name = 'product.product' _inherit = 'product.product' # # mon code ici # my_product() |
Code python : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # -*- 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, } |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes 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 © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.