Added 30 .base.md files using the mmg (Multilingual Markdown Generator) format to automatically generate English (.md) and French (.fr.md) versions of all project documentation. Updated conf/make.documentation.Makefile to process all .base.md files via `make doc_markdown`.
416 lines
No EOL
8.9 KiB
Markdown
416 lines
No EOL
8.9 KiB
Markdown
|
|
# 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 #
|
|
############ ################## ##########
|
|
```
|
|
|
|
1. [A Template generates a Template or a Code_Generator.](#create-your-first-code_generator)
|
|
2. A Code_Generator generates a Module.
|
|
3. A Template reads a Module to generate a Code_Generator.
|
|
|
|
Warning, be careful with your code, always commit after a manipulation, because the mode enable_sync_code erase data, only Git will save you!
|
|
|
|
## Manual generator with web interface
|
|
|
|
TODO
|
|
|
|
```bash
|
|
make addons_install_code_generator_basic
|
|
make run_code_generator
|
|
```
|
|
|
|
TODO
|
|
```bash
|
|
make addons_install_code_generator_featured
|
|
make run_code_generator
|
|
```
|
|
|
|
TODO
|
|
```bash
|
|
make addons_install_code_generator_full
|
|
make run_code_generator
|
|
```
|
|
|
|
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.
|
|
|
|
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
|
|
```
|
|
|
|
### Export a website to a module
|
|
|
|
TODO
|
|
|
|
### Migrate external database into the migration module
|
|
|
|
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 a database named `code_generator`.
|
|
|
|
```bash
|
|
make db_restore_erplibre_base_db_code_generator
|
|
```
|
|
|
|
TODO
|
|
|
|
```bash
|
|
make config_gen_code_generator
|
|
```
|
|
|
|
TODO
|
|
|
|
```bash
|
|
make config_gen_all
|
|
```
|
|
|
|
# Create Code Generator
|
|
|
|
```bash
|
|
./script/code_generator/new_project.py -d PATH -m MODULE_NAME
|
|
```
|
|
|
|
## Create your first `Code_Generator`
|
|
|
|
Edit [Code Generator Demo](./../addons/TechnoLibre_odoo-code-generator/code_generator_demo/hooks.py) and update `# TODO HUMAN:`
|
|
|
|
### Generate a `Template`
|
|
|
|
By default, `code_generator_demo` generates itself, `code_generator_demo`.
|
|
|
|
Name your module beginning with `MODULE_NAME = "code_generator_template_"`
|
|
|
|
The value "enable_template_code_generator_demo" at `False` to create a new template module, else this will recreate `code_generator_demo`.
|
|
|
|
For example, to generate the module `code_generator_template_demo_website_snippet`, change value:
|
|
|
|
```python
|
|
MODULE_NAME = "code_generator_template_demo_website_snippet"
|
|
[...]
|
|
value["enable_template_website_snippet_view"] = True
|
|
[...]
|
|
lst_depend = [
|
|
"code_generator",
|
|
"code_generator_website_snippet",
|
|
]
|
|
```
|
|
|
|
Generate new module, this will overwrite `code_generator_template_demo_website_snippet`:
|
|
|
|
```bash
|
|
make db_restore_erplibre_base_db_code_generator
|
|
make addons_install_code_generator_demo
|
|
```
|
|
|
|
### Generate a Code_Generator (continue template)
|
|
|
|
Name your module beginning with `MODULE_NAME = "code_generator_"`
|
|
|
|
To continue the example, you generated the template `code_generator_template_demo_website_snippet`, this will overwrite `code_generator_demo_website_snippet`:
|
|
|
|
```bash
|
|
make db_restore_erplibre_base_db_template
|
|
./script/addons/install_addons_dev.sh template code_generator_template_demo_website_snippet
|
|
```
|
|
|
|
Go to section [Create your first module](#create-your-first-module)
|
|
|
|
### Generate a Code_Generator_Demo
|
|
|
|
Name your module beginning with `MODULE_NAME = "code_generator_demo_"`
|
|
|
|
Disable `enable_template_code_generator_demo`
|
|
|
|
```python
|
|
value["enable_template_code_generator_demo"] = False
|
|
```
|
|
|
|
To 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_dev.sh code_generator code_generator_template_demo_website_snippet
|
|
```
|
|
|
|
## Create your first Module
|
|
|
|
To continue the example of code_generator_demo_website_snippet to generate your first module. Update next value:
|
|
|
|
```python
|
|
"application": True,
|
|
"category_id": env.ref("base.module_category_website").id,
|
|
[...]
|
|
# Add dependencies
|
|
lst_depend = [
|
|
"website",
|
|
]
|
|
```
|
|
|
|
Generate your module:
|
|
|
|
```bash
|
|
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 his code_generator associated, because of duplicated
|
|
models!
|
|
|
|
|
|
```bash
|
|
make db_restore_erplibre_base_db_code_generator
|
|
./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_dev.sh test demo_website_snippet
|
|
```
|
|
|
|
# How to generate i18n translation
|
|
|
|
You need a template and a module. Be sure you have this line in template:
|
|
|
|
```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)
|
|
```
|
|
|
|
First, install the module, for example `demo_portal`, and after the template, for example `code_generator_template_demo_portal`.
|
|
|
|
```bash
|
|
make db_restore_erplibre_base_db_code_generator
|
|
./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
|
|
|
|
This reduce the time it takes for programming a `Code_Generator` with sync module field with `Template`.
|
|
|
|
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.
|
|
|
|
Example:
|
|
|
|
```bash
|
|
make db_restore_erplibre_base_db_code_generator
|
|
./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
|
|
```
|
|
|
|
TODO
|
|
|
|
```bash
|
|
make test_code_generator_generation_extra
|
|
```
|
|
TODO
|
|
|
|
```bash
|
|
make test_code_generator_template
|
|
``` |