diff --git a/Makefile b/Makefile index 530bf36..44dcce4 100644 --- a/Makefile +++ b/Makefile @@ -111,6 +111,10 @@ db_drop_db_template: db_restore_erplibre_base_db_test: ./script/db_restore.py --database test +.PHONY: db_restore_erplibre_base_db_test_module_test +db_restore_erplibre_base_db_test_module_test: db_restore_erplibre_base_db_test + ./script/addons/install_addons.sh test test + .PHONY: db_restore_erplibre_base_db_test2 db_restore_erplibre_base_db_test2: ./script/db_restore.py --database test2 diff --git a/doc/CODE_GENERATOR.base.md b/doc/CODE_GENERATOR.base.md index 6d10a83..95ea584 100644 --- a/doc/CODE_GENERATOR.base.md +++ b/doc/CODE_GENERATOR.base.md @@ -12,7 +12,19 @@ Never run this on production environment, this create circular dependencies and will cause frustration to clean damage. -Ne jamais exécuter le générateur de code dans un environnement de production, il y a création de dépendance circulaire pouvant causer de la frustration à nettoyer tous les dommages. +Ne jamais exécuter le générateur de code dans un environnement de production, il y a création de dépendance circulaire pouvant causer de la frustration à nettoyer tous les dommages. D'ailleurs, il est nécessaire d'exécuter en mode développement, avec l'argument `--dev all`. + +L'objectif du générateur de code est de : +- utilisation du générateur via l'interface web; +- créer un nouveau module; +- modifier un module existant; +- exécuter les tests. + +Ce générateur de code, pour ERPLibre, a tout avantage d'être sous licence AGPLv3 et nécessite d'être dans une communauté active de logiciels libres puisqu'il sera plus efficace d'accéder à du code pour l'auto-apprentissage. Le libre permet : +- (Utiliser) L'utilisation de module sans restriction; +- (Copier) Copier des modules pour faciliter leur maintenance et leur pérennité; +- (Étudier) De comprendre le comportement des fonctionnalités; +- (Modifier) Modifier un module existant pour l'améliorer et pouvoir le redistribuer à la communauté; ``` @@ -29,9 +41,9 @@ Modules Il y a 3 types de module dans le contexte du générateur de code : -1. [A Template generates a Template or a Code_Generator.](#crer-votre-premier-code_generator) -2. Un Code_Generator génère un module. -3. Un Template lis un module pour générer un Code_Generator. +1. [A Template generates a Template or a Code_Generator.](#crer-votre-premier-code_generator), le chef d'orchestre qui permet de gérer plusieurs générateur de code. +2. Un Code_Generator génère un module, c'est un moule à module généré. +3. Un Template lit un module pour générer un Code_Generator. Warning, be careful to your code, always commit after a manipulation, because the mode enable_sync_code erase data, only the git will save you! @@ -39,28 +51,6 @@ Warning, be careful to your code, always commit after a manipulation, because th Attention pour ne pas écraser votre code, toujours commiter après une manipulation, l'utilisation du mode enable_sync_code peut effacer des données. Seul git vous sauvera! - -TODO -Il y a 4 objectifs sur le générateur : -+ utilisation du générateur via l'interface web -+ créer un nouveau module, -+ modifier un module existant -+ exécuter les tests. - -test : -- code generator -- code generator extra (externe au repo template) -- template -- création d'un nouveau module direct ou chaine complète - - tester chaque étape de la création -- i18n (définir les différents cas) - -Suggestion de réduire les config avec make config_ pour les tests. - -TODO expliquer les modules/fonctionnalités actuellements supportés. portail WIP, snippet website WIP, cron, web vue tree+form, geoengine WIP, theme website, hook, db_servers WIP, exportation de donnée en module -TODO expliquer objectif des 4 libertés -TODO rechanger les termes pour : orcherstre + moule + module - ## Manual generator with web interface @@ -105,6 +95,477 @@ Ouvrir le navigateur sur [http://localhost:8069](http://localhost:8069). Utilisa Ouvrir l'application `Code Generator` et créer un `Module`. Remplir les champs requis et générer avec `Action/Generate code`. + +### Create model-view module + + +### Créer un module modèle avec vue + + +```bash +make addons_install_code_generator_basic +make run_code_generator +``` + + +TODO + + +Pour des références techniques, voir module : +- code_generator_template_demo_portal +- code_generator_demo_portal +- code_generator_demo_internal +- demo_portal +- demo_internal + + +TODO + + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Technical Data», activer «Application». +- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder. +- Appuyer sur le bouton «Views» + - Appuyer «Generate» + +Générer le module avec «Action/Générer code». + +Tester sur : + +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + + +### Create portal module + + +### Créer un module avec la vue portail + + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_portal +make run_code_generator +``` + + +TODO + + +Pour des références techniques, voir module : +- code_generator_template_demo_portal +- code_generator_demo_portal +- code_generator_demo_internal +- demo_portal +- demo_internal + + +TODO + + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Technical Data», activer «Application». +- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder. +- Appuyer sur le bouton «Views» + - Désactiver «Enable all feature» + - Dans l'onglet «Portal» + - Activer «Enable portal feature» + - Appuyer «Generate» + +Générer le module avec «Action/Générer code». + +Tester sur : + +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + + +TODO + + +Ajouter des données dans votre nouveau module «test». + +Aller sur le portail pour visualiser les données, à l'adresse `/my`. + + +### Create hook module for installation + + +### Créer un module crochet pour l'installation + + +TODO + + +Le crochet nommé «hook» permet d'exécuter du code en +- Pré-initialisation du module +- Post-initialisation du module +- Désinstallation du module + +Pour des références techniques, voir module : +- code_generator_demo + + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_hook +make run_code_generator +``` + + +TODO + + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Hook» + - Activer «Show post_init_hook» + - Ajouter le code suivant dans la fenêtre qui est apparu : + + +```python +with api.Environment.manage(): + env = api.Environment(cr, SUPERUSER_ID, {}) + print("Hello World") +``` + + +TODO + + +Générer le module avec «Action/Générer code». + +Tester et chercher dans la console "Hello World" : + +```bash +make db_restore_erplibre_base_db_test_module_test +``` + + +### Create cron module + + +### Créer un module d'exécution de code sur une plage horaire + + +TODO + + +Permettre d'exécuter du code basé sur des séquences de temps ou des moments spécifiques à répétition. + +Pour des références techniques, voir module : +- code_generator_template_demo_sysadmin_cron +- code_generator_auto_backup +- auto_backup + + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_cron +make run_code_generator +``` + + +TODO + + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Cron» + - Ajouter un cron + - Choisir le «Modèle» : «Contact» + - Choisir unité de temps en «Minutes» dans «Exécuter tous les» + - Modifier «Nombre d'appel» à -1 pour exécution sans arrêt. + - Activer «Force nextcall» pour permettre que l'interval soit basé sur le moment d'installation du module + - Ajouter le code : + + +```python +log("Coucou") +``` + + +TODO + + +Générer le module avec «Action/Générer code». + +Tester : + +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + + +TODO + + +Avec les outils développeur, aller regarder les logs dans l'application «Configuration»/Technique/«Structure de base de donnée»/Historisation. Des informations dans le temps apparaîtront avec le mot «Coucou». + + +### Create website snippet module + + +### Créer un module de snippet pour le site web + + +In progress + + +En progression, non terminé + + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_website_snippet +make run_code_generator +``` + + +TODO + + +Pour des références techniques, voir module : +- code_generator_template_demo_website_snippet +- code_generator_demo_website_snippet +- demo_website_snippet + +Puis dans le repo addons/ERPLibre_erplibre_theme_addons, branche code_generator_erplibre_website_snippets +- code_generator_erplibre_website_snippets + + +TODO + + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» + +TODO Incomplet + + +### Create geoengine with Leaflet module + + +### Créer un module de gestion de coordonnée géospatial avec Leaflet + + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_website_leaflet +make run_code_generator +``` + + +TODO + + +Pour des références techniques, voir module : +- code_generator_demo_website_leaflet +- demo_website_leaflet + + +TODO + + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Technical Data» + - Activer «Application» + - Ajouter la dépendance du geo_engine «Geospatial support for System» +- Sur l'onglet «Elements»/«Models» + - Ajouter un modèle «test» + - Ajouter un champs de type «geo_». Le «geo_point» fonctionne bien. Si vous ajoutez plusieurs géométrie, tel que «geo_point», «geo_line» et «geo_polygon», il faut ajouter le champs «type» avec les valeurs du nom des champs choisis en option de sélection, exemple `[('geo_point', 'Geo Point'),('geo_polygon', 'Geo Polygon')]` + - Ajouter le champs optionnel «html_text» de type «html» pour pouvoir afficher du texte dessus. +- Appuyer sur le bouton «Controllers» + - Ajouter le modèle du module actuel, «test» + - Appuyer «Generate» +- Appuyer sur le bouton «Views» + - Désactiver «Enable all feature» + - Dans l'onglet «Website» + - Activer «Enable website leaflet feature» + - Activer «Enable geoengine feature» + - Appuyer «Generate» + +Générer le module avec «Action/Générer code». + +Tester sur : + +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + + +TODO + + +Ajouter les permissions d'utilisation, dans l'application «Configuration», «Gérer les droits d'accès». Sur votre utilisateur, ajouter «Geoengine Admin». + +Aller sur l'application «test», créer un «geo_point». + +Aller sur la page du site web, ajouter le snippet «Leaflet». Chercher le point qui a été ajouté sur la carte du monde. + + +### Create theme module for website + + +### Créer un module thème pour site web + + +TODO + + +Pour des références techniques, voir module : +- code_generator_demo_theme_website + + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_theme_website +make run_code_generator +``` + +TODO + + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Technical Data», activer «Website theme». +- Appuyer sur le bouton «Views» + - Aller à l'onglet «theme_website» + - Mettre les couleurs désirés + - Appuyer «Generate» + +Générer le module avec «Action/Générer code». + +Ce module doit être installé manuellement pour l'instant. + + +```bash +make db_restore_erplibre_base_db_test +./script/addons/install_addons.sh test website +make run_test +``` + + +TODO + + +Aller dans l'interface web, Application «Configuration», «Paramètres Généraux»/«Site Web»/«Choisissez un thème». Installer le thème «TEST». Puis aller la page du site web, les couleurs sont dans «Personnaliser»/«Personnaliser le thème». + + +### Extract data to module + + +### Extraire les données vers un module + + +TODO + + +L'exemple est avec le helpdesk. Installer le module helpdesk_mgmt : + +Pour des références techniques, voir module : +- code_generator_demo_export_helpdesk +- code_generator_demo_export_website +- demo_website_data +- demo_helpdesk_data + + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator helpdesk_mgmt +make run_code_generator +``` + +TODO + + +Créer un ticket dans l'application «Helpdesk» dans l'interface web. + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Technical Data», activer «Only export data». +- Appuyer sur le bouton «Models» + - Choisissez dans «Models» : + - «helpdesk.ticket» + - Activer «Clear field blacklisted» + - Enlever les éléments suivant de «Fields» : + - name + - description + - number + - Appuyer «Generate» + +Générer le module avec «Action/Générer code». + +```bash +make db_restore_erplibre_base_db_test_module_test +``` + + +### Migrate external database into module of migration + + +### Migrer une base de donnée externe en module de migration + + +TODO + + +En progression. + +Pour des références techniques, voir module : +- ?? + + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_db_servers +make run_code_generator +``` + +TODO + + +Aller dans le module «Code generator», menu «Databases»/«Databases» et créer un connecteur vers une base de donnée. + +À compléter... + + +### Migrate from website to model with PDF data + + +### Migrer d'un site web vers un modèle de donnée avec des données format PDF + + +TODO + + +En progression, ce n'est pas encore supporté via l'interface web. + +Cette technique permet d'aller lire du Javascript sur un site web pour lire ensuite le HTML, c'est à dire la vue, et en comprendre l'information pour créer un modèle. + +Pour des références techniques, voir module : +- code_generator_demo_converter_js +- business_plan_import_pdf + +Attention, il faut mettre à jour les variables, dans les fichiers hook.py qui permettront d'extraire des données sur le site web à copier. Aucun exemple public n'est accessible pour le moment. + + +```bash +make db_restore_erplibre_base_db_code_generator +./script/addons/install_addons_dev.sh code_generator code_generator_demo_converter_js +make db_restore_erplibre_base_db_test +./script/addons/install_addons_dev.sh test business_plan_import_pdf +``` + ## Prepare a DB @@ -123,18 +584,25 @@ make db_restore_erplibre_base_db_code_generator ``` -## Test code generator +TODO -## Tester le générateur de code +Pour de meilleur performance d'exécution, réduire la quantité de «repo addons» permet d'accélérer l'installation, exécuter : + + +```bash +make config_gen_code_generator +``` TODO -Tester la génération des modules internes du générateur, créant les démos à partir de leur générateur respectif. +Pour revenir à la configuration normal, en production, exécuter : + + ```bash -make test_code_generator_generation +make config_gen_all ``` @@ -207,7 +675,7 @@ make addons_install_code_generator_demo Name your module begin with `MODULE_NAME = "code_generator_"` -Nommé votre module qui débute par `MODULE_NAME = "code_generator_"` +Au besoin, renommé votre module qui débute par `MODULE_NAME = "code_generator_"` Continue the example, you generated the template `code_generator_template_demo_website_snippet`, this will overwrite `code_generator_demo_website_snippet`: @@ -293,6 +761,7 @@ Générer votre module : ```bash +make db_restore_erplibre_base_db_code_generator ./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_snippet ``` @@ -306,7 +775,7 @@ Maintenant, vous pouvez le tester! Pour info, on ne peut pas installer un module -Il est maintenant possible de modifier les paramètres via l'interface manuelle pour ce module, puis le regénérer en effaçant la BD. Ajouter un modèle. +Il est maintenant possible de modifier les paramètres via l'interface manuelle pour ce module, puis le regénérer en effaçant la BD. Ajouter un modèle et une vue. ```bash @@ -319,19 +788,25 @@ make db_restore_erplibre_base_db_code_generator Faire la boucle d'amélioration, commiter le code pour avoir une traçabilité des changements. -Ensuite, modifier la valeur `enable_sync_template` à `True` dans le fichier template, de l'exemple `code_generator_template_demo_website_snippet`. +Ensuite, modifier la valeur `enable_sync_template` à `True`, `enable_template_wizard_view` à `True`, `template_model_name` avec un modèle existant, dans le fichier template, de l'exemple `code_generator_template_demo_website_snippet`. ```python value["enable_sync_template"] = True +value["enable_template_wizard_view"] = True +value["template_model_name"] = "test;test2" ``` +TODO Exécuter l'installation du template pour qu'il se synchronise sur le module généré. + + ```bash make db_restore_erplibre_base_db_template +./script/addons/install_addons_dev.sh template demo_website_snippet ./script/addons/install_addons_dev.sh template code_generator_template_demo_website_snippet ``` @@ -419,6 +894,15 @@ TODO Une bonne manière de tester un générateur de code est de valider qu'il génère le même code, il ne devient pas nécessaire de tester les fonctionnalités, puisque le comportement est la génération. + +```bash +make test +``` + + +TODO + + Tester les générations simples : diff --git a/doc/CODE_GENERATOR.fr.md b/doc/CODE_GENERATOR.fr.md index 695d82d..c7d9a03 100644 --- a/doc/CODE_GENERATOR.fr.md +++ b/doc/CODE_GENERATOR.fr.md @@ -1,6 +1,18 @@ # Comment générer du code -Ne jamais exécuter le générateur de code dans un environnement de production, il y a création de dépendance circulaire pouvant causer de la frustration à nettoyer tous les dommages. +Ne jamais exécuter le générateur de code dans un environnement de production, il y a création de dépendance circulaire pouvant causer de la frustration à nettoyer tous les dommages. D'ailleurs, il est nécessaire d'exécuter en mode développement, avec l'argument `--dev all`. + +L'objectif du générateur de code est de : +- utilisation du générateur via l'interface web; +- créer un nouveau module; +- modifier un module existant; +- exécuter les tests. + +Ce générateur de code, pour ERPLibre, a tout avantage d'être sous licence AGPLv3 et nécessite d'être dans une communauté active de logiciels libres puisqu'il sera plus efficace d'accéder à du code pour l'auto-apprentissage. Le libre permet : +- (Utiliser) L'utilisation de module sans restriction; +- (Copier) Copier des modules pour faciliter leur maintenance et leur pérennité; +- (Étudier) De comprendre le comportement des fonctionnalités; +- (Modifier) Modifier un module existant pour l'améliorer et pouvoir le redistribuer à la communauté; ``` Modules @@ -10,9 +22,9 @@ Modules ``` Il y a 3 types de module dans le contexte du générateur de code : -1. [A Template generates a Template or a Code_Generator.](#crer-votre-premier-code_generator) -2. Un Code_Generator génère un module. -3. Un Template lis un module pour générer un Code_Generator. +1. [A Template generates a Template or a Code_Generator.](#crer-votre-premier-code_generator), le chef d'orchestre qui permet de gérer plusieurs générateur de code. +2. Un Code_Generator génère un module, c'est un moule à module généré. +3. Un Template lit un module pour générer un Code_Generator. Attention pour ne pas écraser votre code, toujours commiter après une manipulation, l'utilisation du mode enable_sync_code peut effacer des données. Seul git vous sauvera! @@ -44,6 +56,314 @@ Ouvrir le navigateur sur [http://localhost:8069](http://localhost:8069). Utilisa Ouvrir l'application `Code Generator` et créer un `Module`. Remplir les champs requis et générer avec `Action/Generate code`. +### Créer un module modèle avec vue + +```bash +make addons_install_code_generator_basic +make run_code_generator +``` + +Pour des références techniques, voir module : +- code_generator_template_demo_portal +- code_generator_demo_portal +- code_generator_demo_internal +- demo_portal +- demo_internal + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Technical Data», activer «Application». +- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder. +- Appuyer sur le bouton «Views» + - Appuyer «Generate» + +Générer le module avec «Action/Générer code». + +Tester sur : +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + +### Créer un module avec la vue portail + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_portal +make run_code_generator +``` + +Pour des références techniques, voir module : +- code_generator_template_demo_portal +- code_generator_demo_portal +- code_generator_demo_internal +- demo_portal +- demo_internal + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Technical Data», activer «Application». +- Sur l'onglet «Elements»/«Models», ajouter un modèle et sauvegarder. +- Appuyer sur le bouton «Views» + - Désactiver «Enable all feature» + - Dans l'onglet «Portal» + - Activer «Enable portal feature» + - Appuyer «Generate» + +Générer le module avec «Action/Générer code». + +Tester sur : +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + +Ajouter des données dans votre nouveau module «test». + +Aller sur le portail pour visualiser les données, à l'adresse `/my`. + +### Créer un module crochet pour l'installation + +Le crochet nommé «hook» permet d'exécuter du code en +- Pré-initialisation du module +- Post-initialisation du module +- Désinstallation du module + +Pour des références techniques, voir module : +- code_generator_demo + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_hook +make run_code_generator +``` + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Hook» + - Activer «Show post_init_hook» + - Ajouter le code suivant dans la fenêtre qui est apparu : + +```python +with api.Environment.manage(): + env = api.Environment(cr, SUPERUSER_ID, {}) + print("Hello World") +``` + +Générer le module avec «Action/Générer code». + +Tester et chercher dans la console "Hello World" : +```bash +make db_restore_erplibre_base_db_test_module_test +``` + +### Créer un module d'exécution de code sur une plage horaire + +Permettre d'exécuter du code basé sur des séquences de temps ou des moments spécifiques à répétition. + +Pour des références techniques, voir module : +- code_generator_template_demo_sysadmin_cron +- code_generator_auto_backup +- auto_backup + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_cron +make run_code_generator +``` + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Cron» + - Ajouter un cron + - Choisir le «Modèle» : «Contact» + - Choisir unité de temps en «Minutes» dans «Exécuter tous les» + - Modifier «Nombre d'appel» à -1 pour exécution sans arrêt. + - Activer «Force nextcall» pour permettre que l'interval soit basé sur le moment d'installation du module + - Ajouter le code : + +```python +log("Coucou") +``` + +Générer le module avec «Action/Générer code». + +Tester : +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + +Avec les outils développeur, aller regarder les logs dans l'application «Configuration»/Technique/«Structure de base de donnée»/Historisation. Des informations dans le temps apparaîtront avec le mot «Coucou». + +### Créer un module de snippet pour le site web + +En progression, non terminé + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_website_snippet +make run_code_generator +``` + +Pour des références techniques, voir module : +- code_generator_template_demo_website_snippet +- code_generator_demo_website_snippet +- demo_website_snippet + +Puis dans le repo addons/ERPLibre_erplibre_theme_addons, branche code_generator_erplibre_website_snippets +- code_generator_erplibre_website_snippets + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» + +TODO Incomplet + +### Créer un module de gestion de coordonnée géospatial avec Leaflet + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_website_leaflet +make run_code_generator +``` + +Pour des références techniques, voir module : +- code_generator_demo_website_leaflet +- demo_website_leaflet + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Technical Data» + - Activer «Application» + - Ajouter la dépendance du geo_engine «Geospatial support for System» +- Sur l'onglet «Elements»/«Models» + - Ajouter un modèle «test» + - Ajouter un champs de type «geo_». Le «geo_point» fonctionne bien. Si vous ajoutez plusieurs géométrie, tel que «geo_point», «geo_line» et «geo_polygon», il faut ajouter le champs «type» avec les valeurs du nom des champs choisis en option de sélection, exemple `[('geo_point', 'Geo Point'),('geo_polygon', 'Geo Polygon')]` + - Ajouter le champs optionnel «html_text» de type «html» pour pouvoir afficher du texte dessus. +- Appuyer sur le bouton «Controllers» + - Ajouter le modèle du module actuel, «test» + - Appuyer «Generate» +- Appuyer sur le bouton «Views» + - Désactiver «Enable all feature» + - Dans l'onglet «Website» + - Activer «Enable website leaflet feature» + - Activer «Enable geoengine feature» + - Appuyer «Generate» + +Générer le module avec «Action/Générer code». + +Tester sur : +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + +Ajouter les permissions d'utilisation, dans l'application «Configuration», «Gérer les droits d'accès». Sur votre utilisateur, ajouter «Geoengine Admin». + +Aller sur l'application «test», créer un «geo_point». + +Aller sur la page du site web, ajouter le snippet «Leaflet». Chercher le point qui a été ajouté sur la carte du monde. + +### Créer un module thème pour site web + +Pour des références techniques, voir module : +- code_generator_demo_theme_website + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_theme_website +make run_code_generator +``` +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Technical Data», activer «Website theme». +- Appuyer sur le bouton «Views» + - Aller à l'onglet «theme_website» + - Mettre les couleurs désirés + - Appuyer «Generate» + +Générer le module avec «Action/Générer code». + +Ce module doit être installé manuellement pour l'instant. + +```bash +make db_restore_erplibre_base_db_test +./script/addons/install_addons.sh test website +make run_test +``` + +Aller dans l'interface web, Application «Configuration», «Paramètres Généraux»/«Site Web»/«Choisissez un thème». Installer le thème «TEST». Puis aller la page du site web, les couleurs sont dans «Personnaliser»/«Personnaliser le thème». + +### Extraire les données vers un module + +L'exemple est avec le helpdesk. Installer le module helpdesk_mgmt : + +Pour des références techniques, voir module : +- code_generator_demo_export_helpdesk +- code_generator_demo_export_website +- demo_website_data +- demo_helpdesk_data + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator helpdesk_mgmt +make run_code_generator +``` +Créer un ticket dans l'application «Helpdesk» dans l'interface web. + +Aller dans le module «Code generator» et créer un module «test». +- Sur l'onglet «Information», activer «Enable Sync Code» +- Sur l'onglet «Technical Data», activer «Only export data». +- Appuyer sur le bouton «Models» + - Choisissez dans «Models» : + - «helpdesk.ticket» + - Activer «Clear field blacklisted» + - Enlever les éléments suivant de «Fields» : + - name + - description + - number + - Appuyer «Generate» + +Générer le module avec «Action/Générer code». +```bash +make db_restore_erplibre_base_db_test_module_test +``` + +### Migrer une base de donnée externe en module de migration + +En progression. + +Pour des références techniques, voir module : +- ?? + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_db_servers +make run_code_generator +``` +Aller dans le module «Code generator», menu «Databases»/«Databases» et créer un connecteur vers une base de donnée. + +À compléter... + +### Migrer d'un site web vers un modèle de donnée avec des données format PDF + +En progression, ce n'est pas encore supporté via l'interface web. + +Cette technique permet d'aller lire du Javascript sur un site web pour lire ensuite le HTML, c'est à dire la vue, et en comprendre l'information pour créer un modèle. + +Pour des références techniques, voir module : +- code_generator_demo_converter_js +- business_plan_import_pdf + +Attention, il faut mettre à jour les variables, dans les fichiers hook.py qui permettront d'extraire des données sur le site web à copier. Aucun exemple public n'est accessible pour le moment. + +```bash +make db_restore_erplibre_base_db_code_generator +./script/addons/install_addons_dev.sh code_generator code_generator_demo_converter_js +make db_restore_erplibre_base_db_test +./script/addons/install_addons_dev.sh test business_plan_import_pdf +``` + ## Préparer une BD Ceci va détruire et créer une base de donnée nommé `code_generator`. @@ -52,11 +372,16 @@ Ceci va détruire et créer une base de donnée nommé `code_generator`. make db_restore_erplibre_base_db_code_generator ``` -## Tester le générateur de code +Pour de meilleur performance d'exécution, réduire la quantité de «repo addons» permet d'accélérer l'installation, exécuter : -Tester la génération des modules internes du générateur, créant les démos à partir de leur générateur respectif. ```bash -make test_code_generator_generation +make config_gen_code_generator +``` + +Pour revenir à la configuration normal, en production, exécuter : + +```bash +make config_gen_all ``` ## Créer votre premier `Code_Generator` @@ -91,13 +416,13 @@ make addons_install_code_generator_demo ### Générer un Code_Generator (suite de template) -Nommé votre module qui débute par `MODULE_NAME = "code_generator_"` +Au besoin, renommé votre module qui débute par `MODULE_NAME = "code_generator_"` Pour continuer avec l'exemple, généré le template `code_generator_template_demo_website_snippet`, ceci va écraser `code_generator_demo_website_snippet`: ```bash make db_restore_erplibre_base_db_template -./script/addons/install_addons.sh template code_generator_template_demo_website_snippet +./script/addons/install_addons_dev.sh template code_generator_template_demo_website_snippet ``` Aller à la section [Créer votre premier module](#crer-votre-premier-module) @@ -115,7 +440,7 @@ value["enable_template_code_generator_demo"] = False Pour continuer avec l'exemple, généré le template `code_generator_template_demo_website_snippet`, ceci va écraser `code_generator_demo_website_snippet`: ```bash -./script/addons/install_addons.sh code_generator code_generator_template_demo_website_snippet +./script/addons/install_addons_dev.sh code_generator code_generator_template_demo_website_snippet ``` ## Créer votre premier module @@ -135,30 +460,35 @@ lst_depend = [ Générer votre module : ```bash -./script/addons/install_addons.sh code_generator code_generator_demo_website_snippet +make db_restore_erplibre_base_db_code_generator +./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_snippet ``` Maintenant, vous pouvez le tester! Pour info, on ne peut pas installer un module généré avec son générateur de code associé, puisqu'il y a une duplication des modèles! -Il est maintenant possible de modifier les paramètres via l'interface manuelle pour ce module, puis le regénérer en effaçant la BD. Ajouter un modèle. +Il est maintenant possible de modifier les paramètres via l'interface manuelle pour ce module, puis le regénérer en effaçant la BD. Ajouter un modèle et une vue. ```bash make db_restore_erplibre_base_db_code_generator -./script/addons/install_addons.sh code_generator code_generator_demo_website_snippet +./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_snippet ``` Faire la boucle d'amélioration, commiter le code pour avoir une traçabilité des changements. -Ensuite, modifier la valeur `enable_sync_template` à `True` dans le fichier template, de l'exemple `code_generator_template_demo_website_snippet`. +Ensuite, modifier la valeur `enable_sync_template` à `True`, `enable_template_wizard_view` à `True`, `template_model_name` avec un modèle existant, dans le fichier template, de l'exemple `code_generator_template_demo_website_snippet`. ```python value["enable_sync_template"] = True +value["enable_template_wizard_view"] = True +value["template_model_name"] = "test;test2" ``` Exécuter l'installation du template pour qu'il se synchronise sur le module généré. + ```bash make db_restore_erplibre_base_db_template -./script/addons/install_addons.sh template code_generator_template_demo_website_snippet +./script/addons/install_addons_dev.sh template demo_website_snippet +./script/addons/install_addons_dev.sh template code_generator_template_demo_website_snippet ``` Prêt à tester, générer le module : @@ -166,7 +496,7 @@ Prêt à tester, générer le module : ```bash # Optional, reset test database make db_restore_erplibre_base_db_test -./script/addons/install_addons.sh test demo_website_snippet +./script/addons/install_addons_dev.sh test demo_website_snippet ``` # Comment générer les traductions i18n @@ -182,8 +512,8 @@ Premièrement, installer le module, par exemple `demo_portal`, et ensuite le tem ```bash make db_restore_erplibre_base_db_code_generator -./script/addons/install_addons.sh test demo_portal -./script/addons/install_addons.sh test code_generator_template_demo_portal +./script/addons/install_addons_dev.sh test demo_portal +./script/addons/install_addons_dev.sh test code_generator_template_demo_portal ``` # Synchroniser les champs du `Code_Generator` du module @@ -196,14 +526,18 @@ Exemple : ```bash make db_restore_erplibre_base_db_code_generator -./script/addons/install_addons.sh test demo_portal -./script/addons/install_addons.sh test code_generator_template_demo_portal +./script/addons/install_addons_dev.sh test demo_portal +./script/addons/install_addons_dev.sh test code_generator_template_demo_portal ``` # Tester le générateur de code Une bonne manière de tester un générateur de code est de valider qu'il génère le même code, il ne devient pas nécessaire de tester les fonctionnalités, puisque le comportement est la génération. +```bash +make test +``` + Tester les générations simples : ```bash diff --git a/doc/CODE_GENERATOR.md b/doc/CODE_GENERATOR.md index f6c22c7..6f5dc4c 100644 --- a/doc/CODE_GENERATOR.md +++ b/doc/CODE_GENERATOR.md @@ -38,6 +38,179 @@ Ouvrir le navigateur sur [http://localhost:8069](http://localhost:8069). Utilisa Ouvrir l'application `Code Generator` et créer un `Module`. Remplir les champs requis et générer avec `Action/Generate code`. +### Create model-view module + +```bash +make addons_install_code_generator_basic +make run_code_generator +``` + +TODO + +TODO + +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + +### Create portal module + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_portal +make run_code_generator +``` + +TODO + +TODO + +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + +TODO + +### Create hook module for installation + +TODO + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_hook +make run_code_generator +``` + +TODO + +```python +with api.Environment.manage(): + env = api.Environment(cr, SUPERUSER_ID, {}) + print("Hello World") +``` + +TODO + +```bash +make db_restore_erplibre_base_db_test_module_test +``` + +### Create cron module + +TODO + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_cron +make run_code_generator +``` + +TODO + +```python +log("Coucou") +``` + +TODO + +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + +TODO + +### Create website snippet module + +In progress + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_website_snippet +make run_code_generator +``` + +TODO + +TODO + +### Create geoengine with Leaflet module + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_website_leaflet +make run_code_generator +``` + +TODO + +TODO + +```bash +make db_restore_erplibre_base_db_test_module_test +make run_test +``` + +TODO + +### Create theme module for website + +TODO + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_theme_website +make run_code_generator +``` +TODO + +```bash +make db_restore_erplibre_base_db_test +./script/addons/install_addons.sh test website +make run_test +``` + +TODO + +### Extract data to module + +TODO + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator helpdesk_mgmt +make run_code_generator +``` +TODO + +```bash +make db_restore_erplibre_base_db_test_module_test +``` + +### Migrate external database into module of migration + +TODO + +```bash +make addons_install_code_generator_basic +./script/addons/install_addons.sh code_generator code_generator_db_servers +make run_code_generator +``` +TODO + +### Migrate from website to model with PDF data + +TODO + +```bash +make db_restore_erplibre_base_db_code_generator +./script/addons/install_addons_dev.sh code_generator code_generator_demo_converter_js +make db_restore_erplibre_base_db_test +./script/addons/install_addons_dev.sh test business_plan_import_pdf +``` + ## Prepare a DB This will destroy and create database named `code_generator`. @@ -46,10 +219,18 @@ This will destroy and create database named `code_generator`. make db_restore_erplibre_base_db_code_generator ``` -## Test code generator +TODO + +```bash +make config_gen_code_generator +``` TODO +```bash +make config_gen_all +``` + ## Create your first `Code_Generator` Edit [Code Generator Demo](./../addons/TechnoLibre_odoo-code-generator/code_generator_demo/hooks.py) and update `# TODO HUMAN:` @@ -90,7 +271,7 @@ Continue the example, you generated the template `code_generator_template_demo_w ```bash make db_restore_erplibre_base_db_template -./script/addons/install_addons.sh template code_generator_template_demo_website_snippet +./script/addons/install_addons_dev.sh template code_generator_template_demo_website_snippet ``` Go to section [Create your first module](#create-your-first-module) @@ -108,7 +289,7 @@ value["enable_template_code_generator_demo"] = False Continue the example, you generated the template `code_generator_template_demo_website_snippet`, this will overwrite `code_generator_demo_website_snippet`: ```bash -./script/addons/install_addons.sh code_generator code_generator_template_demo_website_snippet +./script/addons/install_addons_dev.sh code_generator code_generator_template_demo_website_snippet ``` ## Create your first Module @@ -128,7 +309,8 @@ lst_depend = [ Generate your module: ```bash -./script/addons/install_addons.sh code_generator code_generator_demo_website_snippet +make db_restore_erplibre_base_db_code_generator +./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_snippet ``` Now, you can test it! Note, you cannot install a generated module with is code_generator associated, because duplicated @@ -137,21 +319,30 @@ models! ```bash make db_restore_erplibre_base_db_code_generator -./script/addons/install_addons.sh code_generator code_generator_demo_website_snippet +./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_snippet ``` ```python value["enable_sync_template"] = True +value["enable_template_wizard_view"] = True +value["template_model_name"] = "test;test2" ``` +TODO + +```bash +make db_restore_erplibre_base_db_template +./script/addons/install_addons_dev.sh template demo_website_snippet +./script/addons/install_addons_dev.sh template code_generator_template_demo_website_snippet +``` Ready to test, generate your module: ```bash # Optional, reset test database make db_restore_erplibre_base_db_test -./script/addons/install_addons.sh test demo_website_snippet +./script/addons/install_addons_dev.sh test demo_website_snippet ``` # How to generate i18n translation @@ -167,8 +358,8 @@ First, install the module, example `demo_portal`, and after the template, exampl ```bash make db_restore_erplibre_base_db_code_generator -./script/addons/install_addons.sh test demo_portal -./script/addons/install_addons.sh test code_generator_template_demo_portal +./script/addons/install_addons_dev.sh test demo_portal +./script/addons/install_addons_dev.sh test code_generator_template_demo_portal ``` # Sync Code_Generator fields from Module @@ -182,14 +373,20 @@ Example: ```bash make db_restore_erplibre_base_db_code_generator -./script/addons/install_addons.sh test demo_portal -./script/addons/install_addons.sh test code_generator_template_demo_portal +./script/addons/install_addons_dev.sh test demo_portal +./script/addons/install_addons_dev.sh test code_generator_template_demo_portal ``` # Test the code generator TODO +```bash +make test +``` + +TODO + ```bash make test_code_generator_generation ```