✏️ Fix: [#99] 노코드툴 모델 대규모 수정
This commit is contained in:
@@ -5,7 +5,7 @@ from rest_framework.permissions import AllowAny, IsAuthenticated
|
||||
|
||||
from django.db import transaction
|
||||
|
||||
from .models import Code, Page, Element
|
||||
from .models import Code
|
||||
from .serializers import CodeSerializer
|
||||
from .permissions import IsOwnerOrMemberInCreateAndUpdateAndDelete, IsNotPublished
|
||||
from .services import NocodetoolObjectMapService, NocodetoolHitService
|
||||
@@ -24,25 +24,25 @@ class NoCodeToolAPIView(APIView):
|
||||
def get(self, request):
|
||||
related_type = request.query_params.get("type")
|
||||
related_id = request.query_params.get("id")
|
||||
code_id = None
|
||||
if obj := NocodetoolObjectMapService.mapping_model_instance(related_type, related_id):
|
||||
if obj.is_published:
|
||||
NocodetoolHitService.hit_once(obj, request)
|
||||
code_id = ObjectId(obj.code_id)
|
||||
|
||||
if not code_id:
|
||||
obj = NocodetoolObjectMapService.mapping_model_instance(related_type, related_id)
|
||||
if not obj or not obj.code_id:
|
||||
return Response({"message": "Not validated type or no object"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
if obj.is_published:
|
||||
NocodetoolHitService.hit_once(obj, request)
|
||||
|
||||
code = Code.objects.filter(id=ObjectId(obj.code_id)).first()
|
||||
if not code:
|
||||
return Response({"message": "No code object"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
obj_serializer = NocodetoolObjectMapService.mapping_model_serializer(related_type)
|
||||
|
||||
code = Code.objects.filter(id=code_id).first()
|
||||
if not code:
|
||||
return Response({"message": "No code object"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response({
|
||||
"obj_info": obj_serializer(obj).data,
|
||||
"codes": CodeSerializer(code).data
|
||||
}, status=status.HTTP_200_OK)
|
||||
|
||||
"obj_info": obj_serializer(obj).data,
|
||||
"codes": CodeSerializer(code).data
|
||||
}, status=status.HTTP_200_OK)
|
||||
|
||||
@transaction.atomic
|
||||
def post(self, request):
|
||||
related_type = request.query_params.get("type")
|
||||
@@ -50,32 +50,33 @@ class NoCodeToolAPIView(APIView):
|
||||
obj = NocodetoolObjectMapService.mapping_model_instance(related_type, related_id)
|
||||
if not obj:
|
||||
return Response({"message": "No object"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
if not obj.now_worker:
|
||||
return Response({"message": "start edit first"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
if obj.now_worker != request.user.nickname:
|
||||
return Response({"message": f"{obj.now_worker} is working now"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
data = request.data.copy()
|
||||
thumbnail_file = data.pop("thumbnail", None)
|
||||
|
||||
obj_serializer = NocodetoolObjectMapService.mapping_model_serializer(related_type)
|
||||
|
||||
serializer = CodeSerializer(data=request.data, context={'request': request})
|
||||
serializer = CodeSerializer(data=data, context={'request': request})
|
||||
if serializer.is_valid():
|
||||
code = serializer.save()
|
||||
obj.code_id = str(code.id)
|
||||
obj.save()
|
||||
obj.save(update_fields=["code_id"])
|
||||
|
||||
if thumbnail_file:
|
||||
obj.thumbnail = thumbnail_file
|
||||
obj.save(update_fields=["thumbnail"])
|
||||
|
||||
|
||||
return Response({
|
||||
"obj_info": obj_serializer(obj).data,
|
||||
"codes": CodeSerializer(code).data
|
||||
}, status=status.HTTP_200_OK)
|
||||
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@transaction.atomic
|
||||
@@ -85,21 +86,25 @@ class NoCodeToolAPIView(APIView):
|
||||
obj = NocodetoolObjectMapService.mapping_model_instance(related_type, related_id)
|
||||
if not obj:
|
||||
return Response({"message": "No object"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
if not obj.now_worker:
|
||||
return Response({"message": "start edit first"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
if obj.now_worker != request.user.nickname:
|
||||
return Response({"message": f"{obj.now_worker} is working now"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
if not obj.code_id:
|
||||
return Response({'message': 'No code object'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
code = Code.objects.filter(id=ObjectId(obj.code_id)).first()
|
||||
if not code:
|
||||
return Response({'message': 'No code object'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
data = request.data.copy()
|
||||
thumbnail_file = data.pop("thumbnail", None)
|
||||
|
||||
obj_serializer = NocodetoolObjectMapService.mapping_model_serializer(related_type)
|
||||
|
||||
serializer = CodeSerializer(code, data=data, partial=True, context={'request': request})
|
||||
if serializer.is_valid():
|
||||
updated_code = serializer.save()
|
||||
@@ -112,8 +117,9 @@ class NoCodeToolAPIView(APIView):
|
||||
"obj_info": obj_serializer(obj).data,
|
||||
"codes": CodeSerializer(updated_code).data
|
||||
}, status=status.HTTP_200_OK)
|
||||
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
@transaction.atomic
|
||||
def delete(self, request):
|
||||
related_type = request.query_params.get("type")
|
||||
@@ -121,20 +127,25 @@ class NoCodeToolAPIView(APIView):
|
||||
obj = NocodetoolObjectMapService.mapping_model_instance(related_type, related_id)
|
||||
if not obj:
|
||||
return Response({"message": "No object"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
if not obj.now_worker:
|
||||
return Response({"message": "start edit first"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
if obj.now_worker != request.user.nickname:
|
||||
return Response({"message": f"{obj.now_worker} is working now"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
if not obj.code_id:
|
||||
return Response({'message': 'No code object'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
code = Code.objects.filter(id=ObjectId(obj.code_id)).first()
|
||||
if not code:
|
||||
return Response({'message': 'No code object'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
code.delete()
|
||||
obj.code_id = None
|
||||
obj.thumbnail = None
|
||||
obj.save()
|
||||
obj.save(update_fields=["code_id", "thumbnail"])
|
||||
|
||||
return Response({"message": "delete code success"}, status=status.HTTP_200_OK)
|
||||
|
||||
class NocodeToolWorkingAPIView(APIView):
|
||||
|
||||
Reference in New Issue
Block a user