diff --git a/apps/organization/serializers.py b/apps/organization/serializers.py index af235a1..3174db9 100644 --- a/apps/organization/serializers.py +++ b/apps/organization/serializers.py @@ -1,3 +1,7 @@ +from common.apps.upload_file.service import get_presigned_url +from common.celery import constants +from common.celery.task_senders import send_task +from django.conf import settings from rest_framework import serializers from apps.organization.models import Organization @@ -21,3 +25,26 @@ def validate_slug_name(self, data): if "_" in data: raise serializers.ValidationError(detail="slug name is invalid") return data + + def update(self, instance, validated_data): + old_logo = instance.logo + new_logo = validated_data.get("logo", old_logo) + instance = super().update(instance, validated_data) + if old_logo and old_logo != new_logo: + send_task( + name=constants.CONSOLE_SERVICE_DELETE_UPLOAD_FILE, + message={ + "bucket_name": settings.AWS_S3.get("AWS_STORAGE_BUCKET_NAME"), + "link_file": f"uploads/{old_logo}", + }, + ) + return instance + + def to_representation(self, instance): + data = super().to_representation(instance) + if instance.logo and instance.logo not in ["", None]: + data["url_logo"] = get_presigned_url( + settings.AWS_S3.get("AWS_STORAGE_BUCKET_NAME"), + f"uploads/{instance.logo}", + ) + return data diff --git a/bootstrap_service/celery.py b/bootstrap_service/celery.py index 0d511a1..f6e66bb 100644 --- a/bootstrap_service/celery.py +++ b/bootstrap_service/celery.py @@ -19,6 +19,7 @@ TASKS_CONSOLE = [ constants.CONSOLE_SERVICE_ADD_OR_REMOVE_SPACE, + constants.CONSOLE_SERVICE_DELETE_UPLOAD_FILE, ] existing = {queue.name: queue for queue in (app.conf.task_queues or ())}