memento
Classes to interface with the Memento model, which tracks modification
of changes.
This module contains the memento_types variable, which is a list of different
types of changes that can be tracked. Add elements to this list to add custom
tracking of changes
-
class camelot.core.memento.SqlMemento(memento_types=[(1, 'before_update'), (2, 'before_delete'), (3, 'create')])[source]
Default Memento system, which uses camelot.model.memento.Memento
to track changes into a database table. The tracking of changes happens
outside the session, but using the same connection as the session.
Reimplement this class to create a custom system to track changes.
This Memento system can only track objects with an integer primary key.
That means the primary_key tuple can only contain a single integer
value.
Parameters: | memento_types – a list with all types of changes that can be tracked
and their identifier used to store them |
-
get_changes(model, primary_key, current_attributes, from_datetime=datetime.datetime(2000, 1, 1, 0, 0), depth={})[source]
Query the memento system for changes made to an object.
Parameters: |
- model – a string with the name of the model
- primary_key – a tuple with the primary key of the changed object
- current_attributes – a dict with the current state of the
attributes of the object, this is used to reconstruct the changes.
- from_datetime – the datetime upto which the changes should be
reconstructed.
- depth – reserved for future usage to query the history of
object trees.
|
Returns: | generator of change_object tuples in reverse order, meaning the
last change will be first generated.
|
-
register_changes(memento_changes)[source]
Create rows in the memento table
:param memento_changes: an iterator over memento_change tuples that
need to be stored in the memento table.
-
class camelot.core.memento.memento_change
memento_change(model, primary_key, previous_attributes, memento_type)
-
memento_type
Alias for field number 3
-
model
Alias for field number 0
-
previous_attributes
Alias for field number 2
-
primary_key
Alias for field number 1