
    f                        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	 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 d d
lmZ d dlmZ d dlmZ  eed       G d de             Zej7                         Z eed       G d de	             Zej7                         Z eed       G d de	             Zej7                         Z y)    )login_required)Http404)reverse_lazy)method_decorator)TemplateView)FormView)app_settings)reauthentication_required)Authenticator)GenerateRecoveryCodesForm)flows)get_form_classdispatch)namec                   j     e Zd ZeZdej                  z   Z ed      Z	 fdZ
 fdZ fdZd Z xZS )GenerateRecoveryCodesViewzmfa/recovery_codes/generate.mfa_view_recovery_codesc                 `    t        j                  | j                         t        |   |      S N)r   generate_recovery_codesrequestsuper
form_valid)selfform	__class__s     [/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/mfa/recovery_codes/views.pyr   z$GenerateRecoveryCodesView.form_valid   s%    %%dll3w!$''    c                 <   t        |   di |}g }t        j                  j	                  | j
                  j                  t        j                  j                        j                         }|r|j                         j                         }t        |      |d<   |S )N)usertypeunused_code_count )r   get_context_datar   objectsfilterr   r    TypeRECOVERY_CODESfirstwrapget_unused_codeslen)r   kwargsretunused_codesauthenticatorr   s        r   r$   z*GenerateRecoveryCodesView.get_context_data   s    g&00%--44""););)J)J 5 

%' 	 (--/@@BL#&|#4 
r   c                 V    t         |          }| j                  j                  |d<   |S )Nr    )r   get_form_kwargsr   r    )r   r.   r   s     r   r2   z)GenerateRecoveryCodesView.get_form_kwargs&   s(    g%'ll''F
r   c                 L    t        t        j                  d| j                        S )Nr   )r   r	   FORMS
form_class)r   s    r   r   z(GenerateRecoveryCodesView.get_form_class+   s!     94??
 	
r   )__name__
__module____qualname__r   r5   account_settingsTEMPLATE_EXTENSIONtemplate_namer   success_urlr   r$   r2   r   __classcell__r   s   @r   r   r      s8    *J25E5X5XXM89K(	

r   r   c                   :     e Zd ZdZdZ fdZ fdZ fdZ xZS )DownloadRecoveryCodesViewzmfa/recovery_codes/download.txtz
text/plainc                 $   t        j                  | j                        | _        | j                  s
t	               | j                  j                         j                         | _        | j                  s
t	               S t        | $  |g|i |S r   )
r   view_recovery_codesr   r0   r   r*   r+   r/   r   r   )r   r   argsr-   r   s       r   r   z"DownloadRecoveryCodesView.dispatch9   su    "66t||D!!)O ..335FFH  9w9$9&99r   c                 D    t        |   di |}| j                  |d<   |S )Nr/   r#   )r   r$   r/   )r   r-   r.   r   s      r   r$   z*DownloadRecoveryCodesView.get_context_dataB   s*    g&00"//N
r   c                 2    t        |   |fi |}d|d<   |S )Nz)attachment; filename="recovery-codes.txt"zContent-Disposition)r   render_to_response)r   contextresponse_kwargsresponser   s       r   rF   z,DownloadRecoveryCodesView.render_to_responseG   s'    7-gII*U&'r   )	r6   r7   r8   r;   content_typer   r$   rF   r=   r>   s   @r   r@   r@   4   s!    5ML:
 r   r@   c                   <     e Zd Zdej                  z   Z fdZ xZS )ViewRecoveryCodesViewzmfa/recovery_codes/index.c                     t        |   di |}t        j                  | j                        }|s
t               |j                  |j                         j                         t        j                  d       |S )N)r/   total_countr#   )r   r$   r   rB   r   r   updater*   r+   r	   RECOVERY_CODE_COUNT)r   r-   r.   r0   r   s       r   r$   z&ViewRecoveryCodesView.get_context_dataT   si    g&0011$,,?)O

 - 2 2 4 E E G+??	
 
r   )r6   r7   r8   r9   r:   r;   r$   r=   r>   s   @r   rL   rL   P   s    /2B2U2UUM r   rL   N)!django.contrib.auth.decoratorsr   django.httpr   django.urlsr   django.utils.decoratorsr   django.views.genericr   django.views.generic.editr   allauth.accountr	   r9   allauth.account.decoratorsr
   allauth.mfaallauth.mfa.modelsr    allauth.mfa.recovery_codes.formsr   #allauth.mfa.recovery_codes.internalr   allauth.utilsr   r   as_viewr   r@   download_recovery_codesrL   rB   r#   r   r   <module>r`      s    9  $ 4 - . < @ $ , F 5 ( +*=
 
 >
> 4;;=  .z2  30 4;;=  .z2L  3" ,335 r   