ObjDocumentUserFile manages user-uploaded files with user-specific permissions, quotas, and access controls.
Module: factory.core/ObjDocumentUserFile.py
Inherits from: ObjDocument.ObjDocument
Database table: def_user_file
| Field | Type | Description |
|---|---|---|
| FileGuid | VARCHAR | Unique file identifier |
| UserGuid | VARCHAR | Owner user ID |
| Filename | VARCHAR | Original filename |
| FilePath | VARCHAR | Storage path |
| FileSize | BIGINT | Size in bytes |
| MimeType | VARCHAR | File MIME type |
| UploadedAt | DATETIME | Upload timestamp |
| SharedWith | JSON | Sharing permissions |
| Tags | JSON | User-defined tags |
from ObjDocumentUserFile import ObjDocumentUserFile
# Create instance
user_files = ObjDocumentUserFile()
# Upload file for user
file_guid = user_files.upload_user_file(
user_guid="user-123",
filepath="/path/to/file.pdf",
filename="my_document.pdf",
tags=["personal", "important"]
)
# Check quota
usage = user_files.get_user_storage_usage("user-123")
quota = user_files.get_user_quota("user-123")
if usage['bytes'] < quota['bytes']:
print("Upload allowed")
else:
print("Quota exceeded")
# Get user's files
files = user_files.list_user_files(
user_guid="user-123",
tags=["important"],
limit=20
)
# Download user file
content = user_files.download_user_file(
file_guid=file_guid,
user_guid="user-123" # Verifies ownership
)
# Delete user file
user_files.delete_user_file(
file_guid=file_guid,
user_guid="user-123"
)
# Share file with another user
user_files.share_file(
file_guid=file_guid,
owner_guid="user-123",
share_with_guid="user-456",
permissions=["read", "download"]
)
# Get shared files
shared = user_files.get_shared_files("user-456")
# Revoke sharing
user_files.revoke_sharing(
file_guid=file_guid,
user_guid="user-456"
)
# Get storage statistics
stats = user_files.get_storage_stats("user-123")
print(f"Total files: {stats['file_count']}")
print(f"Total size: {stats['total_bytes']} bytes")
print(f"Quota usage: {stats['quota_percentage']}%")
# Clean up old files
deleted_count = user_files.cleanup_old_files(
user_guid="user-123",
older_than_days=365
)
Quotas configured in config.yaml:
user_files:
default_quota_mb: 1024 # 1GB
max_file_size_mb: 100
max_files_per_user: 1000
ObjDocument.py - Base document operationsObjPerson.py - User managementObjDocumentStore.py - Storage backend