o
    gf                     @   s   d dl mZ d dlmZmZ d dlmZ eeddZdejfddZ	dd	d
Z
dddZ		dddZdddZdddZdS )    )uuid4)settingmodule_member)UserSocialAuthSOCIAL_AUTH_SLUGIFY_FUNCTIONz&django.template.defaultfilters.slugifyNc                 O   s   |r	dt |iS tdd}tdd}tdd}|r$| dr$| d }n| dr0t| d }nt  }t  }	|d|	|  }
t |d|	 }|rPt	|}||d	rv|
t  d|  }|d|	 }t |}|rqt	|}||d	sUd|iS )
zYReturn an username for new user. Return current user username
    if user was given.
    username"SOCIAL_AUTH_USERNAME_IS_FULL_EMAILFSOCIAL_AUTH_UUID_LENGTH   SOCIAL_AUTH_SLUGIFY_USERNAMESemailN)r   )
r   user_usernamer   getunicoder   get_hexusername_max_lengthclean_usernameslugify)detailsuseruser_existsargskwargsemail_as_usernameuuid_length
do_slugifyr   
max_lengthshort_usernamefinal_username r   c/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/backends/pipeline/user.pyget_username   s.   








r!   c           
      O   sT   |rd|iS |s
dS | d}d}	|rt t|k r|}	d}tj||d|	ddS )z.Create user. Depends on get_username pipeline.r   Nr    )r   r   T)r   original_emailis_new)r   r   email_max_lengthlencreate_user)
backendr   responseuidr   r   r   r   r   r#   r   r   r    r'   1   s   
r'   Fc                 C   s   | dv p| o| t dg v S )N)r   idpk!SOCIAL_AUTH_PROTECTED_USER_FIELDS)r   )namer$   r   r   r    _ignore_fieldG   s   r/   c              	   O   s   |du rdS i }t |j }| D ]1\}}	||v r@t||s@|j| j}
z|
r5t|	|
kr5|	d|
 }	W n	 ty?   Y nw |	||< qd|iS zTruncate any value in details that corresponds with a field in the user
    model. Add this entry to the pipeline before update_user_detailsNr   )list_fieldskeys	iteritemsr/   r   r&   	TypeErrorr(   r   r   r$   r   r   outnamesr.   valuer   r   r   r    "mongoengine_orm_maxlength_truncateM   s    
r:   c              	   O   s   |du rdS i }|j  }| D ]2\}}	||v r?t||s?|j |j}
z|
r4t|	|
kr4|	d|
 }	W n	 ty>   Y nw |	||< qd|iS r0   )_metaget_all_field_namesr4   r/   	get_fieldr   r&   r5   r6   r   r   r    django_orm_maxlength_truncatea   s    

r>   c           
      O   sd   |du rdS d}|  D ]\}}	t||s'|	r'|	t||dkr't|||	 d}q|r0|  dS dS )z-Update user details using data from provider.NFT)r4   r/   getattrsetattrsave)
r(   r   r)   r   r$   r   r   changedr.   r9   r   r   r    update_user_detailsu   s   
rC   )N)F)NF)uuidr   social_auth.utilsr   r   social_auth.modelsr   r   simple_user_existsr!   r'   r/   r:   r>   rC   r   r   r   r    <module>   s     

&


