diff --git a/config/settings.py b/config/settings.py index 3b5c02a..04f3e1d 100644 --- a/config/settings.py +++ b/config/settings.py @@ -236,7 +236,7 @@ # simple jwt setting SIMPLE_JWT = { - "ACCESS_TOKEN_LIFETIME": timedelta(hours=5), # 토큰 유효시간 설정 1시간으로 설정 + "ACCESS_TOKEN_LIFETIME": timedelta(days=5), # 토큰 유효기간 5일로 설정 "REFRESH_TOKEN_LIFETIME": timedelta(days=30), # 리프레시 토큰 유효기간 설정 리프레시 토큰 유효기간은 5일로 설정 "ROTATE_REFRESH_TOKENS": True, # 리프레시 토큰도 같이 반환됩니다. "BLACKLIST_AFTER_ROTATION": True, # 이전 토큰 블랙리스트 적용, 사용시 설치앱에 rest_framework_simplejwt.token_blacklist 추가 필요 @@ -246,7 +246,7 @@ "SIGNING_KEY": SECRET_KEY, # 장고 자체의 시크릿 키로 signing key 지정 "VERIFYING_KEY": "", "AUDIENCE": None, - "ISSUER": None, # 토큰 발급자 명시 + "ISSUER": "Conever", # 토큰 발급자 명시 "JSON_ENCODER": None, "JWK_URL": None, "LEEWAY": 0, diff --git a/mission/urls.py b/mission/urls.py index 71d5d25..4a615a6 100644 --- a/mission/urls.py +++ b/mission/urls.py @@ -1,5 +1,6 @@ from django.urls import path -from .views import MissionListView, MissionImageUploadView, RandomMissionCreateView, MissionCheckCompleteView, IsMissionCompleteView, MissionImageGetView, SaveMissionCompleteView +from .views import MissionListView, MissionImageUploadView, RandomMissionCreateView, MissionCheckCompleteView, \ + IsMissionCompleteView, MissionImageGetView, SaveMissionCompleteView, DeleteMissionImageView urlpatterns = [ path('list/', MissionListView.as_view({ @@ -24,5 +25,8 @@ })), path('save_mission_complete/', SaveMissionCompleteView.as_view({ 'post': 'create', + })), + path('delete_mission_image/', DeleteMissionImageView.as_view({ + 'patch': 'partial_update', })) ] \ No newline at end of file diff --git a/mission/views.py b/mission/views.py index 6b201e2..d5ea177 100644 --- a/mission/views.py +++ b/mission/views.py @@ -241,4 +241,15 @@ def create(self, request, *args, **kwargs): return Response({ "tdp_id": tdp_id, "is_success": tdp.mission_success, - }, status=status.HTTP_201_CREATED) \ No newline at end of file + }, status=status.HTTP_201_CREATED) + +class DeleteMissionImageView(viewsets.ModelViewSet): + permission_classes = [IsAuthenticated] + def partial_update(self, request, *args, **kwargs): + tdp_id = request.data.get('tdp_id', None) + if tdp_id is None: raise NoRequiredParameterException() + # 이미 백에서 삭제 작업 진행했을 수도 있음 + tdp = TravelDaysAndPlaces.objects.get(id=int(tdp_id)) + if tdp.mission_image is not None and tdp.mission_image != "": + tdp.mission_image.delete() + return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/tour/serializers.py b/tour/serializers.py index fd5d8ec..702af2b 100644 --- a/tour/serializers.py +++ b/tour/serializers.py @@ -48,6 +48,15 @@ class Meta: model = Place fields = '__all__' + def to_representation(self, instance): + data = super().to_representation(instance) + try: + tdp = TravelDaysAndPlaces.objects.get(place_id=instance.id) + data['tdp_id'] = tdp.id + except TravelDaysAndPlaces.DoesNotExist: + pass + return data + class TravelDaysAndPlacesSerializer(serializers.ModelSerializer): # place = PlaceSerializer() # 장소 정보는 시리얼라이저를 통해 반환합니다.