Odoo - les échafaudages?
j'ai lu ici que vous pouvez scaffold un module en utilisant une commande, de sorte que vous n'aurez pas besoin de créer manuellement des fichiers initiaux. Mais une telle commande ne fonctionne pas sur master (sur Odoo development branch):
./oe scaffold Academy ../my-modules
Parce qu'il n'y a pas de tel fichier appelé oe
dans le répertoire openerp. Cette chose a-t-elle changé dans la nouvelle version? Comment puis-je scaffold un module à Odoo?
13 réponses
maintenant odoo 10 ou version ultérieure utilisez odoo-bin insted de odoo.py
sur le shell ou le terminal, changez le répertoire dans votre dossier odoo. C'est peut-être dans
/opt/odoo
, ou peut-être dans/home/odoo
:cd /opt/odoo
créer un nouveau module en utilisant le odoo.py script:
./odoo.py scaffold my_new_module ./addons/
(où my_new_module est un nom de votre nouveau module, et ./addons/ est le Odoo addons répertoire)
Modifier l' ./addons/my_new_module/__openerp__.py fichier.
nano ./addons/my_new_module/__openerp__.py
modifiez le champ Nom pour définir un nom convivial de votre module (par exemple "nouveau Module D'Andrius"). Changer la description et les champs aussi. Et ajoutez vos modules nécessaires,tels que 'mail', à la liste des dépendances de module dépend.
'depends': ['base', 'mail'],
modifier models.py
nano ./addons/my_new_module/models.py
ajouter du code dans votre my_new_module/models.py dossier, pour exemple:
from openerp import models, api
class FooterlessNotification(models.Model)
_inherit = 'mail.notification'
@api.model
def get_signature_footer(self, user_id, res_model=None, res_id=None, context=None, user_signature=True):
return ""
(à titre d'exemple, ce code va étendre le 'mail.notification ' et remplacer sa méthode get_signature_footer par une méthode qui renvoie un pied de page vide.)
- installez votre module via les paramètres Odoo.
pour le trouver, vous devrez peut-être utiliser l'option "Update Module List".
si vous ne trouvez pas non plus l'option "Mettre à jour la liste des modules", vous devrez peut-être activer les "caractéristiques techniques"." case à cocher dans les paramètres de votre utilisateur actuel.
pour afficher les Modules, pas seulement les Applications, supprimez la balise "Applications" du filtre de la boîte de recherche, en cliquant sur le petit "x" avant la balise.
Vous pouvez utiliser ./odoo-bin échafaudage nom_du_module /odoo/odoo-server/addons/
ou
./odoo-bin échafaudage nom_du_module /odoo/odoo-server/custom_addons/
Ici custom_addons est votre répertoire dans odoo-server/
cmd dans Odoo10:
./odoo-bin scaffold <module_name> <destination path where you want to create>
Utiliser odoo.py
au lieu de oe
:
./path/to/odoo/odoo.py scaffold my-module
à Partir de odoo documentation bonne façon de créer un module est la suivante:
odoo.py scaffold [name of module] [desired path of module]
je vous recommande aussi d'utiliser un chemin d'addons différent pour votre module et de ne pas utiliser odoo / addons, vous pouvez créer un nouveau répertoire où vous voulez et puis ajouter ce répertoire à la configuration d'odoo ou exécuter odoo avec cet addon de lancement
odoo.py --addons-path=[full path to your dir]
J'ai installé ODOO 9 dans AWS dans le répertoire / opt / odoo.
alors d'abord je change de répertoire:
cd /opt/odoo
puis à l'exécuter:
odoo.py scaffold modulename ./addons/
donne l'erreur suivante msg:
odoo.py command not found
la commande correcte qui fonctionne pour moi est:
sudo python odoo.py scaffold modulename ./addons/
J'espère que cela vous aidera.
une autre version
\###### begin ########
import sys
from openerp.cli import scaffold
sf = scaffold.Scaffold()
sf.run (sys.argv[1:])
\####### end #########
Enregistrer le script en haut de votre openerp
dossier. Puis exécutez avec:
$ python (your-script-name) --help
ou:
$ python (the-script-name) --init Academy --dest my-modules --model academy --controller academy --web --theme
avez-vous installé comme source ou paquet.
Pour la source que vous devez faire
./odoo.py scaffold [module_name] [where_to_put_it]
si, à partir de package que vous devez faire
odoo.py scaffold [module_name] [where_to_put_it]
[where_to_put_it] habituellement votre chemin d'addons, votre chemin d'addons peut varier en fonction de votre méthode d'installation.
Il n'est pas nécessaire de créer le module dans le dossier addons. Mais il est recommandé de le faire.Vous pouvez ajouter le nouveau chemin addons par
odoo.py --addons-path=[where_to_put_it]
pour la structure des modules référence et pour la construction d'un module.
dans certains cas, il est nécessaire de passer le fichier Odoo python à L'application Python pour l'exécuter.
python odoo.py scaffold modulename addons-path
je vous suggère pour la première étape de Git clone odoo. Créez un répertoire/dossier et vous Git clonez odoo sur votre répertoire / dossier. Après cette course, Python odoo.py test d'addons d'échafaudage123. Mettez ou module sur répertoire / dossiers addons pour être sûr, odoo peut être lu votre module.
Goto Terminal et saisissez la commande suivante:
cd path/to/your/odoo-version/
./odoo-bin scaffold new_module /path/to/your/odoo-version/addons
then goto /chemin/vers/votre/odoo-version/addons et de rafraîchissement, vous pouvez voir la "new_module" sera présent.
si vous utilisez odoo-10 ou 11 alors au lieu d'utiliser ./oe scaffold Academy ../my-modules
utilisation : ./odoo-bin scaffold new_module /path/to/your/odoo-version/addons
et si vous utilisez odoo8 c'est à dire openerp8 puis utilisez odoo.py scaffold <module name> <where to put it>
mais assurez-vous d'être à la bonne adresse dans le répertoire. Voir aussi tutoriel ici dans le lien : https://www.odoo.com/documentation/8.0/howtos/backend.html
--Merci
ABhay S
peut-être que ce code aiderait. Enregistrer en tant que moe.py
ou ce que vous vouliez.
from openerp.cli import scaffold
sf = scaffold.Scaffold()
#sf.run(["--help"])
sf.run (["--init","Academy","--model","academy","--controller","academy","--web","--theme"])
je suis encore nouveau dans la programmation Python. Si quelqu'un peut améliorer la façon d'envoyer des arguments à run()
fonction, ce serait génial.