atomica.migration.register_migration¶
- atomica.migration.register_migration(registry, classname, original_version, new_version, description, date=None, update_required=False)[source]¶
Decorator to register migration functions
This decorator constructs a Migration object from a decorated migration function, and registers it in the module’s list of migrations to be run when calling migrate()
- Parameters:
registry – Dictionary storing {classname:[migrations]}
original_version – Version string for the start version. Function will only run on projects whose version is <= this
new_version – The resulting project is assigned this version
description – A brief overview of the purpose of this migration
date – Optionally specify the date when this migration was written
update_required – Optionally flag that changes to model output may occur - the flag is stored in the object’s _update_required attribute. Objects can optionally contain this attribute, so it’s not necessary if the object is planned not to require such a flag.
- Returns:
None
Example usage:
@migration('Project','1.0.0', '1.0.1', 'Upgrade project', update_required=True) def _update_project(proj): ... return proj
The migration function (update_project()) takes a single argument which is a project object, and returns a project object. Decorating the function registers the migration and it will automatically be used by migrate() and therefore Project.load()