reviewboard.changedescs.models - Change Descriptions Database Models¶
Module Contents¶
- class reviewboard.changedescs.models.ChangeDescription(*args, **kwargs)¶
The recorded set of changes, containing optional description text and fields that have changed.
This is a general model that can be used in applications for recording changes how they see fit. A helper function, ‘record_field_changed’, can be used to record information in a standard way for most value types, but the ‘fields_changed’ dictionary can be manipulated however the caller chooses.
A ChangeDescription is not bound to a particular model. It is up to models to establish relationships with a ChangeDescription.
Each field in ‘fields_changed’ represents a changed field.
For string fields, the following fields will be available:
- ‘old’: The old value of the field
- ‘new’: The new value of the field
For list and set fields, the following fields will be available:
- ‘removed’: The fields that were removed, if any.
- ‘added’: The fields that were added, if any.
- record_field_change(field, old_value, new_value, name_field=None)¶
Records a field change.
This will encode field changes following the rules in the overlying ‘ChangeDescription’ documentation.
‘name_field’ can be specified for lists or other iterables. When specified, each list item will be a tuple in the form of (object_name, object_url, object_id). Otherwise, it will be a tuple in the form of (item,).
It is generally expected that fields with lists of model objects will have ‘name_field’ set, whereas lists of numbers or some other value type will not. Specifying a ‘name_field’ for non-objects will cause an AttributeError.