def admin_process_reply(request): if request.method == 'GET': # Read 작업 - 댓글 조회(관리자) if request.GET.get('code') != None: return admin_search_reply(request) else: return admin_read_all_reply() elif request.method == 'POST': # Create 작업 - 댓글 등록(관리자) member_info = get_member_info(request.COOKIES) reply_info = json.loads(request.body.decode('utf-8')) return create_reply(member_info, reply_info) elif request.method == 'PUT': # Update 작업 - 댓글 수정(관리자) member_info = get_member_info(request.COOKIES) reply_info = json.loads(request.body.decode('utf-8')) return admin_update_reply(member_info, reply_info) else: # Delete 작업 - 댓글 삭제(관리자) replies = json.loads(request.body.decode('utf-8')) replies = replies['reply'] replies = replies['rows'] return admin_delete_reply(replies)
def user_process_reply(request): if request.method == 'GET': # Read 작업 - 댓글 조회(사용자) - 특정 게시글의 댓글을 조회한다 if request.GET.get('post_id') != None: memberInfo = get_member_info(request.COOKIES) post_id = request.GET.get('post_id') return user_read_reply(memberInfo, post_id) elif request.GET.get('code') != None: return user_search_reply(request) else: return JsonResponse({'message': '필수정보 누락'}, status=489) elif request.method == 'POST': # Create 작업 - 댓글 등록(사용자) member_info = get_member_info(request.COOKIES) reply_info = json.loads(request.body.decode('utf-8')) return create_reply(member_info, reply_info) elif request.method == 'PUT': # Update 작업 - 댓글 수정(사용자) member_info = get_member_info(request.COOKIES) reply_info = json.loads(request.body.decode('utf-8')) return user_update_reply(member_info, reply_info) else: # Delete 작업 - 댓글 삭제(사용자) member_info = get_member_info(request.COOKIES) reply_info = json.loads(request.body.decode('utf-8')) return user_delete_reply(member_info, reply_info)
def process_response(self,request,response): ####### 로그 남기기 ####### field = self.get_code(request.path) print("필드 {}, 코드 {}".format(field,response.status_code)) # 지정한 코드가 아닌경우 => 세계에서 약속된 코드인경우 detail은 존재하지 않음 try: resultCode_detail = ResultCode.objects.get(field = field, code = response.status_code) code_detail = resultCode_detail.code_detail except: code_detail = '' url = request.path try: memberInfo = get_member_info(request.COOKIES) member = Member.objects.get(id = memberInfo['id']) create_log(request_ip=request.get_host(), request_method=request.method, url=url, result_code=response.status_code, result_code_detail=code_detail, requester=member) except Exception as e: create_log(request_ip=request.get_host(), request_method=request.method, url=url, result_code=response.status_code, result_code_detail=code_detail) ############################### ##### 로그인 로그 남기기 ##### isLogin = re.compile('.*member\/login\/') isLogin2 = re.compile('.*member\/admin\/login\/') if isLogin.match(url) or isLogin2.match(url): loginInfo = json.loads(request.body.decode('utf-8')) login_id = loginInfo['id'] create_Login_log(requester_ip=request.get_host(),login_id=login_id,login_result=(True if response.status_code == 200 else False)) ############################### return response
def report_post(request): if request.method == "POST": try: report_info = json.loads(request.body.decode('utf-8')) post_id = report_info['post_id'] if (post_id == None): raise Exception("비정상적인 접근") text = report_info['text'] if (text == None or len(text) < 5): raise Exception("신고 내용이 너무 짧습니다.") member_info = get_member_info(request.COOKIES) if (member_info == None): raise Exception("비정상적인 접근") report_writer = Member.objects.get(id=member_info['id']) post = Post.objects.get(post_id=post_id) if (post == None): raise Exception("존재하지 않는 게시글") if (post.writer == report_writer): raise Exception("자신의 글을 신고할 수 없습니다") existReport = Report.objects.filter(report_writer=report_writer, post=post) if (len(existReport) > 0): raise Exception("이미 신고한 게시글입니다.") report = Report(report_text=text, report_writer=report_writer, post=post) report.save() return JsonResponse({'message': '신고 처리 되었습니다'}, status=200) except Exception as e: return JsonResponse({'message': str(e)}, status=400)
def process_report(request): if request.method == "POST": try: report_info = json.loads(request.body.decode('utf-8')) report_id = report_info['report_id'] process_text = report_info['process_text'] process_type = report_info['process_type'] process_writer = Member.objects.get( id=get_member_info(request.COOKIES)['id']) report = Report.objects.filter(report_id=report_id).first() reported = report.get_reported() if process_type == "블라인드": reported.is_blinded = True elif process_type == "삭제": reported.is_deleted = True reported.save() report.process_type = process_type report.process_writer = process_writer report.process_text = process_text report.process_date = timezone.now() report.is_processed = True report.save() return JsonResponse({'message': "성공적으로 처리되었습니다"}, status=200) except Exception as e: print(e) return JsonResponse({'message': "신고 처리에 실패했습니다"}, status=452)
def user_read_login_log(request): datas = {} memberInfo = get_member_info(request.COOKIES) member = Member.objects.get(id=memberInfo['id']) logs = LoginLog.objects.filter(login_id=member.id) index = len(logs) - 1 for log in logs: datas[index] = log.get_dic() index -= 1 return JsonResponse(datas, status=200)
def user_read_writed_reply(request): member_info = get_member_info(request.COOKIES) member = Member.objects.get(id=member_info['id']) replies = Reply.objects.filter(writer=member) datas = {} index = len(replies) - 1 for reply in replies: datas[index] = reply.get_dic(False) index -= 1 return JsonResponse(datas, status=200)
def book(request): book_info = json.loads(request.body.decode('utf-8')) start = book_info['start'] end = book_info['end'] room_id = book_info['room_id'] member_id = jwt_manager.get_member_info(request.COOKIES) member = Member.objects.filter(id='20150437').first() book = Book(member=member, room_id=room_id, start=start, end=end) book.save() return JsonResponse({'data': "성공적으로 등록되었습니다"}, status=200)
def process_read_my_notice(request): try: data = {} member_info = get_member_info(request.COOKIES) member = Member.objects.get(id=member_info['id']) notices = Notice.objects.filter(receiver_id=member, is_read=False) idx = len(notices) - 1 for notice in notices: if notice.is_read == False: data[idx] = notice.get_for_user() idx -= 1 return JsonResponse({'data': data}, status=200) except: return JsonResponse({'message': '알림 조회 실패'}, status=455)
def process_admin_create(request): keyword_info = json.loads(request.body.decode('utf-8')) keyword_text = keyword_info['keyword'] try: to_use_date = datetime.datetime.strptime(keyword_info['to_use_date'], "%Y-%m-%d").date() except: return JsonResponse({'message': '날짜가 입력되지 않았습니다.'}, status=453) # 날짜 겹치는지 체크 if Keyword.objects.filter(suggest_date=to_use_date).count() != 0: return JsonResponse({'message': '기존 키워드와 사용 예정일이 중복되었습니다.'}, status=457) try: # 이미 존재 하는 키워드 keyword = Keyword.objects.get(keyword=keyword_text) # 등록된 키워드와 최근 사용일이 30일 이상 day_diff = abs((keyword.recent_used_date - to_use_date).days) if day_diff <= settings.KEYWORD_ALLOW_GAP: return JsonResponse({'message': '30일 이내에 사용되었습니다.'}, status=452) day_diff = abs((keyword.suggest_date - to_use_date).days) if day_diff <= settings.KEYWORD_ALLOW_GAP: return JsonResponse({'message': '30일 이내에 사용될 예정입니다.'}, status=452) keyword.suggest_date = to_use_date keyword.save() return JsonResponse({'message': '기존 키워드의 사용 예정일이 수정되었습니다.'}, status=200) except: try: # 새로운 키워드일 경우 registrator_info = get_member_info(request.COOKIES) registrator = Member.objects.get(id=registrator_info['id']) keyword = Keyword(keyword=keyword_text, suggest_date=to_use_date, registrator=registrator) keyword.save() return JsonResponse({'message': '새로운 키워드가 등록되었습니다.'}, status=200) except: return JsonResponse({'message': '키워드 등록에 실패하였습니다.'}, status=453)
def user_search_reply(request): memberInfo = get_member_info(request.COOKIES) code = int(request.GET.get('code')) query = parse.unquote(request.GET.get('query')) return search_reply(code, query, False, memberInfo)