[ADD] code_generator documentation use case

This commit is contained in:
Mathieu Benoit 2021-06-27 22:58:36 -04:00
parent 23a3464119
commit 44cf55d660
4 changed files with 1082 additions and 63 deletions

View file

@ -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

View file

@ -12,7 +12,19 @@
<!-- [en] -->
Never run this on production environment, this create circular dependencies and will cause frustration to clean damage.
<!-- [fr] -->
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é;
<!-- [common] -->
```
@ -29,9 +41,9 @@ Modules
<!-- [fr] -->
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.
<!-- [en] -->
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
<!-- [fr] -->
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!
<!-- [ignore] -->
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
<!-- [en] -->
## 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`.
<!-- [en] -->
### Create model-view module
<!-- [fr] -->
### Créer un module modèle avec vue
<!-- [common] -->
```bash
make addons_install_code_generator_basic
make run_code_generator
```
<!-- [en] -->
TODO
<!-- [fr] -->
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
<!-- [en] -->
TODO
<!-- [fr] -->
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 :
<!-- [common] -->
```bash
make db_restore_erplibre_base_db_test_module_test
make run_test
```
<!-- [en] -->
### Create portal module
<!-- [fr] -->
### Créer un module avec la vue portail
<!-- [common] -->
```bash
make addons_install_code_generator_basic
./script/addons/install_addons.sh code_generator code_generator_portal
make run_code_generator
```
<!-- [en] -->
TODO
<!-- [fr] -->
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
<!-- [en] -->
TODO
<!-- [fr] -->
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 :
<!-- [common] -->
```bash
make db_restore_erplibre_base_db_test_module_test
make run_test
```
<!-- [en] -->
TODO
<!-- [fr] -->
Ajouter des données dans votre nouveau module «test».
Aller sur le portail pour visualiser les données, à l'adresse `/my`.
<!-- [en] -->
### Create hook module for installation
<!-- [fr] -->
### Créer un module crochet pour l'installation
<!-- [en] -->
TODO
<!-- [fr] -->
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
<!-- [common] -->
```bash
make addons_install_code_generator_basic
./script/addons/install_addons.sh code_generator code_generator_hook
make run_code_generator
```
<!-- [en] -->
TODO
<!-- [fr] -->
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 :
<!-- [common] -->
```python
with api.Environment.manage():
env = api.Environment(cr, SUPERUSER_ID, {})
print("Hello World")
```
<!-- [en] -->
TODO
<!-- [fr] -->
Générer le module avec «Action/Générer code».
Tester et chercher dans la console "Hello World" :
<!-- [common] -->
```bash
make db_restore_erplibre_base_db_test_module_test
```
<!-- [en] -->
### Create cron module
<!-- [fr] -->
### Créer un module d'exécution de code sur une plage horaire
<!-- [en] -->
TODO
<!-- [fr] -->
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
<!-- [common] -->
```bash
make addons_install_code_generator_basic
./script/addons/install_addons.sh code_generator code_generator_cron
make run_code_generator
```
<!-- [en] -->
TODO
<!-- [fr] -->
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 :
<!-- [common] -->
```python
log("Coucou")
```
<!-- [en] -->
TODO
<!-- [fr] -->
Générer le module avec «Action/Générer code».
Tester :
<!-- [common] -->
```bash
make db_restore_erplibre_base_db_test_module_test
make run_test
```
<!-- [en] -->
TODO
<!-- [fr] -->
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».
<!-- [en] -->
### Create website snippet module
<!-- [fr] -->
### Créer un module de snippet pour le site web
<!-- [en] -->
In progress
<!-- [fr] -->
En progression, non terminé
<!-- [common] -->
```bash
make addons_install_code_generator_basic
./script/addons/install_addons.sh code_generator code_generator_website_snippet
make run_code_generator
```
<!-- [en] -->
TODO
<!-- [fr] -->
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
<!-- [en] -->
TODO
<!-- [fr] -->
Aller dans le module «Code generator» et créer un module «test».
- Sur l'onglet «Information», activer «Enable Sync Code»
TODO Incomplet
<!-- [en] -->
### Create geoengine with Leaflet module
<!-- [fr] -->
### Créer un module de gestion de coordonnée géospatial avec Leaflet
<!-- [common] -->
```bash
make addons_install_code_generator_basic
./script/addons/install_addons.sh code_generator code_generator_website_leaflet
make run_code_generator
```
<!-- [en] -->
TODO
<!-- [fr] -->
Pour des références techniques, voir module :
- code_generator_demo_website_leaflet
- demo_website_leaflet
<!-- [en] -->
TODO
<!-- [fr] -->
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 :
<!-- [common] -->
```bash
make db_restore_erplibre_base_db_test_module_test
make run_test
```
<!-- [en] -->
TODO
<!-- [fr] -->
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.
<!-- [en] -->
### Create theme module for website
<!-- [fr] -->
### Créer un module thème pour site web
<!-- [en] -->
TODO
<!-- [fr] -->
Pour des références techniques, voir module :
- code_generator_demo_theme_website
<!-- [common] -->
```bash
make addons_install_code_generator_basic
./script/addons/install_addons.sh code_generator code_generator_theme_website
make run_code_generator
```
<!-- [en] -->
TODO
<!-- [fr] -->
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.
<!-- [common] -->
```bash
make db_restore_erplibre_base_db_test
./script/addons/install_addons.sh test website
make run_test
```
<!-- [en] -->
TODO
<!-- [fr] -->
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».
<!-- [en] -->
### Extract data to module
<!-- [fr] -->
### Extraire les données vers un module
<!-- [en] -->
TODO
<!-- [fr] -->
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
<!-- [common] -->
```bash
make addons_install_code_generator_basic
./script/addons/install_addons.sh code_generator helpdesk_mgmt
make run_code_generator
```
<!-- [en] -->
TODO
<!-- [fr] -->
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».
<!-- [common] -->
```bash
make db_restore_erplibre_base_db_test_module_test
```
<!-- [en] -->
### Migrate external database into module of migration
<!-- [fr] -->
### Migrer une base de donnée externe en module de migration
<!-- [en] -->
TODO
<!-- [fr] -->
En progression.
Pour des références techniques, voir module :
- ??
<!-- [common] -->
```bash
make addons_install_code_generator_basic
./script/addons/install_addons.sh code_generator code_generator_db_servers
make run_code_generator
```
<!-- [en] -->
TODO
<!-- [fr] -->
Aller dans le module «Code generator», menu «Databases»/«Databases» et créer un connecteur vers une base de donnée.
À compléter...
<!-- [en] -->
### Migrate from website to model with PDF data
<!-- [fr] -->
### Migrer d'un site web vers un modèle de donnée avec des données format PDF
<!-- [en] -->
TODO
<!-- [fr] -->
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.
<!-- [common] -->
```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
```
<!-- [en] -->
## Prepare a DB
@ -123,18 +584,25 @@ make db_restore_erplibre_base_db_code_generator
```
<!-- [en] -->
## Test code generator
TODO
<!-- [fr] -->
## 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 :
<!-- [common] -->
```bash
make config_gen_code_generator
```
<!-- [en] -->
TODO
<!-- [fr] -->
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 :
<!-- [common] -->
```bash
make test_code_generator_generation
make config_gen_all
```
<!-- [en] -->
@ -207,7 +675,7 @@ make addons_install_code_generator_demo
Name your module begin with `MODULE_NAME = "code_generator_"`
<!-- [fr] -->
Nommé votre module qui débute par `MODULE_NAME = "code_generator_"`
Au besoin, renommé votre module qui débute par `MODULE_NAME = "code_generator_"`
<!-- [en] -->
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 :
<!-- [common] -->
```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
<!-- [en] -->
<!-- [fr] -->
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.
<!-- [common] -->
```bash
@ -319,19 +788,25 @@ make db_restore_erplibre_base_db_code_generator
<!-- [fr] -->
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`.
<!-- [common] -->
```python
value["enable_sync_template"] = True
value["enable_template_wizard_view"] = True
value["template_model_name"] = "test;test2"
```
<!-- [en] -->
TODO
<!-- [fr] -->
Exécuter l'installation du template pour qu'il se synchronise sur le module généré.
<!-- [common] -->
```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
<!-- [fr] -->
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.
<!-- [common] -->
```bash
make test
```
<!-- [en] -->
TODO
<!-- [fr] -->
Tester les générations simples :
<!-- [common] -->

View file

@ -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

View file

@ -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
```