2026-02-15 01:07:25 -05:00
2021-02-10 22:15:07 -05:00
# How to generate code
Never run this on production environment, this create circular dependencies and will cause frustration to clean damage.
```
Modules
############ ################## ##########
# Template # -> # Code_Generator # -> # Module #
############ ################## ##########
```
2021-03-09 04:28:14 -05:00
1. [A Template generates a Template or a Code_Generator. ](#create-your-first-code_generator )
2021-02-10 22:15:07 -05:00
2. A Code_Generator generates a Module.
3. A Template reads a Module to generate a Code_Generator.
2021-07-20 16:39:57 -04:00
Warning, be careful with your code, always commit after a manipulation, because the mode enable_sync_code erase data, only Git will save you!
2021-03-09 04:28:14 -05:00
## Manual generator with web interface
TODO
```bash
make addons_install_code_generator_basic
make run_code_generator
```
2023-07-07 01:04:38 -04:00
TODO
2021-03-09 04:28:14 -05:00
```bash
make addons_install_code_generator_featured
make run_code_generator
```
2023-07-07 01:04:38 -04:00
TODO
2021-03-09 04:28:14 -05:00
```bash
make addons_install_code_generator_full
make run_code_generator
```
2021-07-26 04:30:56 -04:00
Ouvrir le navigateur sur [http://localhost:8069 ](http://localhost:8069 ). Utilisateur `admin` et mot de passe `admin` . Une fois connecté, ouvrir sur [http://localhost:8069/web?debug= ](http://localhost:8069/web?debug= ) pour activer le mode déverminage.
2021-03-09 04:28:14 -05:00
Ouvrir l'application `Code Generator` et créer un `Module` . Remplir les champs requis et générer avec `Action/Generate code` .
2021-06-27 22:58:36 -04:00
### 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
2021-07-20 16:39:57 -04:00
### Create GeoEngine with Leaflet module
2021-06-27 22:58:36 -04:00
```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
```
2022-04-17 07:53:29 -04:00
### Export a website to a module
TODO
2021-07-20 16:39:57 -04:00
### Migrate external database into the migration module
2021-06-27 22:58:36 -04:00
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
```
2021-02-10 22:15:07 -05:00
## Prepare a DB
2021-07-20 16:39:57 -04:00
This will destroy and create a database named `code_generator` .
2021-03-09 04:28:14 -05:00
2021-02-10 22:15:07 -05:00
```bash
make db_restore_erplibre_base_db_code_generator
```
2021-06-27 22:58:36 -04:00
TODO
```bash
make config_gen_code_generator
```
2021-03-09 04:28:14 -05:00
TODO
2021-06-27 22:58:36 -04:00
```bash
make config_gen_all
```
2022-12-24 00:22:33 -05:00
# Create Code Generator
```bash
./script/code_generator/new_project.py -d PATH -m MODULE_NAME
```
2021-03-09 04:28:14 -05:00
## Create your first `Code_Generator`
2021-02-10 22:15:07 -05:00
Edit [Code Generator Demo ](./../addons/TechnoLibre_odoo-code-generator/code_generator_demo/hooks.py ) and update `# TODO HUMAN:`
2021-03-09 04:28:14 -05:00
### Generate a `Template`
2021-02-10 22:15:07 -05:00
2021-07-20 16:39:57 -04:00
By default, `code_generator_demo` generates itself, `code_generator_demo` .
2021-02-10 22:15:07 -05:00
2021-07-20 16:39:57 -04:00
Name your module beginning with `MODULE_NAME = "code_generator_template_"`
2021-02-10 22:15:07 -05:00
2021-03-09 04:28:14 -05:00
The value "enable_template_code_generator_demo" at `False` to create a new template module, else this will recreate `code_generator_demo` .
2021-02-10 22:15:07 -05:00
2021-07-20 16:39:57 -04:00
For example, to generate the module `code_generator_template_demo_website_snippet` , change value:
2021-02-10 22:15:07 -05:00
```python
MODULE_NAME = "code_generator_template_demo_website_snippet"
[...]
value["enable_template_website_snippet_view"] = True
[...]
lst_depend = [
"code_generator",
"code_generator_website_snippet",
]
```
2021-03-09 04:28:14 -05:00
Generate new module, this will overwrite `code_generator_template_demo_website_snippet` :
2021-02-10 22:15:07 -05:00
```bash
2021-03-09 04:28:14 -05:00
make db_restore_erplibre_base_db_code_generator
2021-02-10 22:15:07 -05:00
make addons_install_code_generator_demo
```
2021-03-09 04:28:14 -05:00
### Generate a Code_Generator (continue template)
2021-07-20 16:39:57 -04:00
Name your module beginning with `MODULE_NAME = "code_generator_"`
2021-03-09 04:28:14 -05:00
2021-07-20 16:39:57 -04:00
To continue the example, you generated the template `code_generator_template_demo_website_snippet` , this will overwrite `code_generator_demo_website_snippet` :
2021-03-09 04:28:14 -05:00
```bash
make db_restore_erplibre_base_db_template
2021-06-27 22:58:36 -04:00
./script/addons/install_addons_dev.sh template code_generator_template_demo_website_snippet
2021-03-09 04:28:14 -05:00
```
Go to section [Create your first module ](#create-your-first-module )
### Generate a Code_Generator_Demo
2021-02-10 22:15:07 -05:00
2021-07-20 16:39:57 -04:00
Name your module beginning with `MODULE_NAME = "code_generator_demo_"`
2021-02-10 22:15:07 -05:00
2021-03-09 04:28:14 -05:00
Disable `enable_template_code_generator_demo`
2021-02-10 22:15:07 -05:00
```python
value["enable_template_code_generator_demo"] = False
```
2021-07-20 16:39:57 -04:00
To continue the example, you generated the template `code_generator_template_demo_website_snippet` , this will overwrite `code_generator_demo_website_snippet` :
2021-03-09 04:28:14 -05:00
2021-02-10 22:15:07 -05:00
```bash
2021-06-27 22:58:36 -04:00
./script/addons/install_addons_dev.sh code_generator code_generator_template_demo_website_snippet
2021-02-10 22:15:07 -05:00
```
## Create your first Module
2021-07-20 16:39:57 -04:00
To continue the example of code_generator_demo_website_snippet to generate your first module. Update next value:
2021-03-09 04:28:14 -05:00
2021-02-10 22:15:07 -05:00
```python
"application": True,
"category_id": env.ref("base.module_category_website").id,
[...]
# Add dependencies
lst_depend = [
"website",
]
```
Generate your module:
2021-03-09 04:28:14 -05:00
2021-02-10 22:15:07 -05:00
```bash
2021-06-27 22:58:36 -04:00
make db_restore_erplibre_base_db_code_generator
./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_snippet
2021-02-10 22:15:07 -05:00
```
2021-07-20 16:39:57 -04:00
Now, you can test it! Note, you cannot install a generated module with his code_generator associated, because of duplicated
2021-03-09 04:28:14 -05:00
models!
```bash
make db_restore_erplibre_base_db_code_generator
2021-06-27 22:58:36 -04:00
./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_snippet
2021-03-09 04:28:14 -05:00
```
```python
value["enable_sync_template"] = True
2021-06-27 22:58:36 -04:00
value["enable_template_wizard_view"] = True
value["template_model_name"] = "test;test2"
2021-03-09 04:28:14 -05:00
```
2021-06-27 22:58:36 -04:00
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
```
2021-03-09 04:28:14 -05:00
Ready to test, generate your module:
2021-02-10 22:15:07 -05:00
```bash
# Optional, reset test database
make db_restore_erplibre_base_db_test
2021-06-27 22:58:36 -04:00
./script/addons/install_addons_dev.sh test demo_website_snippet
2021-02-10 22:15:07 -05:00
```
# How to generate i18n translation
2021-03-09 04:28:14 -05:00
You need a template and a module. Be sure you have this line in template:
2021-02-10 22:15:07 -05:00
```python
new_module_path = os.path.join(path_module_generate, new_module_name)
code_generator_writer.set_module_translator(new_module_name, new_module_path)
```
2021-07-20 16:39:57 -04:00
First, install the module, for example `demo_portal` , and after the template, for example `code_generator_template_demo_portal` .
2021-03-09 04:28:14 -05:00
2021-02-10 22:15:07 -05:00
```bash
make db_restore_erplibre_base_db_code_generator
2021-06-27 22:58:36 -04:00
./script/addons/install_addons_dev.sh test demo_portal
./script/addons/install_addons_dev.sh test code_generator_template_demo_portal
2021-02-10 22:15:07 -05:00
```
# Sync Code_Generator fields from Module
2021-07-20 16:39:57 -04:00
This reduce the time it takes for programming a `Code_Generator` with sync module field with `Template` .
2021-03-09 04:28:14 -05:00
You need a `Template` , a `Code_Generator` with his `Module` . Install the `Module` first in clean database and install `Template` ,
this will generate the `Code_Generator` , use `enable_sync_template` at True.
2021-02-10 22:15:07 -05:00
2021-03-09 04:28:14 -05:00
Example:
2021-02-10 22:15:07 -05:00
```bash
make db_restore_erplibre_base_db_code_generator
2021-06-27 22:58:36 -04:00
./script/addons/install_addons_dev.sh test demo_portal
./script/addons/install_addons_dev.sh test code_generator_template_demo_portal
2021-02-10 22:15:07 -05:00
```
2021-03-09 04:28:14 -05:00
# Test the code generator
TODO
2021-06-27 22:58:36 -04:00
```bash
make test
```
TODO
2021-03-09 04:28:14 -05:00
```bash
make test_code_generator_generation
```
TODO
```bash
make test_code_generator_generation_extra
```
TODO
```bash
make test_code_generator_template
2026-02-15 01:07:25 -05:00
```