diff --git a/market/models.py b/market/models.py index 527cbc1..3f1aff6 100644 --- a/market/models.py +++ b/market/models.py @@ -19,7 +19,7 @@ def get_service_image_upload_path(instance, filename): email_name = instance.market_service.market.reformer.user.email.split("@")[ 0 ] # market을 통해 reformer에 접근 - market_uuid = instance.market_service.market.market_name + market_uuid = instance.market_service.market.market_uuid service_uuid = instance.market_service.service_uuid return f"users/{email_name}/market/{market_uuid}/service/{service_uuid}/{filename}" diff --git a/market/services.py b/market/services.py index 5705f2b..c699036 100644 --- a/market/services.py +++ b/market/services.py @@ -68,17 +68,21 @@ def upload_market_image(market: Market, image_file) -> None: @staticmethod @transaction.atomic - def upload_service_images(entity: Any, image_file) -> None: + def upload_service_images(entity: Any, image_files) -> None: """ 서비스 소개 이미지를 S3에 업로드 및 데이터베이스에 저장하는 함수 """ try: # 파일 유효성 검증 - validate_image_files([image_file]) + validate_image_files(image_files) - # 엔티티 타입 별 쿼리 생성 if isinstance(entity, Service): - ServiceImage.objects.create(market_service=entity, image=image_file) + bulk_images: List[ServiceImage] = [] + for image_file in image_files: + bulk_images.append( + ServiceImage(market_service=entity, image=image_file) + ) + ServiceImage.objects.bulk_create(bulk_images) except ValidationError as e: raise ValidationError(f"Validation Error: {str(e)}") diff --git a/market/views/image_upload_view.py b/market/views/image_upload_view.py index ad9a95a..3336dee 100644 --- a/market/views/image_upload_view.py +++ b/market/views/image_upload_view.py @@ -1,3 +1,5 @@ +from typing import Any, List + from django.core.exceptions import ObjectDoesNotExist from rest_framework import status from rest_framework.exceptions import ValidationError @@ -56,13 +58,15 @@ def post(self, request, **kwargs): if not market_service: raise ObjectDoesNotExist("Cannot found service object with these uuids") - image_file = request.FILES.get( + image_files: List[Any] = request.FILES.getlist( "service_image" ) # 이미지 파일 리스트를 request body에서 획득 - if not image_file: + if not image_files: raise ValidationError("There are no image files to upload") - self.service.upload_service_images(entity=market_service, image_file=image_file) + self.service.upload_service_images( + entity=market_service, image_files=image_files + ) return Response( data={"message": "Successfully uploaded service image"}, status=status.HTTP_200_OK, diff --git a/order/serializers/order_retrieve_serializer.py b/order/serializers/order_retrieve_serializer.py index dec180d..fadf832 100644 --- a/order/serializers/order_retrieve_serializer.py +++ b/order/serializers/order_retrieve_serializer.py @@ -26,8 +26,7 @@ class OrderRetrieveSerializer(serializers.ModelSerializer): - service = ServiceRetrieveSerializer(read_only=True) - reformer = serializers.SerializerMethodField(read_only=True) + service_info = serializers.SerializerMethodField(read_only=True) materials = ServiceMaterialRetrieveSerializer(many=True, read_only=True) additional_options = ServiceOptionRetrieveSerializer(many=True, read_only=True) order_status = OrderStatusSerailzier(many=True, read_only=True) @@ -36,11 +35,8 @@ class OrderRetrieveSerializer(serializers.ModelSerializer): delivery_status = serializers.SerializerMethodField(read_only=True) images = OrderImageSerializer(source="order_image", many=True, read_only=True) - def get_reformer(self, obj): - reformer = obj.service.market.reformer - if reformer: - return ReformerProfileSerializer(reformer).data - return None + def get_service_info(self, obj): + return ServiceRetrieveSerializer(obj.service).data def get_orderer_information(self, obj): # 만약, 기본 사용자 정보가 아닌, 새로운 사용자 정보를 기입하여 주문한 경우는, User 정보가 아니라, OrdererInformation 정보를 반환 @@ -57,8 +53,7 @@ def get_delivery_status(self, obj): class Meta: model = Order fields = [ - "service", - "reformer", + "service_info", "order_uuid", "order_date", "orderer_information", diff --git a/order/tests.py b/order/tests.py index ba56df1..0315597 100644 --- a/order/tests.py +++ b/order/tests.py @@ -369,7 +369,7 @@ def test_get_order_list(self, _): # Then self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertIn("service", response.data[0]) + self.assertIn("service_info", response.data[0]) self.assertIn("order_uuid", response.data[0]) self.assertIn("order_date", response.data[0]) self.assertIn("orderer_information", response.data[0])