function log_version_event
A convenience wrapper function that logs audit events specifically for document version operations by delegating to a generic log_event function with the resource_type fixed as 'DocumentVersion'.
/tf/active/vicechatdev/CDocs/utils/audit_trail.py
851 - 873
simple
Purpose
This function provides a specialized interface for logging audit trail events related to document versions in a document management system. It simplifies the logging process by automatically setting the resource type to 'DocumentVersion' and forwarding all parameters to the underlying log_event function. This is useful for tracking version-related activities such as creation, updates, deletions, or access events for document versions.
Source Code
def log_version_event(event_type: str,
user: Union[DocUser, str],
version_uid: str,
details: Optional[Dict[str, Any]] = None) -> Optional[str]:
"""
Log a document version event.
Args:
event_type: Type of event from EVENT_TYPES
user: User who performed the action or their UID
version_uid: UID of document version
details: Additional details about the event
Returns:
UID of the created audit event or None if creation failed
"""
return log_event(
event_type=event_type,
user=user,
resource_uid=version_uid,
resource_type='DocumentVersion',
details=details
)
Parameters
| Name | Type | Default | Kind |
|---|---|---|---|
event_type |
str | - | positional_or_keyword |
user |
Union[DocUser, str] | - | positional_or_keyword |
version_uid |
str | - | positional_or_keyword |
details |
Optional[Dict[str, Any]] | None | positional_or_keyword |
Parameter Details
event_type: A string representing the type of event being logged. Must be a valid value from EVENT_TYPES (not shown in code but referenced in docstring). Examples might include 'created', 'updated', 'deleted', 'accessed', etc.
user: The user who performed the action. Can be either a DocUser object (a user model from the CDocs system) or a string representing the user's UID. This flexibility allows for logging events when you have either the full user object or just the identifier.
version_uid: A string containing the unique identifier (UID) of the document version that this event relates to. This is used as the resource_uid in the underlying log_event call.
details: An optional dictionary containing additional contextual information about the event. Can include any key-value pairs relevant to the specific event being logged. Defaults to None if no additional details are needed.
Return Value
Type: Optional[str]
Returns an Optional[str] which is either the UID (unique identifier) of the newly created audit event record as a string if the logging was successful, or None if the audit event creation failed for any reason (e.g., database error, validation failure).
Dependencies
CDocstyping
Required Imports
from typing import Dict, Any, Optional, Union
from CDocs.models.user_extensions import DocUser
Usage Example
from typing import Dict, Any, Optional, Union
from CDocs.models.user_extensions import DocUser
# Assuming log_event is defined in the same module
# Example 1: Log a version creation event with a DocUser object
user = DocUser(uid='user123', name='John Doe')
event_uid = log_version_event(
event_type='version_created',
user=user,
version_uid='version_abc123',
details={'file_size': 1024, 'format': 'pdf'}
)
if event_uid:
print(f'Event logged with UID: {event_uid}')
# Example 2: Log a version access event with just a user UID
event_uid = log_version_event(
event_type='version_accessed',
user='user456',
version_uid='version_xyz789',
details={'access_method': 'download', 'ip_address': '192.168.1.1'}
)
# Example 3: Log a simple event without additional details
event_uid = log_version_event(
event_type='version_deleted',
user='user789',
version_uid='version_def456'
)
Best Practices
- Always provide valid event_type values that exist in the EVENT_TYPES constant to ensure consistency across the audit trail
- Include meaningful details in the details parameter to provide context for future audit reviews
- Check the return value to verify that the event was successfully logged before proceeding with critical operations
- Use DocUser objects when available for richer audit information, but user UIDs are acceptable when the full object is not accessible
- Ensure the version_uid corresponds to an actual document version in the system to maintain referential integrity
- Consider wrapping calls to this function in try-except blocks if database connectivity issues are a concern
- This function depends on log_event being defined in the same module - ensure that dependency is available
Tags
Similar Components
AI-powered semantic similarity - components with related functionality:
-
function log_document_lifecycle_event 81.7% similar
-
function log_event 77.4% similar
-
function log_review_event 75.3% similar
-
function log_approval_event 74.5% similar
-
function log_training_event 71.2% similar