49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
"""Database operations for MediaAsset."""
|
|
|
|
from typing import Optional
|
|
from uuid import UUID
|
|
|
|
|
|
def list_assets(status: Optional[str] = None, search: Optional[str] = None):
|
|
from admin.mpr.media_assets.models import MediaAsset
|
|
|
|
qs = MediaAsset.objects.all()
|
|
if status:
|
|
qs = qs.filter(status=status)
|
|
if search:
|
|
qs = qs.filter(filename__icontains=search)
|
|
return list(qs)
|
|
|
|
|
|
def get_asset(id: UUID):
|
|
from admin.mpr.media_assets.models import MediaAsset
|
|
|
|
return MediaAsset.objects.get(id=id)
|
|
|
|
|
|
def get_asset_filenames() -> set[str]:
|
|
from admin.mpr.media_assets.models import MediaAsset
|
|
|
|
return set(MediaAsset.objects.values_list("filename", flat=True))
|
|
|
|
|
|
def create_asset(*, filename: str, file_path: str, file_size: int):
|
|
from admin.mpr.media_assets.models import MediaAsset
|
|
|
|
return MediaAsset.objects.create(
|
|
filename=filename,
|
|
file_path=file_path,
|
|
file_size=file_size,
|
|
)
|
|
|
|
|
|
def update_asset(asset, **fields):
|
|
for key, value in fields.items():
|
|
setattr(asset, key, value)
|
|
asset.save(update_fields=list(fields.keys()))
|
|
return asset
|
|
|
|
|
|
def delete_asset(asset):
|
|
asset.delete()
|