ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: подтверждение файловых загрузок через внутренний storage
This commit is contained in:
@@ -41,6 +41,10 @@ def _object_key(asset: FileAsset) -> str:
|
||||
return str(asset.asset.name or asset.asset)
|
||||
|
||||
|
||||
def _server_storage(request=None) -> S3Storage:
|
||||
return S3Storage(request=request, is_server=True)
|
||||
|
||||
|
||||
def _get_object_metadata(storage: S3Storage, object_key: str) -> dict:
|
||||
metadata = storage.get_object_metadata(object_name=object_key)
|
||||
if not metadata:
|
||||
@@ -95,7 +99,7 @@ def finalize_uploaded_file_asset(asset: FileAsset, request=None) -> FileBlobFina
|
||||
if not asset.workspace_id:
|
||||
raise ValueError("FileAsset workspace is required for blob deduplication.")
|
||||
|
||||
storage = S3Storage(request=request)
|
||||
storage = _server_storage(request=request)
|
||||
candidate_key = _object_key(asset)
|
||||
candidate_metadata = _get_object_metadata(storage, candidate_key)
|
||||
candidate_sha256 = _calculate_object_sha256(storage, candidate_key)
|
||||
@@ -217,7 +221,7 @@ def confirm_uploaded_file_asset(asset: FileAsset, request=None, attributes: dict
|
||||
if supports_blob_dedup(asset):
|
||||
return finalize_uploaded_file_asset(asset, request=request).asset
|
||||
|
||||
storage = S3Storage(request=request)
|
||||
storage = _server_storage(request=request)
|
||||
asset.storage_metadata = storage.get_object_metadata(object_name=_object_key(asset)) or asset.storage_metadata
|
||||
asset.is_uploaded = True
|
||||
asset.save(update_fields=["storage_metadata", "is_uploaded", "updated_at"])
|
||||
@@ -237,12 +241,12 @@ def release_file_asset_blob(
|
||||
them as temporary/untracked.
|
||||
"""
|
||||
|
||||
storage = S3Storage(request=request)
|
||||
storage = _server_storage(request=request)
|
||||
delete_object_key = None
|
||||
had_blob = False
|
||||
|
||||
with transaction.atomic():
|
||||
locked_asset = FileAsset.objects.select_for_update().get(pk=asset.pk)
|
||||
locked_asset = FileAsset.all_objects.select_for_update().get(pk=asset.pk)
|
||||
current_key = _object_key(locked_asset)
|
||||
|
||||
if locked_asset.blob_id:
|
||||
|
||||
Reference in New Issue
Block a user