U
    Vc7!                     @   s@  d dl mZ d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ G dd dejZG dd	 d	ejZG d
d dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG d d! d!ejZd"S )#    )serializers)conf
validators)User)UserBalanceHistoryr   c                   @   s   e Zd ZG dd dZdS )9UserSerializerForAuthenticateAndCollaboratorsAndInstitutec                
   @   s(   e Zd ZeZddddddddd	d
g
ZdS )z>UserSerializerForAuthenticateAndCollaboratorsAndInstitute.Meta
first_name	last_nameusernameemailposterphonerecovery_phoneimageimage_thumbnailinfoN__name__
__module____qualname__r   modelfields r   r   4/var/www/wikiazma_server/authenticate/serializers.pyMeta
   s   r   Nr   r   r   r   r   r   r   r   r   	   s   r   c                   @   s   e Zd ZG dd dZdS )PublicUserSerializerc                   @   s   e Zd ZeZdddgZdS )zPublicUserSerializer.Metar	   r
   r   Nr   r   r   r   r   r      s   r   Nr   r   r   r   r   r      s   r   c                   @   sH   e Zd ZejdejgddZejddZejddZ	dd Z
dd Zd	S )
$SendAVerificationCodeInputSerializer   F
max_lengthr   requiredr"   c                 C   s   t |}|S Nauthenticate_validatorsZphone_validatorselfvaluer   r   r   validate_phone   s    
z3SendAVerificationCodeInputSerializer.validate_phonec                 C   s   t | |S r$   r&   Z2make_email_or_phone_or_username_required_validatorr(   datar   r   r   validate   s    
z-SendAVerificationCodeInputSerializer.validateN)r   r   r   r   	CharFieldr&   email_validatorr   r   r   r*   r.   r   r   r   r   r      s   r   c                   @   s   e Zd ZG dd dZdS )UserSerializerForCollaboratorsc                   @   s    e Zd ZeZddddddgZdS )z#UserSerializerForCollaborators.Metar	   r
   r   r   r   r   Nr   r   r   r   r   r   %   s   r   Nr   r   r   r   r   r1   $   s   r1   c                   @   sL   e Zd ZejdejgddZejddZejej	gdZ
dd Zdd	 Zd
S )+InputLoginOrVerificationCodeCheckSerializerr   Fr    r#   r   c                 C   s   t |}|S r$   r%   r'   r   r   r   r*   0   s    
z:InputLoginOrVerificationCodeCheckSerializer.validate_phonec                 C   s   t | |S r$   r&   Z&make_email_or_phone_required_validatorr,   r   r   r   r.   4   s    
z4InputLoginOrVerificationCodeCheckSerializer.validateN)r   r   r   r   r/   r&   r0   r   r   code_validatorcoder*   r.   r   r   r   r   r2   *   s   r2   c                   @   s   e Zd ZejddZejdejgddZejddZ	ejej
gddZejejgdZejddZejddZejddZdd	 Zd
d Zdd Zdd Zdd Zdd ZdS )InputRegisterUserSerializerFr#   r   r    r   r"   r   )
allow_nullc                 C   s   t j|ddd |S )N   d   name
min_lengthr!   main_validatorsname_validatorr'   r   r   r   validate_usernameF   s      z-InputRegisterUserSerializer.validate_usernamec                 C   s   t j|ddd |S Nr9   .   r;   r>   r'   r   r   r   validate_first_nameK   s    z/InputRegisterUserSerializer.validate_first_namec                 C   s   t j|ddd |S rB   r>   r'   r   r   r   validate_last_nameO   s    z.InputRegisterUserSerializer.validate_last_namec                 C   s   t j|tjtjtjd |S N)r   image_size_as_MBformatmax_sider?   image_validetorr   maximum_profile_image_size_MG.allowed_formats_for_authenticate_profile_image(maximum_side_size_for_authenticate_imager'   r   r   r   validate_imageS   s
    
z*InputRegisterUserSerializer.validate_imagec                 C   s   t |}|S r$   r%   r'   r   r   r   r*   Z   s    
z*InputRegisterUserSerializer.validate_phonec                 C   s   t | |S r$   r3   r,   r   r   r   r.   ^   s    
z$InputRegisterUserSerializer.validateN)r   r   r   r   r/   r   r&   r0   r   r   password_validatorpasswordr4   r5   r	   r
   
ImageFieldr   rA   rD   rE   rO   r*   r.   r   r   r   r   r6   9   s.    r6   c                   @   sT   e Zd ZdZejddZejdejgddZ	ejddZ
e Zdd Zdd	 Zd
S ) InputLoginWithPasswordSerializerz~
    This serializer class takes email and password from user
    and passed it to LoginAPIView to do some works on them.
    Fr#   r   r    c                 C   s   t |}|S r$   r%   r'   r   r   r   r*   o   s    
z/InputLoginWithPasswordSerializer.validate_phonec                 C   s   t | |S r$   r+   r,   r   r   r   r.   s   s    
z)InputLoginWithPasswordSerializer.validateN)r   r   r   __doc__r   r/   r   r&   r0   r   r   rQ   r*   r.   r   r   r   r   rS   c   s   rS   c                   @   sD   e Zd ZdZejddZejejgdZ	ejejgdZ
dd ZdS )!InputChangeUserPasswordSerializerz
    This serializer class takes password and code from user
    and passed it to ChangePasswordAPIView to do some works on them.
    Fr#   r   c                 C   s   |dkrt d|S )N)r   r   zEnter a valid field_type)r   ValidationErrorr'   r   r   r   validate_field_type   s    
z5InputChangeUserPasswordSerializer.validate_field_typeN)r   r   r   rT   r   r/   
field_typer&   rP   old_passwordnew_passwordrW   r   r   r   r   rU   x   s   rU   c                   @   sl   e Zd ZdZejdejgddZejddZ	ejddZ
ejejgdZejejgdZdd Zd	d
 ZdS )!InputForgetUserPasswordSerializerz
    This serializer class takes email, password and code from user
    and passed it to ForgetPasswordAPIView to do some works on them.
    r   Fr    r#   r   c                 C   s   t |}|S r$   r%   r'   r   r   r   r*      s    
z0InputForgetUserPasswordSerializer.validate_phonec                 C   s   t | |S r$   r+   r,   r   r   r   r.      s    
z*InputForgetUserPasswordSerializer.validateN)r   r   r   rT   r   r/   r&   r0   r   r   r   rP   rZ   r4   r5   r*   r.   r   r   r   r   r[      s   r[   c                   @   s   e Zd ZejdddZejdddZejej	gddZ
ejddZejddZejddZejddZdd Zd	d
 Zdd Zdd ZdS )InputEditUserSerializerTF)allow_blankr"   r7   r#   )defaultc                 C   s   t j|tjtjtjd |S rF   rJ   r'   r   r   r   rO      s
    
z&InputEditUserSerializer.validate_imagec                 C   s   t j|tjtjtjd |S rF   )r?   rK   r   'maximum_size_for_authenticate_poster_MG'allowed_formats_for_authenticate_poster)maximum_side_size_for_authenticate_posterr'   r   r   r   validate_poster   s
    
z'InputEditUserSerializer.validate_posterc                 C   s   t j|ddd |S rB   r>   r'   r   r   r   rD      s    z+InputEditUserSerializer.validate_first_namec                 C   s   t j|ddd |S rB   r>   r'   r   r   r   rE      s    z*InputEditUserSerializer.validate_last_nameN)r   r   r   r   r/   r	   r
   	JSONFieldr&   Zinfo_validatorr   rR   r   r   BooleanFielddelete_imagedelete_posterrO   rb   rD   rE   r   r   r   r   r\      s   r\   c                   @   s   e Zd ZdZejddZdS )InputUserProfileSerializerzt
    This serializer class takes user_id  from user
    and passed it to ProfileAPIView to do some works on it.
    $   )r!   N)r   r   r   rT   r   r/   user_idr   r   r   r   rg      s   rg   c                   @   s   e Zd ZdZe ZdS )InputUserGoogleLoginSerializerz|
    This serializer class takes a g_id_token from user
    and passed it to GoogleLoginAPIView to do some works on it.
    N)r   r   r   rT   r   r/   
g_id_tokenr   r   r   r   rj      s   rj   c                   @   s   e Zd ZdZe ZdS ) InputUserFacebookLoginSerializerz{
    This serializer class takes a fb_code from user
    and passed it to FacebookLoginAPIView to do some works on it.
    N)r   r   r   rT   r   r/   fb_coder   r   r   r   rl      s   rl   c                   @   s   e Zd ZG dd dZdS )UserBalanceSerializerc                   @   s   e Zd ZeZdgZdS )zUserBalanceSerializer.Metaremaining_balanceN)r   r   r   r   r   r   r   r   r   r   r      s   r   Nr   r   r   r   r   rn      s   rn   N)rest_frameworkr   authenticater   r   r&   authenticate.modelsr   payment.modelsr   utilsr?   ModelSerializerr   r   
Serializerr   r1   r2   r6   rS   rU   r[   r\   rg   rj   rl   rn   r   r   r   r   <module>   s$   *