Esempio n. 1
0
    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        print(request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        accountSerializer=AccountSerializer()

        if (accountSerializer.validate_mobile(serializer.data['mobile'])):
            data = {
                'apikey': settings.YUNPIAN_API_KEY,
                'mobile': serializer.data['mobile'],
                'text': settings.MOBILE_VERIFICATION_MESSAGE_TEMPLATE % (
                    serializer.data['code'],
                    settings.VERIFICATION_CODE_EXPIRATION_IN_MINUTES,
                ),
            }

            try:
                r = requests.post(settings.YUNPIAN_SMS_API, data=data)
                if r.status_code == 200:
                    return Response(status=status.HTTP_201_CREATED)

                response = {
                    'detail': six.text_type(_('YUNPIAN service request failed.')),
                    'reason': six.text_type(_('Response code is not 200.')),
                    'code': r.status_code,
                }
                return Response(response, status=status.HTTP_503_SERVICE_UNAVAILABLE)

            except:
                response = {
                    'detail': six.text_type(_('YUNPIAN service request failed.')),
                    'reason': six.text_type(_('Exception catched when made request to YUNPIAN SMS API.')),
                }
                return Response(response, status=status.HTTP_503_SERVICE_UNAVAILABLE)
        response = {
                    'detail': six.text_type(_('The number has been registered.')),
                    'reason': six.text_type(_('The number has been registered.')),
                    'code': r.status_code,
                }
        return Response(response, status=status.HTTP_503_SERVICE_UNAVAILABLE)