3

<^                 @   s   d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlT d dlT 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)User)ValidationError)TIME12HRSFORMAT
DATEFORMAT)RoleDetailSerializer)*c               @   s6   e Zd ZdZejeegdZe Z	G dd de
ZdS )UserLoginDetailSerializerz+
    Return the details of Login User.
    )formatinput_formatsc               @   s   e Zd ZeZdZdS )zUserLoginDetailSerializer.Metaidemail
first_name	last_namegenderdobphone_noaddressimage
image_namerole	is_active
is_deletedN)r   r   r   r   r   r   r   r   r   r   r   r   r   )__name__
__module____qualname__r   modelfields r   r   ;/var/www/html/itrack/api/serializers/user/userSerializer.pyMeta   s    r    N)r   r   r   __doc__r   	DateFieldr   r   r   r   objectr    r   r   r   r   r	      s   r	   c               @   s&   e Zd ZdZG dd dZdd ZdS )UserSignupSerializerz
    create/update user .
    c            
   @   s&   e Zd ZeZdZddiddidZdS )zUserSignupSerializer.Metar   r   r   r   r   r   r   r   passwordotp
write_onlyT)r%   r&   N)
r   r   r   r   r   r   r   r   r%   r&   )r   r   r   r   r   r   extra_kwargsr   r   r   r   r       s   r    c             C   sn   t |d j d}|d |_|d |_|d |_|d |_|d |_|d |_|j|d	  d
|_	|j
  |S )Nr   )r   r   r   r   r   r   r   r%   T)r   lowerr   r   r   r   r   r   set_passwordr   save)selfvalidated_datauserr   r   r   create%   s    





zUserSignupSerializer.createN)r   r   r   r!   r    r/   r   r   r   r   r$      s   r$   c               @   s(   e Zd ZdZG dd deZdd ZdS )UserPasswordSerializerz<
    This Serializer is for Update the password of user
    c               @   s   e Zd ZeZdZdS )zUserPasswordSerializer.Metar%   N)r%   )r   r   r   r   r   r   r   r   r   r   r    :   s   r    c             C   s&   |j |d  d|_d|_|j  |S )z 
        Reset Password
        r%   N)r*   r&   otp_send_timer+   )r,   instancer-   r   r   r   update>   s
    zUserPasswordSerializer.updateN)r   r   r   r!   r#   r    r3   r   r   r   r   r0   5   s   r0   c               @   sd   e Zd ZdZejeegdZejdddZ	G dd dZ
dd	 Zd
d Zdd Zdd Zdd ZdS )UserSerializerz"
    Create and update Users.
    )r
   r   FT)required
allow_nullc               @   s&   e Zd ZeZdZddiddidZdS )zUserSerializer.Metar   r   r   r   r%   r   r   r   r   r   r   about_usr   r   r   r'   T)r%   r&   N)r   r   r   r   r%   r   r   r   r   r   r   r7   r   r   r   )r   r   r   r   r   r   r(   r   r   r   r   r    R   s      r    c             C   s   | j | t|d j d}|j|d  |d |_|d |_|d |_|d |_|d |_|d	 |_	|d
 |_
|d r|d |_d|_|j  |d r| j| |S )Nr   )r   r%   r   r   r   r   r   r   r7   r   T)validate_customer_datar   r)   r*   r   r   r   r   r   r   r7   r   r   r+   update_image_name)r,   r-   r.   r   r   r   r/   ]   s$    









zUserSerializer.createc             C   s   |d j  |_|jd|j|_|jd|j|_|jd|j|_|jd|j|_|jd|j|_|jd|j|_|jd|j	|_	|jd	rt
|jd	d
kr|jd	|j|_d|_|j  |jd	rt
|jd	d
kr| j| |S )z!
        update customer
        r   r   r   r   r   r   r   r7   r   strT)r)   r   getr   r   r   r   r   r   r7   typer   r   r+   r9   )r,   r2   r-   r   r   r   r3   x   s    
zUserSerializer.updatec             C   s   i }|d  s|d d kr(|j dti d|kr\| j|d |d j}|d k	r\|j dti |jd r|jddkr|j dti |rt||S )Nr   r   r    )r3   FIELD_REQUIREDget_object_with_email_and_roler   EMAIL_ALREADY_EXISTr;   r   )r,   dataerrorr.   r   r   r   r8      s    z%UserSerializer.validate_customer_datac             C   s.   yt jj||ddS  t jk
r(   d S X d S )Nr   )r   r   r   )r   objectsr;   DoesNotExist)r,   r   r   r   r   r   r?      s    z-UserSerializer.get_object_with_email_and_rolec             C   s2   t |j}td| |jdd}||_|j  d S )Nzimage: z	customer/r=   )r:   r   printreplacer   r+   )r,   r2   Z	image_urlr   r   r   r   r9      s
    

z UserSerializer.update_image_nameN)r   r   r   r!   r   r"   r   r   
ImageFieldr   r    r/   r3   r8   r?   r9   r   r   r   r   r4   J   s   r4   c               @   s6   e Zd ZdZejeegdZe Z	G dd de
ZdS )UserDetailsSerailizerz+
    Return the details of Login User.
    )r
   r   c               @   s   e Zd ZeZdZdS )zUserDetailsSerailizer.Metar   r   r   r   r   r   r   r   r   r   r   r7   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r7   r   r   )r   r   r   r   r   r   r   r   r   r   r       s    r    N)r   r   r   r!   r   r"   r   r   r   r   r#   r    r   r   r   r   rH      s   rH   N)rest_frameworkr   
api.modelsr   django.core.exceptionsr   Zitrack.settingsr   r   Zapi.serializers.roler   !api.utils.messages.commonMessagesapi.utils.messages.userMessagesModelSerializerr	   r$   r0   r4   rH   r   r   r   r   <module>   s   p