HowTo » History » Version 6

Version 5 (Thomas Mielke, 01/17/2020 06:27 PM) → Version 6/22 (Thomas Mielke, 01/17/2020 06:29 PM)

# HowTo

{{toc}}

## Tryton

### Change Model Fields

If the fields of a model need some changes, you first might want to try to update the current database (if possible) until you are satisfied.
Nevertheless, always test a rebuild from scratch before a commit. Of course you could also skip the updating part, but a complete db setup needs more time.

#### Update database

1. Start the services once:

docker-compose up

2. While you are coding, apply changes to the database with `exec` (`exec` executes the command on the running container instead of starting a new one, so it is faster):

docker-compose exec erpserver execute update -m collecting_society

3. Fix all update/init errors until the update runs successfully.

Watch the logs for warnings, but be aware, that sometimes there is none - e.g. if you deleted a field/relation but still use it somewhere else,
the database will still contain that table/column and you won't notice the error until a complete rebuild of the database.

4. Restart the tryton client with cache disabled and test the views and fields of the model (read/write):

tryton -d

1. Create/Fix all XML views of that model, until everything works as expected, see [[HowTo#Change XML Views]].

2. Fix all model functions of that model, until everything works as expected, see [[HowTo#Change Model Functions]].

#### Rebuild database

1. Stop the services and log into the tryton service:

docker-compose stop
docker-compose run erpserver bash

execute ado-do pip-install tryton

2. Delete and setup a new database (`scenario_master_data.txt` only):

execute ado-do db-delete c3s && execute ado-do db-setup --master --force c3s

3. Check the log, fix all update/init errors, until the update runs successfully.

4. Start a tryton (only) service on second terminal (to be able to rebuild the database on the first terminal, if neccessary):

docker-compose up tryton

5. Restart the tryton client with cache disabled (you might want to create an alias for that):

tryton -d

1. Create/Fix all XML views of that model, until everything works as expected, see [[HowTo#Change XML Views]].

2. Fix all model functions of that model, until everything works as expected, see [[HowTo#Change Model Functions]].

11. Create/Fix the tests, see [[HowTo#Change DB Tests]]

12. Commit

### Change Model Functions

If you change some code within a model function, you just need to restart the tryton service for trytond to reread the function definitions:

tryton -d

### Change XML Views

If you change the **main XML** (e.g. `ado/src/collecting_society/collecting_society.xml`), you need to update the database (best with exec on a running container).
A restart of the tryton client is not neccessary:

docker-compose exec erpserver execute tryton ado-do update -m collecting_society c3s

If you change the **XML views** for a model (e.g. `ado/src/collecting_society/view/creation_list.xml`), it is sufficient to close and reopen the list in the tryton client, if cache is disabled:

tryton -d

### Change DB Tests

If you want/need to change the database tests (`ado/etc/scenario_demo_data.txt`), you want to create and setup a new database template (e.g. `c3s_template`) and use a copy of it as the starting point for the test/demo setup.

1. Log into a tryton (only) service

docker-compose run erpserver bash

execute ado-do pip-install tryton

2. Delete and setup a clean database template (`scenario_master_data.txt` only), if not already available:

execute ado-do db-delete c3s_template && execute ado-do db-setup --master c3s_template

3. Delete the database, copy the database template and setup the data to test, pipe the output into a logfile:

execute ado-do db-delete c3s && execute ado-do db-copy c3s_template c3s && execute ado-do db-setup --demo --force c3s

Start with `debug = 1` in the configuration section to set all configuration variables to 1.
If that works, try `debug = 2` afterwards, as some objects might not be created due to the low sample size.
Don't forget to set it back to `debug = False`, when you are finished.

4. Check the log, fix all errors, until the setup runs successfully. If you get stuck, fire up an interactive console with interlude within your tests:

import interlude; interlude.interact(locals())

You can always find that command in the import section at the top of the scenario files, if you want to copy & paste it.

5. To validate the test data, start a tryton (only) service on second terminal (to be able to rebuild the database on the first terminal, if neccessary):

docker-compose up tryton

Restart the tryton client with cache disabled:

tryton -d

6. Set `debug = False` in the configuration section and do a final test run.

### Errors in pyramid view

If you encounter tryton errors in a pyramid error feedback view, you might be able to get more specific information on the error:

1. Open an interactive console, where one of the following keywords are passed as parameter: fieldname, error_args
2. Type that variable name into the console to find out its value, which could point towards the source of the error.

### Errors in Protheus

... are sometimes cryptic. See here for Englisch and German translations:

http://hg.tryton.org/trytond/file/tip/trytond/ir/locale/de.po

## Pyramid

2DO