# Release notes

## Version 7.0.53 - 2026-07-01

- Bug fixes (see mercurial logs for details)

- Enforce access right on the email template record (issue14907)

- Add ModelAccessProxy (issue14907)

- Restrict Genshi evaluation (issue14869, issue5160)

## Version 7.0.52 - 2026-06-18

- Bug fixes (see mercurial logs for details)

## Version 7.0.51 - 2026-06-02

- Bug fixes (see mercurial logs for details)

## Version 7.0.50 - 2026-05-20

- Bug fixes (see mercurial logs for details)

## Version 7.0.49 - 2026-05-02

- Bug fixes (see mercurial logs for details)

## Version 7.0.48 - 2026-04-16

- Bug fixes (see mercurial logs for details)

## Version 7.0.47 - 2026-03-18

- Bug fixes (see mercurial logs for details)

## Version 7.0.46 - 2026-03-02

- Bug fixes (see mercurial logs for details)

## Version 7.0.45 - 2026-02-01

- Bug fixes (see mercurial logs for details)

## Version 7.0.44 - 2026-01-15

- Bug fixes (see mercurial logs for details)

## Version 7.0.43 - 2026-01-02

- Bug fixes (see mercurial logs for details)

## Version 7.0.42 - 2025-12-20

- Bug fixes (see mercurial logs for details)

## Version 7.0.41 - 2025-12-17

- Bug fixes (see mercurial logs for details)

## Version 7.0.40 - 2025-11-21

- Bug fixes (see mercurial logs for details)

- Enforce access check in export_data (issue14366)

- Include the traceback only in RPC responses in development mode (issue14354)

- Enforce access check in HTML editor route (issue14364)

## Version 7.0.39 - 2025-11-02

- Bug fixes (see mercurial logs for details)

## Version 7.0.38 - 2025-10-20

- Bug fixes (see mercurial logs for details)

- Lock records on transaction start

## Version 7.0.37 - 2025-10-02

- Bug fixes (see mercurial logs for details)

## Version 7.0.36 - 2025-09-15

- Bug fixes (see mercurial logs for details)

- Redact sensitive values from the log (issue14220)

## Version 7.0.35 - 2025-09-03

- Bug fixes (see mercurial logs for details)

## Version 7.0.34 - 2025-07-15

- Bug fixes (see mercurial logs for details)

## Version 7.0.33 - 2025-07-01

- Bug fixes (see mercurial logs for details)

## Version 7.0.32 - 2025-06-04

- Bug fixes (see mercurial logs for details)

## Version 7.0.31 - 2025-05-02

- Bug fixes (see mercurial logs for details)

## Version 7.0.30 - 2025-04-26

- Bug fixes (see mercurial logs for details)

## Version 7.0.29 - 2025-04-02

- Bug fixes (see mercurial logs for details)

## Version 7.0.28 - 2025-03-15

- Bug fixes (see mercurial logs for details)

## Version 7.0.27 - 2025-03-04

- Bug fixes (see mercurial logs for details)

## Version 7.0.26 - 2025-02-16

- Bug fixes (see mercurial logs for details)

## Version 7.0.25 - 2025-02-01

- Bug fixes (see mercurial logs for details)

## Version 7.0.24 - 2025-01-16

- Bug fixes (see mercurial logs for details)

## Version 7.0.23 - 2025-01-01

- Bug fixes (see mercurial logs for details)

## Version 7.0.22 - 2024-12-16

- Bug fixes (see mercurial logs for details)

## Version 7.0.21 - 2024-12-01

- Bug fixes (see mercurial logs for details)

## Version 7.0.20 - 2024-10-18

- Bug fixes (see mercurial logs for details)

## Version 7.0.19 - 2024-10-05

- Bug fixes (see mercurial logs for details)

## Version 7.0.18 - 2024-09-16

- Bug fixes (see mercurial logs for details)

- Retrieve groups of actions without checking access (#13506)

- Check read access of report records (#13505)

## Version 7.0.17 - 2024-09-01

- Bug fixes (see mercurial logs for details)

## Version 7.0.16 - 2024-08-01

- Bug fixes (see mercurial logs for details)

## Version 7.0.15 - 2024-07-17

- Bug fixes (see mercurial logs for details)

## Version 7.0.14 - 2024-07-01

- Bug fixes (see mercurial logs for details)

## Version 7.0.13 - 2024-06-15

- Bug fixes (see mercurial logs for details)

## Version 7.0.12 - 2024-06-02

- Bug fixes (see mercurial logs for details)

## Version 7.0.11 - 2024-05-01

- Bug fixes (see mercurial logs for details)

## Version 7.0.10 - 2024-04-17

- Bug fixes (see mercurial logs for details)

- Do not accept compressed content from unauthenticated request (#13142)

## Version 7.0.9 - 2024-04-04

- Bug fixes (see mercurial logs for details)

## Version 7.0.8 - 2024-03-03

- Bug fixes (see mercurial logs for details)

## Version 7.0.7 - 2024-02-15

- Bug fixes (see mercurial logs for details)

## Version 7.0.6 - 2024-02-03

- Bug fixes (see mercurial logs for details)

## Version 7.0.5 - 2024-01-15

- Bug fixes (see mercurial logs for details)

## Version 7.0.4 - 2024-01-01

- Bug fixes (see mercurial logs for details)

## Version 7.0.3 - 2023-12-16

- Bug fixes (see mercurial logs for details)

## Version 7.0.2 - 2023-12-01

- Bug fixes (see mercurial logs for details)

## Version 7.0.1 - 2023-11-17

- Bug fixes (see mercurial logs for details)

## Version 7.0.0 - 2023-10-30

- Bug fixes (see mercurial logs for details)

- Add pairwise_longest tools

- Add support for Python 3.12

- Support default values for autocomplete

- Support default value from context

- Add autocomplete method on ModelView

- Add likify tools

- Remove user from contextual key of Cache

- Remove user from evaluation context of rule domain

- Allow customizing context per model for rule

- Use multiple jobs to dump and restore a test database

- Support database cache as template for tests

- Add route test case

- Add on_scan_code method on Model

- Support add/update/remove/delete for on_change_with of xxx2Many

- Add decorator on RPC

- Remove translations with empty source

- Run doc tests with different globals

- Create user applications as validated from user preferences

- Support GIN index with btree_gin PostgreSQL extension

- Add a canonicalize function for domains

- Enforce record rules when reading only non SQL fields (#12428)

- Support PYSON comparison of timedelta

- Support encoding timedelta into PYSON TimeDelta

- Allow date formating in sequences substitutions

- Make ModelSQL based on table query read only by default

- Add email validation tools

- Remove overlapping indexes

- Support subset operator between index definitions

- Add sum_tree helper

- Convert sum attribute into boolean

- Store records selection on export

## Version 6.8.0 - 2023-05-01

- Bug fixes (see mercurial logs for details)

- Support return instances for Function getter and on_change_with

- Log events for ModelStorage

- Use IDENTITY column for id columns in the postgresql backend

- Use no breaking space to format number and date

- Fallback to code to format currency without symbol

- Add sort method to order like ModelStorage.search

- Do not alter argument values of with_transaction decorator (#12108)

- Support SMALLINT and REAL as backend types

- Remove BigInteger field

- Remove support for Python 3.7

- Add support for Python 3.11

- Add scroll time for calendar view

- Allow cache size to be configured

- Add local and global list of ignore context keys

- Add functions in transaction for check access and active record

- Add check_access and active_records attribute to Transaction

- Add searchable and sortable methods on Field

- Add support for barcode and QR code

- Support reading string value of selection fields

- Add ButtonActionException and RPCReturnException

- Rename ModelStorage.count into ModelStorage.estimated_count

- Add border type to images

- Lock table on transaction start

- Use EXISTS for search on O2M with many records

- Replace target_search by use of count()

- Manage domain on id in single value list as unique

- Do not validate domain for empty fields

- Warn about implicit save() of unsaved relation

- Raise error message with record name and field in check_xml_record

- Cache RPC call for class method selection

## Version 6.6.0 - 2022-10-31

- Bug fixes (see mercurial logs for details)

- Add sql_id method to Reference field

- Use declarative index definition for ModelSQL

- Add configuration entries for unaccent and similarity functions

- Add authentication services

- Schedule actions using server timezone

- Reset the user sessions less often

- Add straight values to wizard state view

- Add strip option to Char fields

- Strip only one wildcard

- Manage web extension origin as null

- Remove same types restriction on PYSON If

- Allow PYSON size of fields to be None

- Add command line completion with argcomplete

- Include record name and value in validation error message

- Add header parameter on export data

- Enforce certificate validation for SMTP connection (issue11564)

- Use singleton for TableHandler

## Version 6.4.0 - 2022-05-02

- Bug fixes (see mercurial logs for details)

- Use unittest discover

- Add module tutorial

- Test all XML view and SVG icon files are used

- Add notification message

- Add validate_fields to ModelStorage

- Drop support for PyPy and psycopg2cffi

- Use a set for field’s depends

- Relax the constraint on a field’s depends

- Include only needed fields when fetching a view definition

- Make warning check re-entrant

- Manage DatabaseDataError in ModelSQL

- Remove support for pysqlite2

- Do not import empty One2Many data

- Deduplicate entries in domain inversion’s simplify

- Prevent to create and delete singleton

- Allow CORS on root path

- Allow button access to be deactivated

- Always return tuple for MultiSelection

- Use default selectors instead of select

- Add batch option to push queue tasks

- Support ref value for reference field

- Enforce ref model in XML data

- Do not resolve entities by default with lxml (issue11219)

- Use defusedxml to parse XML (issue11244)

- Use dictionary as search_order on Reference field

- Retry sending email on temporary failure

- Order not sorted Selection by index definition

- Add optional column on tree view

- Use dictionary as domain on Reference field

- Include model, field and column in import data error message

- Support limit and offset to ModelSQL count search and search_count

- Apply view inheritance to board

- Add RPC view_get method to View

- Apply view inheritance to all matching elements

- Limit board action domain to active id and ids

- Remove entropy check on password

- Set view_id in the context when calling view_attributes

- Add ip_address and device_cookie login method options

- Add support for Python 3.10

- Remove support for Python 3.6

- Add creatable attribute on tree and form views

- Fill local cache of Function field instances with values

- Cache Function field getter without context in readonly transactions

- Use expire delay instead of UTC datetime in reset password email

- Use RENAME and DROP COLUMN with SQLite backend

- Support window functions with SQLite backend

- Use JSONB to store Dict field on PostgreSQL backend

## Version 6.2.0 - 2021-11-01

- Bug fixes (see mercurial logs for details)

- Allow to cast to date with timezone

- Support create/delete attribute in view

- Skip default values when copying records

- Use local cache for relation fields in readonly transactions

- Add format method to DictSchemaMixin

- Allow modify record name on the reports

- Add methods to format number and symbol on Lang

- Add format number with symbol on Report

- Allow locking tables by calling ModelSQL.lock without records

- Add test on domain of relation fields

- Add stored path as alternative to MPTT

- Activate and upgrade modules from configuration wizard

- Add set_from_header in email tools

- Add grouping attribute to numeric widgets

- Ensure with a test that objects in the Pool have __slots__

- Use bigdecimal tag for XML-RPC

- Use tuple in Dict value instead of list

- Do not set record name on title of report get_email

- Add node to id of status

- Use ImmutableDict for Transaction context

- Use UNION for ‘Or’-ed domain with subqueries

- Add remove_forbidden_chars in tools

- Manage errors during non-interactive operations

- Add estimation count to ModelStorage

- Support empty digits in format_number of Report

- Add digits mixin

- Use argon2 or scrypt to hash password by default

- Allow PYSON Expression as key for PYSON In with dict object

- Add method to format warning name with records

- Add option to trytond-console to start a readonly transaction

- Add support for werkzeug 2.0

- Combine search and get_keys in DictSchemaMixin

- Make language code unique

- Support base64 encoded data in ModelStorage.import_data

- Add BOOL_AND and BOOL_OR to SQLite backend

## Version 6.0.0 - 2021-05-03

- Bug fixes (see mercurial logs for details)

- Allow column sql types to be tested from the table handler

- Add support for database connection parameters to configuration URI

- Use immutable datastructures for Dict and MultiSelection fields

- Skip warnings for non-interactive operations

- Check rule only if _check_access is set

- Add statistics to Cache

- Add support for avatars

- Add status command

- Add document widget on form view

- Add full text and similarity search and FullText field

- Add URL type to icon

- Use instance method to get next sequence value

- Store the sequence type directly on sequence

- Allow sending email with record’s attachments

- Add which records to use for actions

- Add parent to group to inherit accesses

- Add __access__ to Model

- Add route wrapper to allow null origin

- Add header grouping on report

- Protect trusted devices against brute force attack

- Make ModelView.parse_view public

- Add help for each value to selection and multiselection

- Use safe_join in SharedDataMiddlewareIndex (issue10068)

- Use menu name for window opened from menu

- Add trigonometric functions to sqlite backend

- Allow skipping user warnings globally

- Add validate option to trytond-admin

- Refresh pool of other processes

- Add clear_all method to Cache

- Support Genshi element directives in HTML editor

- Add firstline tool

- Add support for Python 3.9

- Skip access check on ModelStorage instances

- Eager load Function field with same multiple getter

- Support other methods for button_change decorator

- Allow copying Python instances of Model

- Add all buttons to default form view

- Unify PYSON string format

- Forbid all white spaces except space in Char field

## Version 5.8.0 - 2020-11-02

- Bug fixes (see mercurial logs for details)

- Remove support for Python 3.5

- Support import of timedelta data

- Add symbol widget

- Add sql_pairing tool

- Add format_datetime to Report

- Allow sharing view searches

- Allow overriding digits in Lang.currency and Report.format_currency

- Add record name in report filename

- Add deletable and writable state from ir.rule to read

- Add language attribute to data tag

- Add e-mail template

- Send e-mail on behalf of user

- Register mixins to generic Report class

- Cache in memory the report template instances

- Support Genshi’s MsgDirective in report

- Support PYSON comparison of date and datetime

- Add cron task to clean old queue tasks

- Add option to run cron once

- Add defaults option to route

- Add escape_wildcard in tools

- Add option to ensure emails are sent

- Allow keyword action for all models

- Add sortable_values in tools

- Remove default colors on graph and calendar

- Add model, record and records attributes on Wizard

- Check read access of wizard records

- Add cached_property in tools

- Use custom class to store record data

- Do not write to existing targets on xxx2Many add

- Add configuration check

- Add support for properties to fields.depends

- Allow combining authentication methods together

- Add context to export CSV route

## Version 5.6.0 - 2020-05-04

- Bug fixes (see mercurial logs for details)

- Call getter function when accessing Function field on unsaved record

- Add language configuration wizard

- Allow copying attachments and notes to created records

- Add link button on form

- Support explicit delete and remove for saving and on_change xxx2Many

- Add export_data_domain to ModelStorage

- Add route to export CSV data

- Add test on target of relation fields

- Add width and height attributes on calendar view

- Add default database name configuration

- Add retry option to report convert

- Add depends fields on view_attributes

- Simplify trigger action

- Run trigger in the queue

- Do not copy Binary content with file_id

- Replace memoize with functools.lru_cache

- Add support for Python 3.8

- Set all fields readonly for inactive record

- Enable check_access context when checking wizard access (issue9108)

- Add option to send test email with trytond-admin

- Add editable on calendar view

- Add xalign and yalign to group

- Add MultiSelection entry to Dict field

- Allow empty order clause

- Change editable tree attribute into boolean

- Send default order to clients

- Replace advisory lock by SKIP LOCKED in queue pulling

- Load WSGI middleware from configuration

- Add help text to Dict keys

- Update button_action with returned values

- Use direct access to backend classes

- Add weasyprint support

- Add slugify tool

- Add is_secure, host and http_host to url module

- Add __href__ to URLMixin

- Add validate attribute to wizard’s Button

- Return 400 instead of 500 for Tryton exception

- Fill the reverse field in the One2Many setter

- Drop support for skiptest attribute on xml files

- Remove implicit field names in ModelStorage.search_read

## Version 5.4.0 - 2019-11-04

- Bug fixes (see mercurial logs for details)

- Improve tests on depends

- Add permission groups on export

- Retry cron job on DatabaseOperationalError

- Add visual context on tree view

- Add start value to PYSON Date and DateTime

- Add MultiSelection field

- Support dot notation on PYSON Eval

- Add __slots__

- Pass app and request to wsgi error handlers

- Add lazy_gettext

- Add format_timedelta to Report

- Add partial TO_CHAR support for date and datetime on SQLite

- Setup default logging for WSGI app

- Add format argument to report format_date function

- Change expand attribute into a factor

- Allow SQL expression as value of fields

- Allow customizing Dict keys order with a sequence field

- Add invalid domain in DomainValidationError

- Add domain inversion tools

- Add get_relation_fields to DictSchemaMixin

- Add level on Model.fields_get to fill relation_fields

## Version 5.2.0 - 2019-05-06

- Bug fixes (see mercurial logs for details)

- Add sort and translate options to Reference field

- Do not create empty translations

- Replace dsn by params to connect to postgresql

- Simplify cron

- Add duration on Cache

- Add strip wildcards helpers

- Add list-form view

- Do not set id for on_change calls if cached

- Add cache on RPC

- Remove support for Python 3.4

- Allow to update record when importing data

- Set context on record instantiated by Field.__set__

- Set context when reading related fields

- Check read access on field in search order (issue8189)

- Add base64 converter to URL map

- Add HTML widget

- Support import of native numeric, date and datetime data

- Add day view on calendar

- Raise NotImplementedError when setting Function field without setter

- Add exports in view_toolbar_get

- Add resources method to ModelStorage

- Validate selection format in Dict schema

- Allow to extend Field’s string and help

- Add console

- Add Model.__names__ to retrieve model and field names

- Add size attribute on image tag

- Allow to use channel to synchronize Cache

- Display ids and rule names on access error

- Move field definition from Model to Field

- Use number of verbose flag as log level

- Add coroutine concurrency option

- Add increasing delay on database operational error retry

- Allows to lock records for update

- Remove _nocache on Transaction

- Make Cache transactional

- Allow to search on key’s value of Dict

- Allow to order Dict by key’s value

- Do not store keys with null value in Dict

- Add cache timeout for web

- Allow the bus requests to be redirected to another host

- Add support for CORS

- Add extras modules to ModuleTestCase

- Add timeout to Report.convert

- Allow records from XML with noupdate to be deleted

- Add ir.calendar for month and day

- Rename languages: hu_HU, it_IT and pt_BR into hu, it and pt

- Define custom exceptions

- Remove _error_messages, raise_user_error and raise_user_warning

- Remove ModelStorage._constraints

- Add ir.message

- Add check on ModelSQL for positive id

- New API to read related fields

- Remove implicit fields names in ModelStorage.read

- Check read access on field in search domain (issue7766)

- Add active field on ModelAccess, ModelFieldAccess and Group

- Use write mode by default to check create and delete of resources

## Version 5.0.0 - 2018-10-01

- Bug fixes (see mercurial logs for details)

- Allow non translatable reports

- Replace hard coded ‘state’ by ‘_transition_state’ in copy

- Support dotted notation in copy default

- Allow callable in copy default

- Add bus system

- Allow to set any default configuration value from environment

- Clear existing session when password is changed

- Manage session with max_age and timeout

- Use passlib to hash and update password

- Remove unique constraint on attachment name

- New icons

- Add pyson TimeDelta

- Remove button if it is not allowed to access some of its dependant fields

- Add support for Python 3.7

- Add transactional queue and workers

- Add __table_handler__ to ModelSQL

- Support partial index

- Allow to use SQL expression for index action

- Add cache clean timeout configuration

- Implicit conversion to boolean in PYSON statement

- Add domain to dictionary schema

- Fill main language in ir.configuration at database initialization

- Remove support for Python 2.7

- Check Rule also after modification

- Check Rule after indirect fields

- Allow to define view id in switch client action

- Do not validate Function fields even with setter

- Simplify the creation of dependencies graph

- Make depends on methods generic to any method

- Add width/height attribute to notebook

- Allow to call set_lang with None and language instance

- Add hostname configuration to list database

- Add tree mixin

- Rename “install-dependences” into “activate-dependencies”

- Use recursive common table expression for child_of/parent_of operators

- Add sql_cast on Field

## Version 4.8.0 - 2018-04-23

- Bug fixes (see mercurial logs for details)

- Add index method to order field set calls

- Add deactivable mixin

- Ensure active field is present on tree view

- Manage depends xml attribute on field tag

- Add expand attribute on group tag

- Add depends on Pool.register

- Add Exclude constraint

- Allow to perform unaccented searches on Char fields

- Always raise exception in table handler

- Simplify API for Session: new, remove, check and reset

- Ensure that all buttons are registered in ir.model.button

- Make trytond-admin ask for admin email

- Add option to set admin email with trytond-admin

- Add option to reset admin password with trytond-admin

- Add reset password button

- Add depends on Button

- Add ModelData.has_model cache for ModelStorage.check_xml_record

- Limit authentication attempt per IP network

- Manage ‘X-Forwarded’ headers from proxies

- Add ‘_request’ attribute to Transaction context

- Delete translations on deletion only when model has translatable field

- Remove MySQL backend

- Add keyword attribute to button tag

- Allow field name on image tag

- Remove unoconv and call soffice directly

- Allow to include mixin to pool objects

- Improve validation of PYSON domain

- Use JSON canonical form for Dict value

- Remove rules on user

- Add monetary formatting to language

- Add exceptional parent language

- Add get method on ir.lang

- Convert format, currency and strftime of ir.lang into instance methods

## Version 4.6.0 - 2017-10-30

- Bug fixes (see mercurial logs for details)

- Add support for Python 3.6

- Remove support for Python 3.3

- Move handling of sequences to the Database object

- Allow to add tests through entry points

- Add translated descriptor for Reference field

- Implement alter_type and alter_size for sqlite backend

- Add a maximum size for request

- Add support for single record report

- Add support for Flat OpenDocument

- Add get_email in trytond.report

- Replace plain extension by txt

- Support test database cache for remote postgresql

- Increase session randomness to 32 bytes

- Allow to specify datetime related values in XML files

- Add environment variables to wsgi script

- Add unique ids check on RPC

- Assert unique records on ModelView.button and Workflow.transition

- Add test for function field methods

- Add option install module dependencies with trytond-admin

- Add localhost_name and timeout as get_smtp_server uri parameters

- Delete missing modules not activated when updating module list

- Remove empty pages from notebook

- Allow to store Dict as JSON on the database

## Version 4.4.0 - 2017-05-01

- Bug fixes (see mercurial logs for details)

- Sanitize path in file_open against suffix (CVE-2017-0360)

- Add constraint on user password

- Remove Property field

- Add MultiValueMixin and ValueMixin

- Use sql type in column creation

- Use generic SQL type in field and let backend determine the SQLType

- Add filter to xxx2Many fields

- Add NULLS ordering

- Add context domain on ir.action.act_window

- Allow None limit in action window

- Add has_window_functions on Database

- Allow Many2One on ModelSQL to target ModelStorage

- Manage Cache in Transaction

- Allow to register multiple exit functions on Transaction

- Return 429 status when too many login attempts

- Add set_rpc on Field

- Add has_select_for on Database

- Store custom report translation in separate module

- Add form action keyword for set/synchronize translation on report and view

- Add negative value for col attribute

- Allow to use domain_<field name> method with Function fields

- Validate wizard definition on module tests

- Remove order constraint on register ModelSQL

- Add relate from report to translations

## Version 4.2.0 - 2016-11-28

- Bug fixes (see mercurial logs for details)

- Add toolbar attribute for richtext widget

- Add PYSON widget

- Allow to define the text color and background color in calendar view

- Allow to override cache implementation

- Add button rule

- Allow to specify translatable languages in trytond-admin

- Add datetime_field on Reference

- Merge Spanish’s into Spanish (Latin American)

- Do not check write access on model for wizard with groups

- Add user application

- Add sequence_ordered

- Remove most country specific code in languages

- Add support for derivative translations

- Remove IDENTIFIER regexp on ir.model and ir.model.field

- Enforce suffix and prefix to have id or name

- Sanitize path in file_open (CVE-2016-1242)

- Prevent read of user password hash (CVE-2016-1241)

- Add database dump cache for tests

- Remove unused tools: find_in_path, exec_command_pipe and mod10r

- Implementation of drop_column for SQLite

- Allow to pass many configuration files

- Remove translate on field name of User

- Allow to define the default mode in calendar view

- Use ‘default_rec_name’ context key in Model.default_get

- Add option to store Attachment in database

- Allow to store Binary field in filestore

- Add filestore module

- Allow None in Greater/Less PYSON

- Add option to set admin password with trytond-admin

- Remove super password

- Remove database management from RPC

- Remove ModelView.view_header_get

- Remove string attribute from views

- Don’t check write access on model for button with groups

- Limit readonly state for xxx2Many

- Add option to update modules list with trytond-admin

- Use home directory as default path for database and web root.

- Add count option on Action Window Domains

- Remove window_name on Action Window

- Return the calling keyword in ActionKeyword.get_keywords

- Add customizable login process

- Allow to customize the substitutions used on sequence

- Allow PYSON in tree_invisible attribute

## Version 4.0.0 - 2016-05-02

- Bug fixes (see mercurial logs for details)

- Add sendmail module to send transactional email

- Support Two-Phase Commit in Transaction

- Allow Report to generate text plain, XML, HTML and XHTML

- Add workflow graph on ir.model

- Add context model on ir.action.act_window

- Switch to WSGI API

- Limit the login size in LoginAttempt

- Remove LocalDict from tools

- Add LRUDictTransaction

- Follow PEP-0249 for Database, Transaction and Cursor

- Add Python3 support

- Make TestCase create and drop its database

- Add with_transaction decorator for tests

- Add note on resources

- Add ‘where’ operator for xxx2many fields

- Strip and unquote double-quote from Postgresql schema in search_path

- Move webdav into a separate module

- Don’t read historized user when evaluating record rules as it could lead to past privilege escalation.

- Only rebuild mptt tree if left or right values have their default values

- Allow nested inherited view

- Add button on cron to run once

- Check all fields when writing a sequence of records, values (CVE-2015-0861)

- Add view_ids on tree view

- Add parent_of operator

- Enforce type of inheriting view

- Use instance context in translated descriptor of Selection

## Version 3.8.0 - 2015-11-02

- Bug fixes (see mercurial logs for details)

- Add test for all field methods

- Load po files also in ‘override’ subdirectory

- Add support for float and integer on Property fields

- Remove foreign-key on create_uid and write_uid

- Prevent deletion of any user

- Manage PostgreSQL schema

- Remove colors attribute on tree view

- Remove style on Report

- Add StateReport to Wizard

- Allow to override ModelSQL._table

- Allow to import backend from entry points

- Add reversed operators to PYSON expressions

- Explicity raise error when creating/writing/deleting models with table_query

- Use CURRENT_TIMESTAMP instead of now

- Use Constraint instance in ModelSQL._sql_constraints

- Only return default record if no domain supplied on ModelSingleton search

- Rule.domain_get returns a domain and Rule.query_get a SQL query

- Add target_search option to Many2One

- Add tables argument to ModelSQL.search_domain

- Rename ir.module.module* into ir.module*

## Version 3.6.0 - 2015-04-20

- Bug fixes (see mercurial logs for details)

- Use bytes and bytearray for Binary

- Add button_change

- Add support for PyPy

- Add support for psycopg2cffi

- Add noeval on PYSONDecoder

- Add __repr__ to PYSON

- Remove safe_eval

- Add ModelView.view_attributes

- Add pyson attribute on data field tag

- Changed into JSON:

    - record rule domain

    - trigger condition

    - ‘states’, ‘domain’, ‘spell’ and ‘colors’ view attributes

    - view domain

    - ‘email’, ‘domain’, ‘context’, ‘order’ and ‘search_value’ action fields

- Add product attribute on form view for One2Many

- Remove float_time widget

- Add TimeDelta field

- search_global yields record instead of id

- Add ModelTestCase

- Add test for missing default model access

- Report API refactorization

- Add test for access rights of menu and actions

- Allow to use the dotted notation for order parameters

- Use action_id to find report to use

- Allow custom StateView without Model

- Remove Pool.object_name_list

- Add translated descriptor for Dict field

- Clean private context keyword in RPC

- Add cache section in configuration

- Use dualmethod on ModelStorage.save

- New API for on_change: instance changes

- Add restore_history_before on ModelSQL

- Remove img_{width,height} form attributes

## Version 3.4.0 - 2014-10-20

- Bug fixes (see mercurial logs for details)

- Use literal_eval instead of safe_eval (CVE-2014-6633)

- Prevent double underscore in safe_eval (CVE-2014-6633)

- Add pre-validation on button

- Model and Field access checked only if _check_access is set

- Add check_access to RPC

- Add check_access to Wizard and Report

- Add support for domain_<field name> method

- Refactor configuration file and command line

- Use the context of the relation field for instanciation

- Use a configuration field for logging

- Add translated descriptor for Selection field

- Add tree_state attribute on tree view

- Allow to sync XML data

- Remove on_change calls in Model.default_get

- Add group call to on_change

- Add UnionMixin

- Allow to disable sorting of dictionary field’s selection

- Add active field to views of action window

- Make global cache depends on explicit context keys

- Don’t add to global cache Binary fields

- Add MatchMixin

- Add image widget to tree

- Remove context, current_date and time from record rule evaluation

## Version 3.2.0 - 2014-04-21

- Bug fixes (see mercurial logs for details)

- Add restore_history to ModelSQL

- Add history revisions

- Add the multi selection widget

- Add index to one2many’s on_change

- Remove auto-refresh on Action Window

- Add support of domain for non-relation field

- Manage microseconds in JSON-RPC and XML-RPC

- Remove Sha field

- Add password widget

- Add Len to PYSON

- Use bcrypt to hash password if possible

- Use a sequence of ids, values to set fields

- Client side actions on button and wizard

- Add depends attribute to data tag

- Add tree_invisible attribute to button in tree view

- Drop support of Python 2.6

- Deprecate on_change, on_change_with, selection_change_with and autocomplete field arguments

- Add fields.depends decorator

- Add run-tests

- Validate only modified and dependant fields on model write

- Improve error messages by showing the failing value

- Remove relation field actions:

    - delete_all

    - unlink_all

    - set

- Rename relation field action unlink into remove

- Use a sequence of records, values in write

- set_context of Transaction.set_user is restricted to root

- Add a “copy” action to One2Many and Many2Many’s set method

- Force UTC as timezone (migration script available on tryton-tools)

- Add relation_field for many2one

## Version 3.0.0 - 2013-10-21

- Bug fixes (see mercurial logs for details)

- Allow customization of translation in po files

- Use python-sql

- Add convert_domain method on Fields

- Add sql_format and sql_type methods on Fields

- Allow to return a full domain for Function.searcher

- Replace static backend by dynamic get method

- Replace order_field by order_<field name> method

- Allow field One2One in check_recursion

- Remove the default order on MPTT

- Add grouped attribute to data tag

- Store selection tree state

- Add order to Action Window

- Add factor on number fields

- Add calendar view

- Remove request

## Version 2.8.0 - 2013-04-22

- Bug fixes (see mercurial logs for details)

- Allow to search on target of Reference field

- Remove _inherits

- Add dynamic label

- Add prefix, suffix on tree view

- Replace _constraints with validate in ModelStorage

- Add selection_change_with on Selection and Reference fields

- Add Dict fields

- Remove unique constraint on model and field access

- Use lists of values in create

- (Field, Operator, Operand) are replaced by Domain on Rule

- Add global search

- Replace view shortcut by menu favorite

- Store default language in database

- Add icon attribute on fields

- Prevent Wizard State name to start with ‘_’

- Add completion attribute for Many2One, Many2Many and One2Many

- Add ViewSearch

- Add domains on Action Window

## Version 2.6.0 - 2012-10-22

- Bug fixes (see mercurial logs for details)

- Add pre-validation

- Allow to use XML file for views

- Add RPC definition

- Repace BrowseRecord by Model instance

- Replace Cache decorator by a simple LRU Cache

- Remove Cacheable

- Remove _description

- Rename _name by __name__

- Use class in Pool

- Fix search button clause in ModelButton.get_groups (CVE-2012-2238)

- Merge all kind of buttons

- Use XML id for board action instead of id

- Add states attribute to notebook

- Allow to use tuple for Reference

- Add constant interpolation on line graph

- Add create/delete field access

- Add dynamic size limit on the One2Many, Many2Many and Char

- Replace __tryton__.py by tryton.cfg

- Allow to use Reference field in One2Many & Many2Many

- Remove hexmd5 from ModelView.fields_view_get

- Allow client to manage model access

- Add time format validation

- Remove ModelSQL.default_sequence

## Version 2.4.0 - 2012-04-23

- Bug fixes (see mercurial logs for details)

- Don’t allow rpc call on ModelStorage without ModelView (CVE-2012-0215)

- Add shared WebDAV

- Remove workflow module

- Simplify workflow engine

- Add ir.model.button for access rights

- Replace fill by expand

- Integer, Numeric and Float allow None as value

- NULL value is None and not False

- Replace user action by a list of actions

- Add group call to on_change_with

- Allow to get fuzzy translation

- Allow to customize server timezone

- Add richtext widget for WYSIWYG editor

- Add support of fields.Time

- Replace nested view by reference id

- Remove underscore to ir.translation methods

- Add default database language code

- Add extras_depend to module definition

- Store session in database

- New Wizard design

- Add pyson.Id

- Use XML-RPC struct for Decimal and Date

- Remove change_default on fields

## Version 2.2.0 - 2011-10-24

- Bug fixes (see mercurial logs for details)

- Remove name field in ir.property

- Add wizard to show views

- Switched from .csv to .po for translations

- Search on Many2One fields include inactive records

- Change select on fields into Boolean

- Change format of search_value on ir.action.act_window

- Manage relation field access

- Support size format in context for Binary fields

- Use buffer for Binary fields

- No more store Binary fields in base64

- Remove tabpos attribute on notebook

- Make PYSON more Pythonic

- Add readonly on Transaction

- Add has_returning on Cursor

- Remove use of python code in workflow XML

- Use SQL sequence on PostgreSQL for ir.sequence

- Allow to specify more than one interface

- Use unoconv for report format conversion

- Allow to use any Opendocument as report template

- Drop NetRPC and activate JSON-RPC by default

- Remove ir.action.wizard_size

- Rename expand and fill attributes into yexpand and yfill

- Add xalign and yalign as field attributes

- Drop support of Python 2.5

- Remove support of Many2Many field in record XML

- Change Pool into a Singleton

- Remove support of zipped modules

## Version 2.0.0 - 2011-04-26

- Bug fixes (see mercurial logs for details)

- Use md5 hash for indexing translation

- Merge tree and list views

- Added autocompletion on fields.Char

- Remove ir.default

- Add type, last user and last modification on ir.attachment

- Rename datas into data on ir.attachment

- Add new configuration option to prevent database listing

- Add warning to wizards

- Add server-side icons

- Add support for file link to BinaryField

- Add model field access

- Add loading attribute on fields

- Remove priority attribute on fields

- Model doesn’t convert anymore ids for inherited methods

- Remove required attribute on Boolean fields

- Add One2One field

- Add AUTOINCREMENT to sqlite primary key

## Version 1.8.0 - 2010-11-01

- Bug fixes (see mercurial logs for details)

- Add timestamp sequence

- New transaction management

- Make _timestamp numeric instead of datetime to work with XML-RPC and JSON-RPC

- Add ir.trigger to trigger ModelStorage change

- Add default value to Boolean fields at database level

## Version 1.6.0 - 2010-05-08

- Bug fixes (see mercurial logs for details)

- Add symbol parameter to formatLang

- searcher on Function fields take only one domain clause as argument

- Use a Reference field on ir.attachment to store resource informations Improve the ir.attachment views to be usable on the client side

- Use basic access authentication for XML-RPC

- Replace child{1,2} attributes in xml views by a unique child

- Models that uses _inherits will search in inherited parents for missing functions

- Remove ids from on_change* calls

- Improve search on translatable fields

- export_data return empty value for invisible fields

- Don’t allow to use float in Numeric fields

- set/get function on Fields take a list of ids

- New interface for Function/Property fields Take a Field as first argument instead of many separate arguments Remove static arguments

- Fix Float and Numeric for lost of precision

- Add decimal digits validation on fields

- Improve unittests to run trytond from tests Use sqlite as default backend Add skiptest attribute to data tag Add option to test_tryton to run tests from all modules

- Add MySQL backend

- Refactoring by validation with pylint

- Modify ondelete attribute of Many2One according to required attribute value

- Refactor import_data of ModelStorage

- Raise exception when search function is missing on Function fields

- Add LRU memoization, use it to cache compiled code for safe_eval.

- Add PySON to replace python string evaluation on client side

- Add JSON-RPC

- Add groups on Sequence Types and add rules on sequence based on it.

- Ignore Fields that starts with “_”

- Add comment on table and field for postgresql backend

- Remove egenix-mx-base and replace it by python-dateutil

- Add cache to safe_eval

- Rename HttpDaemon into XMLRPCDaemon

- Improve TranslateFactory to fetch all translations for a report in one query

- Handle displayname on webdav.collection

- Handle current-user-privilege-set on webdav.collection

## Version 1.4.0 - 2009-10-19

- Bug fixes (see mercurial logs for details)

- Add datetime_field on xxx2Many to use a specific _datetime when reading the related record

- Add new tool safe_eval

- Handle sequence and history renaming when renaming table

- Add old_password to set_preferences of res.user on password change

- Allow to drop constraint, index and foreign key with custom table name

- Added column_rename on TableHandler

- Add new tool reduce_ids

- Add limit_clause function on cursor

- Fill the cursor cache at search

- Allow rpc on today of ir.date

- Use the module dependency order to apply views that inherits

- Allow to update database at the end of restore

- Add ir.model.access check get and set of ir.property

- Add ModelSingleton

- Move login test in res.user

- Rename osv into model on workflow

- Add logout method

- Move BrowseRecord cache onto the cursor except for Function fields

- Don’t order search result if order value is []

- Add reload of modules if files have changed

- Add salt to sha of password

- Add strftime to ir.lang to handle locale’s format

- Add sqlite backend

- Add validate test for required and size

- Remove _sequence on ModelSQL

- Use gzip in pysocket

- Add gzip encoding for XML-RPC

- Add report name in the result of Report.execute

- Add ir.action.wizard_size to store prefered wizard size

- Add delete_all action on One2Many field

- Read, write, create, delete permission on record rules

- Add reset_default method to ir.default

- Doesn’t append ‘%’ to “like”, “ilike” clauses

- Handle database dump and restore with password

- Add float_time attribute in fields view

## Version 1.2.0 - 2009-04-20

- Bug fixes (see mercurial logs for details)

- Add delete of foreign keys with ondelete CASCADE

- Add write for foreign keys with ondelete SET NULL

- Add datetime_field on Many2One to use a specific _datetime when reading the related record

- Use _datetime in context to read record value at specific datetime

- Add _history_table on ModelSQL to historize change on records

- Allow to use related fields (many2one and reference) in read

- Use rec_name function field instead of name_get and name_search

- Use a new Pool for objects

- Move workflow in ModelWorkflow and the workflow module

- Remove Service and LocalService objects

- New netrpc/xmlrpc syntax

- copy on ModelStorage copies one2many directly on the right record

- Search on translated field will search only on translated value

- Add active field on ir.action to allow better override of reports

- Add depends attributes on Column

- Make Modified Preorder Tree Traversal respects the default order of the model

- Add replace_attributes for xpath tag

- Add email parameter on report action

- Allow to inherit views from an other model

- Add user warnings

- Allow to use a list of id for copy method

- Use one lock per database

- Improve netrpc communication speed

- Add contextual domain on inherited views

- Allow to use globals in domain and states

- Add translate attribute on Selection field

- Use explicit join in search SQL query

- Fix for host with IPv6 enable but without default IPv6 route

- Allow egg installation

## Version 1.0.0 - 2008-11-17

- Initial release