function log_approval_event
A convenience wrapper function that logs approval-related events by delegating to a generic log_event function with the resource_type fixed as 'Approval'.
/tf/active/vicechatdev/CDocs/utils/audit_trail.py
899 - 921
simple
Purpose
This function provides a specialized interface for logging audit trail events specifically related to approval workflows. It simplifies the logging of approval events by automatically setting the resource_type to 'Approval' and forwarding all other parameters to the underlying log_event function. This is useful for tracking approval actions such as creation, modification, submission, or deletion of approval records in a document management system.
Source Code
def log_approval_event(event_type: str,
user: Union[DocUser, str],
approval_uid: str,
details: Optional[Dict[str, Any]] = None) -> Optional[str]:
"""
Log an approval event.
Args:
event_type: Type of event from EVENT_TYPES
user: User who performed the action or their UID
approval_uid: UID of approval
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=approval_uid,
resource_type='Approval',
details=details
)
Parameters
| Name | Type | Default | Kind |
|---|---|---|---|
event_type |
str | - | positional_or_keyword |
user |
Union[DocUser, str] | - | positional_or_keyword |
approval_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. Should be one of the predefined values from EVENT_TYPES constant (not shown in code but referenced in docstring). Examples might include 'created', 'updated', 'submitted', 'approved', 'rejected', etc.
user: The user who performed the approval action. Can be either a DocUser object (a custom 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.
approval_uid: A string containing the unique identifier (UID) of the approval record being logged. This links the audit event to the specific approval resource in the database.
details: An optional dictionary containing additional contextual information about the event. Can include any key-value pairs relevant to the specific event type, such as changed fields, reasons for actions, timestamps, or other metadata. Defaults to None if not provided.
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 event creation failed for any reason (database error, validation failure, etc.).
Dependencies
logginguuidtypingdatetimejsonCDocs
Required Imports
from typing import Dict, Any, Optional, Union
from CDocs.models.user_extensions import DocUser
Usage Example
from CDocs.models.user_extensions import DocUser
from typing import Dict, Any
# Example 1: Log approval creation with DocUser object
user = DocUser.get_by_uid('user_123')
event_uid = log_approval_event(
event_type='created',
user=user,
approval_uid='approval_456',
details={'status': 'pending', 'priority': 'high'}
)
if event_uid:
print(f'Logged approval creation event: {event_uid}')
# Example 2: Log approval submission with user UID string
event_uid = log_approval_event(
event_type='submitted',
user='user_789',
approval_uid='approval_456',
details={'submitted_at': '2023-10-15T10:30:00Z', 'comment': 'Ready for review'}
)
# Example 3: Log approval without additional details
event_uid = log_approval_event(
event_type='approved',
user='user_123',
approval_uid='approval_456'
)
Best Practices
- Always use valid event_type values from the EVENT_TYPES constant to ensure consistency in audit logs
- Check the return value to verify that the event was successfully logged before proceeding with critical operations
- Include meaningful details in the details parameter to provide context for future audit reviews
- Use DocUser objects when available for richer user information in audit trails, but user UID strings are acceptable when the full object is not accessible
- Ensure the approval_uid corresponds to an existing approval record in the database
- Consider wrapping calls in try-except blocks if the underlying log_event function may raise exceptions
- Use this function consistently for all approval-related events to maintain a complete audit trail
Tags
Similar Components
AI-powered semantic similarity - components with related functionality:
-
function log_review_event 78.8% similar
-
function log_version_event 74.5% similar
-
function log_document_lifecycle_event 73.7% similar
-
function log_event 72.2% similar
-
function log_training_event 70.5% similar