Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
    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', '등록된 비밀번호가 없습니다.')
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
 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
Ejemplo n.º 8
0
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', '등록된 컨텐츠가 없습니다.')
Ejemplo n.º 9
0
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 입니다.")
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
    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)
Ejemplo n.º 13
0
    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)
Ejemplo n.º 14
0
    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)
Ejemplo n.º 15
0
    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', "비밀번호가 다릅니다.")
Ejemplo n.º 16
0
    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": '비밀번호가 변경되었습니다.'
        })
Ejemplo n.º 17
0
    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)
Ejemplo n.º 18
0
    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)
Ejemplo n.º 19
0
 def validate(self, data):
     user = authenticate(**data)
     if user and user.is_active:
         return user
     raise CustomValidation('-7', "이메일 또는 비밀번호가 올바르지 않습니다.")
Ejemplo n.º 20
0
 def get_object(self, pk):
     try:
         comment = Comment.objects.get(pk=pk)
         return comment
     except Comment.DoesNotExist:
         raise CustomValidation('-28', '등록된 댓글이 없습니다.')