Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion market/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}"

Expand Down
12 changes: 8 additions & 4 deletions market/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)}")
Expand Down
10 changes: 7 additions & 3 deletions market/views/image_upload_view.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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,
Expand Down
13 changes: 4 additions & 9 deletions order/serializers/order_retrieve_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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 정보를 반환
Expand All @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion order/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -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])
Expand Down
Loading