HowTo » History » Version 13
« Previous -
Version 13/22
(diff) -
Next » -
Current version
Alexander Blum, 02/15/2020 10:49 PM
HowTo¶
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¶
Start the services once:
docker-compose up
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
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.Run the tryton tests for the collecting_society model to test the views and depends:
docker-compose exec erpserver python /shared/src/trytond/trytond/tests/run-tests.py -vvvm collecting_society
Restart the tryton client with cache disabled and test the views and fields of the model (read/write):
tryton -d
Rebuild database¶
Stop the services and log into the tryton service:
docker-compose stop docker-compose run erpserver bash execute pip-install tryton
Delete and setup a new database (
scenario_master_data.txt
only):execute db-delete && execute db-setup --master --force
Check the log, fix all update/init errors, until the update runs successfully.
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 (you might want to create an alias for that):
tryton -d
Create/Fix the tests, see HowTo
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) and restart the client. A restart of the tryton server is usually not neccessary,
docker-compose exec erpserver execute update -m collecting_society
WARNING: If you have fixed view errors in the XML and it seems that the view cache is not cleared or the changes in the XML definitions are not propagated to the application,
do the following:
- Check the
name
tag in the correspondingir.ui.view
record model entries in the main XML. Thename
must correspond to a file name in theview
path, but plus ".xml". - Temporarily delete the corresponding definitions of the broken view (usually at least the record models
ir.ui.view, ir.action.act_window, ir.action.act_window.view
andmenuitem
) - Update the database:
docker-compose exec erpserver execute update -m collecting_society
- Insert the corresponding definitions of the broken view again (undo the deletion)
- Again update the database:
docker-compose exec erpserver execute update -m collecting_society
- Restart the Tryton Client
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 view in the tryton client, if cache is disabled:
tryton --dev
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.
Log into a tryton (only) service
docker-compose run erpserver bash execute pip-install tryton
Delete and setup a clean database template (
scenario_master_data.txt
only), if not already available:execute db-delete c3s_template && execute db-setup --master c3s_template
Delete the database, copy the database template and setup the data to test, pipe the output into a logfile:
execute db-delete c3s && execute db-copy c3s_template c3s && execute db-setup --demo --force
Start with
debug = 1
in the configuration section to set all configuration variables to 1.
If that works, trydebug = 2
afterwards, as some objects might not be created due to the low sample size.
Don't forget to set it back todebug = False
, when you are finished.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.
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
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:
- Open an interactive console, where one of the following keywords are passed as parameter: fieldname, error_args
- 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
Errors in Tryton Tests¶
====================================================================== ERROR: test0005views (trytond.modules.collecting_society.tests.test_collecting_society.CollectingSocietyTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/shared/src/collecting_society/tests/test_collecting_society.py", line 24, in test0005views test_view('collecting_society') File "/shared/src/trytond/trytond/tests/test_tryton.py", line 123, in test_view res = Model.fields_view_get(view_id) File "/shared/src/trytond/trytond/model/modelview.py", line 237, in fields_view_get tree = etree.fromstring(result['arch'], parser) File "lxml.etree.pyx", line 3092, in lxml.etree.fromstring (src/lxml/lxml.etree.c:70691) File "parser.pxi", line 1827, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:106678) ValueError: can only parse strings
Probably some referenced view file in ./views/
is missing.
To get the view name, open up /shared/src/trytond/trytond/tests/test_tryton.py", line 123 and add print(model)
before the call of fields_view_get (around Line 123).
~~~
Pyramid¶
2DO