Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class RestorePasswordView(APIView):
- serializer_class = SMSRequestSerializer
- authentication_classes = (CsrfExemptSessionAuthentication, BasicAuthentication)
- def post(self, request, *args, **kwargs):
- data = request.data
- serializer = SMSRequestSerializer(data=data)
- if serializer.is_valid(raise_exception=True):
- phone = serializer.data.get('phone')
- try:
- user = User.objects.get(username=phone)
- except User.DoesNotExist:
- return Response("Пользователь с данным номером не зарегистрирован", status=404)
- password = self.generate_code()
- sms_text = urllib_request.quote("Ваш новый пароль на сайте Durex: ")
- sms_text += password
- url = "http://sms.ru/sms/send?api_id=%s&from=%s&to=%s&msg=%s" % (SMS_API_ID, 'Durex', phone, sms_text)
- try:
- res = urlopen(url, timeout=10)
- print("GET: %s %s\nReply:\n%s" % (res.geturl(), res.msg, res.info()))
- user.set_password(password)
- user.save()
- except URLError as errstr:
- print("smssend[debug]: %s" % url)
- return Response('sms.ru failed', status=400)
- return Response('Password sent', status=200)
- return Response(serializer.errors, status=400)
- def generate_code(self):
- return ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(8))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement