mirror of
https://github.com/suitenumerique/meet.git
synced 2026-08-10 10:47:20 +00:00
dc278a6064
For the coming features we will need to store files on the meet side. (for instance user backgrounds). This commits adds a new Model to manage files, and the associated serializers & viewsets. All are tested. This work was heavily inspired by the work done by our friends at https://github.com/suitenumerique/drive It build on the same architecture design (upload directly to S3 but download goes through our proxy), but model is much much simplier (no folders, no file sharing, etc.).
37 lines
846 B
Python
37 lines
846 B
Python
"""
|
|
Tasks related to files.
|
|
"""
|
|
|
|
import logging
|
|
|
|
from django.core.files.storage import default_storage
|
|
|
|
from core.models import File
|
|
from core.tasks._task import task
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@task
|
|
def process_file_deletion(file_id):
|
|
"""
|
|
Process the deletion of a file.
|
|
Definitely delete it in the database.
|
|
Delete the files from the storage.
|
|
"""
|
|
logger.info("Processing item deletion for %s", file_id)
|
|
try:
|
|
file = File.objects.get(id=file_id)
|
|
except File.DoesNotExist:
|
|
logger.error("Item %s does not exist", file_id)
|
|
return
|
|
|
|
if file.hard_deleted_at is None:
|
|
logger.error("To process an item deletion, it must be hard deleted first.")
|
|
return
|
|
|
|
logger.info("Deleting file %s", file.file_key)
|
|
default_storage.delete(file.file_key)
|
|
|
|
file.delete()
|