Get Revisions
-
Using the Advanced Session methods you can retrieve revisions and their metadata
from the database for the specified document. -
These methods can also be executed lazily, see get revisions lazily.
-
In this page:
Get all revisions
Use get_for
to retrieve all of the revisions currently kept for the specified document.
- Example:
# Get revisions for document 'orders/1-A' # Revisions will be ordered by most recent revision first order_revisions = session.advanced.revisions.get_for("orders/1-A", Order, 0, 10)
-
Syntax:
def get_for(self, id_: str, object_type: Type[_T] = None, start: int = 0, page_size: int = 25) -> List[_T]: ...
Parameters Type Description id_ str
Document ID for which to retrieve revisions object_type Type[_T]
The type of the object whose revisions we want to retrieve start int
First revision to retrieve, used for paging page_size int
Number of revisions to retrieve per results page
Get revisions metadata
Use get_metadata_for
to retrieve the metadata for all the revisions currently kept for the specified document.
- Example:
# Get 'revisions' metadata for document 'orders/1-A' order_revisions_metadata = session.advanced.revisions.get_metadata_for("orders/1-A", 0, 10) # Each item returned is a revision's metadata, as can be verified in the @flags key metadata = order_revisions_metadata[0] flags_value = metadata[constants.Documents.Metadata.FLAGS] self.assertIn("Revision", flags_value)
-
Syntax:
def get_metadata_for(self, id_: str, start: int = 0, page_size: int = 25) -> List["MetadataAsDictionary"]: ...
Parameters Type Description id_ str
Document ID for which to retrieve revisions' metadata start int
First revision to retrieve metadata for, used for paging page_size int
Number of revisions to retrieve per results page
Get revisions by creation time
Use get_by_before_date
to retrieve a revision by its creation time.
- Example:
# Get a revision by its creation time revision_from_last_year = ( session.advanced.revisions # If no revision was created at the specified time, # then the first revision that precedes it will be returned .get_by_before_date("orders/1-A", datetime.datetime.utcnow() - datetime.timedelta(days=365)) )
-
Syntax:
def get_by_before_date(self, id_: str, before_date: datetime.datetime, object_type: Type[_T] = None) -> _T: ...
Parameter Type Description id_ str
The ID of the document whose revisions we want to retrieve by creation time before_date datetime.datetime
Revision creation time object_type Type[_T]
The type of the object whose revisions we want to retrieve
Get revisions by change vector
To retrieve a revision or multiple revisions by change vectors, get the
change vector using get_metadata_for
and the revisions using get_by_change_vector
.
- Example:
# Get revisions metadata revisions_metadata = session.advanced.revisions.get_metadata_for("orders/1-A", 0, 25) # Get the change-vector from the metadata change_vector = revisions_metadata[0][constants.Documents.Metadata.CHANGE_VECTOR] # Get the revision by its change-vector revision = session.advanced.revisions.get_by_change_vector(change_vector, Order)
-
Syntax:
# Get a revision by its change vector def get_by_change_vector(self, change_vector: str, object_type: Type[_T] = None) -> _T: ... # Get multiple revisions by their change vectors def get_by_change_vectors(self, change_vectors: List[str], object_type: Type[_T] = None) -> Dict[str, _T]: ...
Parameter Type Description change_vectors List[str]
A list of change vector strings object_type Type[_T]
The types of the objects whose revisions we want to retrieve