From 8fbcc688fdbfae30e65ae20eb904c5f9318d8460 Mon Sep 17 00:00:00 2001
From: Kangmin Lee <dlrkdals421@ajou.ac.kr>
Date: Tue, 7 Jun 2022 19:15:38 +0000
Subject: [PATCH] =?UTF-8?q?=EC=8B=A0=EA=B3=A0=EA=B8=B0=EB=8A=A5=EA=B5=AC?=
 =?UTF-8?q?=ED=98=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 campics_/content/views.py | 60 +++++++++++++++++++++++++++++++--------
 1 file changed, 48 insertions(+), 12 deletions(-)

diff --git a/campics_/content/views.py b/campics_/content/views.py
index d41bb7c..166e3ec 100644
--- a/campics_/content/views.py
+++ b/campics_/content/views.py
@@ -1,6 +1,6 @@
 from django.shortcuts import render
 from rest_framework.views import APIView
-from content.models import Feed, FeedLike, FeedView
+from content.models import Feed, FeedLike, FeedView, FeedReport
 from rest_framework.response import Response
 from user.models import User, Univ
 from rest_framework.response import Response
@@ -10,6 +10,7 @@ from uuid import uuid4
 from datetime import datetime
 from django.db.models import Q
 
+
 class UploadFeed(APIView):
     def post(self, request):
         file = request.FILES['file']
@@ -24,7 +25,7 @@ class UploadFeed(APIView):
         user_id = request.data.get('user_id')
         email = request.data.get('email')
 
-        user = User.objects.filter(Q(email = email)).first()
+        user = User.objects.filter(Q(email=email)).first()
         univ = user.univ
         type = request.data.get('type')
         if type == 'photozone':
@@ -32,9 +33,11 @@ class UploadFeed(APIView):
         if type == 'scene':
             type = True
 
-        Feed.objects.create(content=content, image=image, profile_image=profile_image, user_id=user_id, email=email, like_count=0, view_count=0, type=type, univ=univ)
+        Feed.objects.create(content=content, image=image, profile_image=profile_image, user_id=user_id, email=email,
+                            like_count=0, view_count=0, report_count=0, type=type, univ=univ)
         return Response(status=200)
 
+
 class LikeFeed(APIView):
     def post(self, request):
         feed_id = request.data.get('feed_id')
@@ -58,9 +61,10 @@ class LikeFeed(APIView):
 
         return Response(status=200, data=dict(message='피드 좋아요 완료.'))
 
+
 class ViewFeed(APIView):
     def post(self, request):
-        feed_id = request.data.get('feed_id') #id?
+        feed_id = request.data.get('feed_id')  # id?
         email = request.data.get('email')
         is_view = request.data.get('is_view', 'True')
 
@@ -81,6 +85,36 @@ class ViewFeed(APIView):
 
         return Response(status=200, data=dict(message='피드 조회 완료.'))
 
+class ReportFeed(APIView):
+    def post(self, request):
+        feed_id = request.data.get('feed_id')
+        email = request.data.get('email')
+        is_report = request.data.get('is_report', 'True')
+
+        if is_report.lower() == 'false':
+            is_report = False
+        else:
+            is_report = True
+        feed_report = FeedReport.objects.filter(feed_id=feed_id, email=email).first()
+
+        if feed_report is None:
+            FeedReport.objects.create(feed_id=feed_id,
+                                    email=email,
+                                    is_report=is_report,
+                                    )
+        else:
+            feed_report.is_report = is_report
+            feed_report.save()
+
+        feed = Feed.objects.filter(id=feed_id).first()
+        report_count=FeedReport.objects.filter(feed_id=feed_id, is_report=True).count()
+        if report_count>=5: #5회 이상 신고 게시글 삭제
+            feed.delete()
+            return Response(status=200, data=dict(message='신고 5회 누적 게시글 삭제 완료'))
+
+        return Response(status=200, data=dict(message='피드 신고 완료.'))
+
+
 ## 시환님꺼
 class DeleteFeed(APIView):
     def post(self, request):
@@ -101,13 +135,14 @@ class DeleteFeed(APIView):
         else:
             return Response(status=500, data=dict(message='삭제 실패'))
 
+
 class searchUniv(APIView):
     def get(self, request):
         search_word = request.GET.get('keyword')
         # search_word = '대학'
-        
+
         if search_word is None:
-           univ_list = Univ.objects.values('univ').order_by('univ')
+            univ_list = Univ.objects.values('univ').order_by('univ')
         else:
             univ_list = Univ.objects.filter(univ__contains=search_word).values('univ').order_by('univ')
 
@@ -115,23 +150,24 @@ class searchUniv(APIView):
         message = None
 
         if univ_list.count() == 0:
-            message='검색한 정보가 없습니다.'
+            message = '검색한 정보가 없습니다.'
         return render(request,
                       'jinstagram/search.html',
-                      context=dict(univ_list=univ_list,user_list=user_list,message=message))
+                      context=dict(univ_list=univ_list, user_list=user_list, message=message))
+
 
 class searchUser(APIView):
     def get(self, request):
         search_word = request.GET.get('keyword')
         # search_word = 's1'
-        user_list = Feed.objects.filter(user_id__contains=search_word) # .values() 뭐 필요?
+        user_list = Feed.objects.filter(user_id__contains=search_word)  # .values() 뭐 필요?
 
         print(user_list)
         univ_list = None
         message = None
         if user_list.count() == 0:
-            message='검색한 정보가 없습니다.'
-        
+            message = '검색한 정보가 없습니다.'
+
         return render(request,
                       'jinstagram/search.html',
-                      context=dict(univ_list=univ_list,user_list=user_list,message=message))
+                      context=dict(univ_list=univ_list, user_list=user_list, message=message))
-- 
GitLab