def post(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) if serializer.is_valid(): user = serializer.validated_data update_last_login(None, user) data = { 'result': 0, 'error': 'null', 'data': UserSerializer(user, context=self.get_serializer_context()).data } return Response(data) else: dict = serializer.errors if 'email' in dict: if 'blank' in dict['email'][0]: raise CustomValidation('-1', "이메일 주소를 입력하세요.") else: raise CustomValidation('-5', dict['email'][0]) elif 'password' in dict: raise CustomValidation('-3', '비밀번호가 너무 짧습니다. 최소 8 문자를 포함해야 합니다.') else: raise CustomValidation('0', dict)
def post(self, request, pk=None): #로그인 체크 user_pk = self.request.data.get('user', None) user = get_user(user_pk) # 컨텐츠 여부 체크 contents_pk = self.request.data.get('contents', None) contents = get_contents(contents_pk) if user != contents.user: raise CustomValidation('-20', '컨텐츠를 등록한 사용자가 아닙니다.') try: contents_password = ContentsPassword.objects.get(contents=contents) contents_password.delete() data = { "result": 1, "error": "null", "data": "컨텐츠 비밀번호가 삭제되었습니다." } return Response(data, status=status.HTTP_200_OK) except ContentsPassword.DoesNotExist: raise CustomValidation('-25', '등록된 비밀번호가 없습니다.')
def validate_email(self, value): if not value: raise CustomValidation('-1', "이메일주소를 입력하세요.") user = get_user_model().objects.filter(email=value) if user: raise CustomValidation('-5', "이미 등록된 이메일주소입니다.") return BaseUserManager.normalize_email(value)
def post(self, request, *args, **kwargs): user_pk = self.request.data.get('user', None) user = get_user(user_pk) contents_pk = self.request.data.get('contents', None) contents = get_contents(contents_pk) if user != contents.user: raise CustomValidation('-20', '컨텐츠를 등록한 사용자가 아닙니다.') serializer = ContentsPasswordSerializer(data=request.data) if serializer.is_valid(): serializer.save() data = {'result': 1, 'error': 'null', 'data': '비밀번호가 설정되었습니다.'} return Response(data, status=status.HTTP_201_CREATED) else: dict = serializer.errors if 'contents' in dict and 'unique' in dict['contents'][0]: raise CustomValidation('-24', '비밀번호가 이미 설정되었습니다.') elif 'password' in dict: if 'blank' in dict['password'][0]: raise CustomValidation('-21', '비밀번호를 입력하세요.') elif '4' in dict['password'][0]: raise CustomValidation('-22', '비밀번호는 4자리입니다.') raise CustomValidation('0', dict)
def post(self, request, *args, **kwargs): user_pk = self.request.data.get('user', None) user = get_user(user_pk) contents_pk = self.request.data.get('contents', None) contents = get_contents(contents_pk) if user != contents.user: raise CustomValidation('-20', '컨텐츠를 등록한 사용자가 아닙니다.') try: queryset = ContentsPassword.objects.get(contents=contents) except ContentsPassword.DoesNotExist: raise CustomValidation('-25', '등록된 비밀번호가 없습니다.') serializer = ContentsPasswordSerializer(queryset, data=request.data, partial=True) if serializer.is_valid(): serializer.save() data = {'result': 1, 'error': 'null', 'data': '비밀번호가 수정되었습니다.'} return Response(data, status=status.HTTP_201_CREATED) else: dict = serializer.errors if 'password' in dict: if 'blank' in dict['password'][0]: raise CustomValidation('-21', '비밀번호를 입력하세요.') elif '4' in dict['password'][0]: raise CustomValidation('-22', "비밀번호는 4자리입니다.") raise CustomValidation('0', dict)
def validate(self, value): password = value['password'] if password is not None: if len(str(password)) != 4: raise CustomValidation('-22', "비밀번호는 4자리입니다.") elif password.isdigit() is False: raise CustomValidation('-23', "비밀번호는 숫자만 입력하세요.") return value
def validate_password(self, value): try: validators.validate_password(value) except ValidationError as exc: if '일상적인' in str(exc): raise CustomValidation('-29', "비밀번호가 너무 일상적인 단어입니다.") else: raise CustomValidation('-7', str(exc)) return value
def get_contents(pk): if pk is not None: if len(pk) < 1 or pk.isdigit() is False: raise CustomValidation('-17', "등록된 컨텐츠가 없습니다.") try: contents = Contents.objects.get(pk=pk) except Contents.DoesNotExist: raise CustomValidation('-17', '등록된 컨텐츠가 없습니다.') return contents else: raise CustomValidation('-17', '등록된 컨텐츠가 없습니다.')
def get_user(pk): if pk is not None: if len(pk) < 1 or pk.isdigit() is False: raise CustomValidation('-8', "존재하지 않는 ID 입니다.") try: user = get_user_model().objects.get(id=pk) return user except get_user_model().DoesNotExist: raise CustomValidation('-8', "존재하지 않는 ID 입니다.") else: raise CustomValidation('-8', "존재하지 않는 ID 입니다.")
def get_serializer_class(self): user_pk = self.request.data.get('user', None) user = get_user(user_pk) contents_pk = self.request.data.get('contents', None) get_contents(contents_pk) comment_content = self.request.data.get('comment_content', None) if comment_content is None: raise CustomValidation('-31', "댓글을 입력해주세요.") else: if len(comment_content) < 1: raise CustomValidation('-31', "댓글을 입력해주세요.") return create_comment_serializer(parent_id=self.request.GET.get("parent_id", None), user=user)
def post(self, request, pk=None, user=None): user = get_user(user) contents = get_contents(pk) if user.pk != contents.user.pk: raise CustomValidation('-18', '작성자만 수정 가능합니다.') serializer = ContentsUpdateSerializer(contents, data=request.data, partial=True) if serializer.is_valid(): serializer.save() data = {'result': 0, 'error': 'null', 'data': serializer.data} return Response(data, status=status.HTTP_200_OK) else: raise CustomValidation('0', serializer.errors)
def get(self, request, qr_data=None): """ QRCode로 컨텐츠 조회 --- # /contents/{qr_data} ## 내용 - recog_type : 1-이미지기반, 2-공간기반, 3-음성기반 - link_01_type, link_02_type : 1-페이스북, 2-사진, 3-쇼핑몰, 4-전화번호, 5-카카오톡, 6-카카오톡, 7-유튜브, 8-기타URL - effect_type : 1-폭죽, 2-스노우, 3-선물상자 - char_type : 1-사람, 2-팬더 - contents_comment : 댓글 리스트 - contents_files : 등록된 파일리스트 """ try: qr_data = QRDatas.objects.get(qr_data=qr_data) except QRDatas.DoesNotExist: raise CustomValidation('-16', '등록된 QR코드가 없습니다.') try: contents = Contents.objects.get(pk=qr_data.qrdatascontents.pk) serializer = self.serializer_class(qr_data) data = {'result': 0, 'error': 'null', 'data': serializer.data} return Response(data) except Contents.DoesNotExist: data = { "result": 19, "error": "등록된 컨텐츠가 없습니다.", "data": "{}" } return Response(data, status=status.HTTP_200_OK)
def get(self, request, qr_data=None): """ QR코드, 시리얼번호 체크 , 컨텐츠 가져오기 --- # /contents/qrdatas/{qr_data}?activation_code={activation_code} ## 내용 - recog_type : 1-이미지기반, 2-공간기반, 3-음성기반 - link_01_type, link_02_type : 1-페이스북, 2-사진, 3-쇼핑몰, 4-전화번호, 5-카카오톡, 6-카카오톡, 7-유튜브, 8-기타URL - effect_type : 1-폭죽, 2-스노우, 3-선물상자 - char_type : 1-사람, 2-팬더 - contents_comment : 댓글 리스트 - contents_files : 등록된 파일리스트 """ try: qr_data = QRDatas.objects.get(qr_data=qr_data) except QRDatas.DoesNotExist: raise CustomValidation('-16', '등록된 QR코드가 없습니다.') activation_code = self.request.GET.get("activation_code") if activation_code: if str(qr_data.activation_code) != activation_code: raise CustomValidation('-14', '등록된 시리얼 번호가 없습니다.') try: contents = Contents.objects.get(pk=qr_data.qrdatascontents.pk) contents.view_count = contents.view_count + 1 contents.save() serializer = self.serializer_class(qr_data) data = {'result': 0, 'error': 'null', 'data': serializer.data} return Response(data) except: res_data = { "qr_data": qr_data.qr_data, "activation_code": qr_data.activation_code, "contents_type": qr_data.contents_type } data = { "result": 19, "error": "등록된 컨텐츠가 없습니다.", "data": res_data } return Response(data, status=status.HTTP_200_OK)
def post(self, request, pk=None): user_pk = self.request.data.get('user', None) user= get_user(user_pk) comment = self.get_object(pk) if user.pk != comment.user.pk: raise CustomValidation('-27', '작성자만 삭제 가능합니다.') comment.delete() data = { "result": 1, "error": "null", "data": "댓글이 삭제되었습니다." } return Response(data, status=status.HTTP_200_OK)
def post(self, request, *args, **kwargs): #로그인 체크 user_pk = self.request.data.get('user', None) user = get_user(user_pk) # 컨텐츠 여부 체크 contents_pk = self.request.data.get('contents', None) contents = get_contents(contents_pk) # 패스워드 체크 contents_password = self.request.data.get('password', None) if contents_password == contents.contentspassword.password: data = {'result': 1, 'error': 'null', 'data': '비밀번호가 일치합니다.'} return Response(data, status=status.HTTP_200_OK) else: raise CustomValidation('-26', "비밀번호가 다릅니다.")
def post(self, request, *args, **kwargs): user = request.data.get("user") serializer = self.get_serializer(data=request.data) if not serializer.is_valid(): dict = serializer.errors if 'user' in dict: if 'integer' in dict['user'][0]: raise CustomValidation('-9', "user에 " + dict['user'][0]) else: raise CustomValidation('0', dict['user'][0]) elif 'current_password' in dict: if 'blank' in dict['current_password'][0]: raise CustomValidation('-10', "기존 비밀번호를 입력하세요.") else: raise CustomValidation('0', dict['current_password'][0]) elif 'new_password' in dict: if 'blank' in dict['new_password'][0]: raise CustomValidation('-12', "변경할 비밀번호를 입력하세요.") else: raise CustomValidation('-13', "변경할 " + dict['new_password'][0]) else: raise CustomValidation('0', dict) user = get_user(user) if not user.check_password( serializer.validated_data['current_password']): raise CustomValidation('-11', '기존 비밀번호가 다릅니다.') user.set_password(serializer.validated_data['new_password']) user.save() return Response({ "result": 1, "error": 'null', "data": '비밀번호가 변경되었습니다.' })
def post(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) if serializer.is_valid(): user = serializer.save() data = { 'result': 0, 'error': 'null', 'data': UserSerializer(user, context=self.get_serializer_context()).data } return Response(data) else: dict = serializer.errors if 'email' in dict: raise CustomValidation('-5', dict['email'][0]) elif 'username' in dict: if 'blank' in dict['username'][0]: raise CustomValidation('-2', "사용자 이름을 입력하세요.") elif '존재' in dict['username'][0]: raise CustomValidation('-30', "해당 사용자 이름은 이미 존재합니다.") else: raise CustomValidation('0', dict) elif 'password' in dict: if '8' in dict['password'][0]: raise CustomValidation( '-3', "비밀번호가 너무 짧습니다. 최소 8 문자를 포함해야 합니다.") else: raise CustomValidation('0', dict) elif 'login_type' in dict: raise CustomValidation('-4', '로그인타입 ' + dict['login_type'][0]) else: raise CustomValidation('0', dict)
def post(self, request, *args, **kwargs): """ 컨텐츠 작성 --- # /contents/ """ get_user(request.data['user']) qr_data = request.data['qr_data'] activation_code = request.data['activation_code'] try: qrdats = QRDatas.objects.get(qr_data=qr_data) if activation_code: if str(qrdats.activation_code) != activation_code: raise CustomValidation('-14', "등록된 시리얼 번호가 없습니다.") else: raise CustomValidation('-14', "등록된 시리얼 번호가 없습니다.") if qrdats.is_active == 1: raise CustomValidation('-15', "컨텐츠가 등록된 QR코드 입니다.") except QRDatas.DoesNotExist: raise CustomValidation('-16', "등록된 QR코드가 없습니다.") try: Contents.objects.get(qr_data__qr_data=qr_data) raise CustomValidation('-15', "컨텐츠가 등록된 QR코드 입니다.") except Contents.DoesNotExist: contents_serializer = ContentsSerializer(data=request.data) if contents_serializer.is_valid(): contents_serializer.save() data = {'result': 0, 'error': 'null', 'data': contents_serializer.data} return Response(data, status=status.HTTP_201_CREATED) else: raise CustomValidation('0', contents_serializer.errors)
def validate(self, data): user = authenticate(**data) if user and user.is_active: return user raise CustomValidation('-7', "이메일 또는 비밀번호가 올바르지 않습니다.")
def get_object(self, pk): try: comment = Comment.objects.get(pk=pk) return comment except Comment.DoesNotExist: raise CustomValidation('-28', '등록된 댓글이 없습니다.')