Ë
    ûûàg%  ã                   ó>  — d dl Z d dlZd dlZd dlZd dlZd dlmZ 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mZ d d	lmZ d d
lmZ dZej2                  gdz  ej4                  gedz
  z  z   Zdd„Zd„ Zd„ Zd„ Zdd„Z d„ Z!d„ Z"d„ Z#d„ Z$dd„Z%d„ Z&dd„Z'd„ Z(y)é    N)ÚOrderedDict)Úurlsplit)Úsettings)Úget_user_model)ÚImproperlyConfiguredÚValidationError)Úvalidate_email)Ú
EmailField)Ú	force_str©Úapp_settingsé   é   c                 ó  — ddl m}  |«       }d }|xs d}| D ]Ò  }|sŒt        j                  dt	        |«      «      }|j                  dd«      j                  d«      }t        |«      dk(  rŒUt	        t        j                  |d|«      j                  «       «      }|j                  d	«      d   }|j                  «       }t        j                  d
d|«      }	 |j                  |d¬«      } n |xs dS # t        $ r Y Œæw xY w)Né   ©Úget_adapterz[^\w\s@+.-]ÚNFKDÚasciiÚignorer   Ú ú@z\s+Ú_T©ÚshallowÚuser)Úaccount.adapterr   ÚunicodedataÚ	normalizer   ÚencodeÚdecodeÚlenÚreÚsubÚlowerÚsplitÚstripÚclean_usernamer   )ÚtxtsÚregexr   ÚadapterÚusernameÚtxts         úK/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/utils.pyÚ_generate_unique_username_baser/      s  € Ý,á‹m€GØ€HØÒ#�^€EØò ˆÙØÜ×(Ñ(¨´¸3³Ó@ˆØ—?‘? 7¨HÓ5×<Ñ<¸WÓEˆÜˆx‹=˜AÒØÜœRŸV™V E¨2¨xÓ8×>Ñ>Ó@ÓAˆð —>‘> #Ó& qÑ)ˆØ—>‘>Ó#ˆÜ—6‘6˜& # xÓ0ˆð	Ø×-Ñ-¨hÀÐ-ÓEˆHÙð'ð, Ò�vÐøô ò 	Ùð	ús   ÃC3Ã3	C?Ã>C?c                  ó|   — ddl m}  | �1t        «       }|j                  j	                  | «      j
                  }|S d}|S )Nr   ©ÚUSER_MODEL_USERNAME_FIELDr   )Úaccount.app_settingsr2   r   Ú_metaÚ	get_fieldÚ
max_length)r2   ÚUserr6   s      r.   Úget_username_max_lengthr8   :   sC   € Ý?à Ð,ÜÓˆØ—Z‘Z×)Ñ)Ð*CÓD×OÑOˆ
ð Ðð ˆ
ØÐó    c                 ó€   — t        «       }dj                  d„ t        |«      D «       «      }| d|t        |«      z
   |z   S )Nr   c              3   óT   K  — | ]   }t        j                  t        |   «      –— Œ" y ­w©N)ÚrandomÚchoiceÚUSERNAME_SUFFIX_CHARS)Ú.0Úis     r.   ú	<genexpr>z.generate_username_candidate.<locals>.<genexpr>G   s$   è ø€ ò Ø45Œ�‰Ô+¨AÑ.×/ñùs   ‚&(r   )r8   ÚjoinÚranger"   )ÚbasenameÚsuffix_lengthr6   Úsuffixs       r.   Úgenerate_username_candidaterH   E   sG   € Ü(Ó*€JØ�W‰Wñ Ü9>¸}Ó9Môó €Fð �A˜
¤S¨£[Ñ0Ð1°FÑ:Ð:r9   c                 óò   — ddl m} t        | «      |k\  r| g}ng }t        d|t        | «      z
  «      }t	        t        «       t        «      }t        ||«      D ]  }|j                  t        | |«      «       Œ |S )Nr   )ÚUSERNAME_MIN_LENGTH)
r3   rJ   r"   ÚmaxÚminr8   ÚMAX_USERNAME_SUFFIX_LENGTHrD   ÚappendrH   )rE   rJ   ÚretÚmin_suffix_lengthÚmax_suffix_lengthrF   s         r.   Úgenerate_username_candidatesrR   M   sz   € Ý9ä
ˆ8ƒ}Ð+Ò+Øˆj‰àˆÜ˜AÐ2´S¸³]ÑBÓCÐÜÔ3Ó5Ô7QÓRÐÜÐ0Ð2CÓDò IˆØ�
‰
Ô.¨x¸ÓGÕHðIà€Jr9   c                 óx  — ddl m} ddlm} ddlm}  |«       }t        | |«      }t        |«      } ||Ž j                  |d¬«      }t        |D �	cg c]  }	|	j                  «       ‘Œ c}	«      }|D ]*  }
|
j                  «       |vsŒ	 |j                  |
d¬«      c S  t        d	«      ‚c c}	w # t        $ r Y ŒHw xY w)
Nr   )Úfilter_users_by_usernamer   r   r1   T)Úflatr   z Unable to find a unique username)Úallauth.account.utilsrT   r   r   r3   r2   r/   rR   Úvalues_listÚsetr%   r(   r   ÚNotImplementedError)r)   r*   rT   r   r2   r+   rE   Ú
candidatesÚexisting_usernamesÚnÚ	candidates              r.   Úgenerate_unique_usernamer^   [   sÊ   € Ý>å,Ý?á‹m€GÜ-¨d°EÓ:€HÜ-¨hÓ7€JÙ1°:Ð>×JÑJØ!¨ð Kó Ðô Ð1CÖD¨A˜aŸg™g�iÒDÓEÐØò ˆ	Ø�?‰?ÓÐ$6Ò6ðØ×-Ñ-¨iÀÐ-ÓFÒFðô Ð@Ó
AÐAùò Eøô
 #ò Ùðús   ÁB(ÂB-Â-	B9Â8B9c                 ó¦   — d }	 | r;t        | «       t        | «      t        «       j                  k  r| j	                  «       }|S # t
        $ r Y |S w xY wr<   )r	   r"   r
   r6   r%   r   )ÚemailrO   s     r.   Úvalid_email_or_nonera   r   sV   € Ø
€CðÙÜ˜5Ô!Ü�5‹zœZ›\×4Ñ4Ò4Ø—k‘k“m�ð €Jøô ò ØØ€Jðús   „=A Á	AÁAc                 ó’   — t        | t        «      sJ ‚| j                  dd«      \  }}t        t	        j
                  |«      |«      }|S )Nú.r   )Ú
isinstanceÚstrÚrsplitÚgetattrÚ	importlibÚimport_module)ÚpathÚpkgÚattrrO   s       r.   Úimport_attributerm   ~   sB   € Ü�dœCÔ Ð Ð Ø—‘˜C Ó#�I€CˆÜ
”)×)Ñ)¨#Ó.°Ó
5€CØ€Jr9   c                 ó:   — t        | «      st        | «      }|S | }|S r<   )Úcallablerm   )Úpath_or_callablerO   s     r.   Úimport_callablerq   …   s)   € ÜÐ$Ô%ÜÐ/Ó0ˆð €Jð ˆØ€Jr9   c                 óÌ   — |€yt        «       }|D ]!  }	 | j                  j                  |«      ||<   Œ# |j	                  | j                  «       || _        y# t        $ r Y ŒRw xY w)a  
    This function is a verbatim copy of django.forms.Form.order_fields() to
    support field ordering below Django 1.9.

    field_order is a list of field names specifying the order. Append fields
    not included in the list in the default order for backward compatibility
    with subclasses not overriding field_order. If field_order is None, keep
    all fields in the order defined in the class. Ignore unknown fields in
    field_order to allow disabling fields in form subclasses without
    redefining ordering.
    N)r   ÚfieldsÚpopÚKeyErrorÚupdate)ÚformÚfield_orderrs   Úkeys       r.   Úset_form_field_orderrz   �   sk   € ð ÐØÜ‹]€FØò ˆð	ØŸ+™+Ÿ/™/¨#Ó.ˆF�3ŠKðð
 ‡M�M�$—+‘+ÔØ€D…Køô ò 	Ùð	ús   ”AÁ	A#Á"A#c                 ó¾  — ddl m} | €Št        j                  st        d«      ‚ddlm} |j                  j                  «       }t        |«      }|j                  r|j                  s)dj                  |j                  |j                  |¬«      }n|}n| j                  |«      }|s|j                  dk(  r|j                  }|r|d	z   |j                  d	«      d
   z   }|S )zŠrequest.build_absolute_uri() helper

    Like request.build_absolute_uri, but gracefully handling
    the case where request is None.
    r   r   z6Passing `request=None` requires `sites` to be enabled.r   )ÚSitez{proto}://{domain}{url})ÚprotoÚdomainÚurlÚhttpsú:é   )Úaccountr   ÚSITES_ENABLEDr   Údjango.contrib.sites.modelsr|   ÚobjectsÚget_currentr   ÚschemeÚnetlocÚformatÚDEFAULT_HTTP_PROTOCOLr~   Úbuild_absolute_uriÚ	partition)ÚrequestÚlocationÚprotocolÚaccount_settingsr|   ÚsiteÚbitsÚuris           r.   rŒ   rŒ   ¥   sÔ   € õ :à€Ü×)Ò)Ü&ØHóð õ 	5à�|‰|×'Ñ'Ó)ˆÜ˜Ó!ˆØ—’ §¢Ø+×2Ñ2Ø&×<Ñ<Ø—{‘{Øð 3ó ‰Cð ‰Cà×(Ñ(¨Ó2ˆñ Ð(×>Ñ>À'ÒIØ#×9Ñ9ˆáØ˜‰n˜sŸ}™}¨SÓ1°!Ñ4Ñ4ˆØ€Jr9   c                 ó`   — | j                  ||«      }t        |t        «      rt        |«      }|S r<   )Úgetrd   re   rm   )ÚformsÚform_idÚdefault_formÚ
form_classs       r.   Úget_form_classr›   Ï   s,   € Ø—‘˜7 LÓ1€JÜ�*œcÔ"Ü% jÓ1ˆ
ØÐr9   c                 ó|   — | €|S | j                   j                  |«      xs | j                  j                  ||«      S r<   )ÚPOSTr–   ÚGET)rŽ   ÚparamÚdefaults      r.   Úget_request_paramr¡   Ö   s5   € Ø€ØˆØ�<‰<×Ñ˜EÓ"ÒE g§k¡k§o¡o°e¸WÓ&EÐEr9   c                 óN   — t        t        dd„ «      }t        |«      } || |«      S )NÚALLAUTH_SETTING_GETTERc                 ó$   — t        t        | |«      S r<   )rg   r   )ÚnameÚdflts     r.   ú<lambda>zget_setting.<locals>.<lambda>à   s   € œ7¤8¨T°4Ó8€ r9   )rg   r   rq   )r¥   r¦   Úgetters      r.   Úget_settingr©   Ü   s.   € ÜÜØ Ù8ó€Fô
 ˜VÓ$€FÙ�$˜ÓÐr9   r<   ))rh   r=   r#   Ústringr   Úcollectionsr   Úurllib.parser   Údjango.confr   Údjango.contrib.authr   Údjango.core.exceptionsr   r   Údjango.core.validatorsr	   Údjango.db.models.fieldsr
   Údjango.utils.encodingr   Úallauthr   rM   ÚdigitsÚascii_lettersr?   r/   r8   rH   rR   r^   ra   rm   rq   rz   rŒ   r›   r¡   r©   © r9   r.   ú<module>r·      s©   ðÛ Û Û 	Û Û Ý #Ý !å  Ý .ß HÝ 1Ý .Ý +å  ð
 Ð ØŸ™˜¨!Ñ+¨v×/CÑ/CÐ.DØ Ñ"ñ/ñ Ð ó
ò>ò;òóBò.	òòòó0'òTóFór9   