Advertisement
randoz

serializers2

Jul 14th, 2018
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.47 KB | None | 0 0
  1. # -*- encoding:utf-8 -*-
  2.  
  3. from django.contrib.auth import get_user_model
  4. from django.db.models import Q
  5. from rest_framework.authtoken.models import Token
  6. from django.utils.translation import ugettext_lazy as _
  7. from rest_framework import serializers
  8. from apps.contrib.api.exceptions import ValidationError, NotFound
  9. from apps.auths.api.v1 import codes
  10.  
  11.  
  12. # try:
  13. #     from allauth.account import app_settings as allauth_settings
  14. #     from allauth.utils import (
  15. #         email_address_exists, get_username_max_length)
  16. #     from allauth.account.adapter import get_adapter
  17. #     from allauth.account.utils import setup_user_email
  18. # except ImportError:
  19. #     raise ImportError("allauth needs to be added to INSTALLED_APPS.")
  20. # from django.core.cache import cache
  21.  
  22. UserModel = get_user_model()
  23.  
  24.  
  25. class LoginSerializer(serializers.Serializer):
  26.     login = serializers.CharField()
  27.     password = serializers.CharField(style={'input_type': 'password'})
  28.  
  29.     def validate(self, attrs):
  30.         login = attrs.get('login')
  31.         password = attrs.get('password')
  32.  
  33.         user = None
  34.  
  35.         if UserModel.objects.filter(Q(username=login) | Q(email=login)).exists():
  36.             user = UserModel.objects.get(Q(username=login) | Q(email=login))
  37.             if not user.is_active:
  38.                 raise ValidationError(**codes.INACTIVE_ACCOUNT)
  39.  
  40.             # if "allauth" in settings.INSTALLED_APPS:
  41.             #     from allauth.account import app_settings
  42.             #     if hasattr(settings, "EMAIL_VERIFICATION") and \
  43.             #        settings.EMAIL_VERIFICATION == app_settings.EmailVerificationMethod.MANDATORY:
  44.             #
  45.             #         email_address = user.emailaddress_set.get(email=user.email)
  46.             #         if not email_address.verified:
  47.             #             raise ValidationError(**codes.UNVERIFIED_EMAIL)
  48.  
  49.             if not user.check_password(password):
  50.                 raise ValidationError(**codes.INVALID_CREDENTIALS)
  51.  
  52.             attrs['user'] = user
  53.             return attrs
  54.         else:
  55.             raise ValidationError(**codes.INVALID_CREDENTIALS)
  56.  
  57.  
  58. class PasswordResetSerializer(serializers.Serializer):
  59.     """
  60.    Serializer for requesting a password reset e-mail.
  61.    """
  62.     login = serializers.CharField()
  63.     redirect_uri = serializers.URLField(required=False)
  64.  
  65.     def validate(self, attrs):
  66.         if not UserModel.objects.filter(Q(username=attrs["login"]) | Q(email=attrs["login"])).exists():
  67.             raise NotFound(**codes.USER_NOT_FOUND)
  68.  
  69.         user = UserModel.objects.get(Q(username=attrs["login"]) | Q(email=attrs["login"]))
  70.  
  71.         if UserAction.objects.filter(user=user, type=UserAction.ACTION_RESET_PASSWORD).exists():
  72.             action = UserAction.objects.get(user=user, type=UserAction.ACTION_RESET_PASSWORD)
  73.         else:
  74.             action = UserAction(user=user, type=UserAction.ACTION_RESET_PASSWORD)
  75.  
  76.         action.token = get_uuid()
  77.         action.creation_date, action.expiration_date = get_lapse()
  78.         action.save()
  79.  
  80.  
  81.         attrs["action"] = action
  82.         return attrs
  83.  
  84.  
  85. class PasswordResetConfirmSerializer(serializers.Serializer):
  86.     """
  87.    Serializer for requesting a password reset e-mail.
  88.    """
  89.     token = serializers.CharField()
  90.     password1 = serializers.CharField(max_length=128)
  91.     password2 = serializers.CharField(max_length=128)
  92.  
  93.     def validate(self, attrs):
  94.  
  95.         if not UserAction.objects.filter(token=attrs["token"],
  96.                                          type=UserAction.ACTION_RESET_PASSWORD).exists():
  97.             raise ValidationError(**codes.INVALID_TOKEN)
  98.  
  99.         if attrs["password1"] != attrs["password2"]:
  100.             raise ValidationError(**codes.PASSWORD_MISTMATCH)
  101.  
  102.         action = UserAction.objects.get(token=attrs["token"], type=UserAction.ACTION_RESET_PASSWORD)
  103.         attrs["password"] = attrs["password2"]
  104.         attrs["action"] = action
  105.         return attrs
  106.  
  107.  
  108. def update_user_from_serializer(user, serializer):
  109.     if "first_name" in serializer.validated_data:
  110.         user.first_name = serializer.validated_data["first_name"]
  111.  
  112.     if "sur_name" in serializer.validated_data:
  113.         user.sur_name = serializer.validated_data["sur_name"]
  114.  
  115.     if "last_name" in serializer.validated_data:
  116.         user.last_name = serializer.validated_data["last_name"]
  117.  
  118.     if "husband_name" in serializer.validated_data:
  119.         user.husband_name = serializer.validated_data["husband_name"]
  120.  
  121.     if "id_person" in serializer.validated_data:
  122.         user.id_person = serializer.validated_data["id_person"]
  123.  
  124.     if "email" in serializer.validated_data:
  125.         user.email = serializer.validated_data["email"]
  126.  
  127.     user.dni = serializer.validated_data["dni"]
  128.     user.born_date = serializer.validated_data["born_date"]
  129.     user.phone = serializer.validated_data["phone"]
  130.     return user
  131.  
  132. # class RegisterSerializer(serializers.Serializer):
  133. #
  134. #     dni = serializers.CharField()
  135. #     born_date = serializers.DateField()
  136. #     email = serializers.EmailField(required=allauth_settings.EMAIL_REQUIRED)
  137. #     phone = serializers.CharField()
  138. #     password = serializers.CharField(write_only=True)
  139. #
  140. #     cleaned_data = None
  141. #
  142. #
  143. #     def validate_email(self, email):
  144. #         email = get_adapter().clean_email(email)
  145. #         if allauth_settings.UNIQUE_EMAIL:
  146. #             if email and email_address_exists(email):
  147. #                 raise ValidationError(**codes.UNAVAILABLE_EMAIL)
  148. #         return email
  149. #
  150. #
  151. #     def validate(self, attrs):
  152. #         attrs = validate_sereci_data(attrs)
  153. #         return attrs
  154. #
  155. #
  156. #     def save(self, request):
  157. #         adapter = get_adapter()
  158. #         user = adapter.new_user(request)
  159. #         user = update_user_from_serializer(user, self)
  160. #         self.cleaned_data = self.validated_data
  161. #         adapter.save_user(request, user, self)
  162. #         setup_user_email(request, user, [])
  163. #         return user
  164.  
  165.  
  166. class VerifyEmailSerializer(serializers.Serializer):
  167.     key = serializers.CharField()
  168.  
  169.  
  170. class TokenSerializer(serializers.Serializer):
  171.     token = serializers.CharField()
  172.  
  173.     def validate(self, attrs):
  174.  
  175.         if not Token.objects.filter(key=attrs['token']).exists():
  176.             raise ValidationError(**codes.INVALID_TOKEN)
  177.         else:
  178.             attrs["token"] = Token.objects.get(key=attrs['token'])
  179.  
  180.         return attrs
  181.  
  182.  
  183. class UserSerializer(serializers.ModelSerializer):
  184.     class Meta:
  185.         model = UserModel
  186.  
  187.         fields = '__all__'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement