o
    &zh                     @   s  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dG dd deZe ZeeddG dd de	Ze ZeeddG dd de	Ze Z dS )    )login_required)Http404)reverse_lazy)method_decorator)TemplateView)FormView)app_settings)reauthentication_required)Authenticator)GenerateRecoveryCodesForm)flows)get_form_classdispatch)namec                       sR   e Zd ZeZdej ZedZ	 fddZ
 fddZ fddZd	d
 Z  ZS )GenerateRecoveryCodesViewzmfa/recovery_codes/generate.mfa_view_recovery_codesc                    s   t | j t |S N)r   generate_recovery_codesrequestsuper
form_valid)selfform	__class__ [/var/www/html/kangema/venv/lib/python3.10/site-packages/allauth/mfa/recovery_codes/views.pyr      s   z$GenerateRecoveryCodesView.form_validc                    sR   t  jdi |}g }tjj| jjtjjd	 }|r!|
  }t||d< |S )N)usertypeunused_code_countr   )r   get_context_datar
   objectsfilterr   r   TypeRECOVERY_CODESfirstwrapget_unused_codeslen)r   kwargsretunused_codesauthenticatorr   r   r   r       s   z*GenerateRecoveryCodesView.get_context_datac                    s   t   }| jj|d< |S )Nr   )r   get_form_kwargsr   r   )r   r*   r   r   r   r-   &   s   
z)GenerateRecoveryCodesView.get_form_kwargsc                 C   s   t tjd| jS )Nr   )r   r   FORMS
form_class)r   r   r   r   r   +   s   
z(GenerateRecoveryCodesView.get_form_class)__name__
__module____qualname__r   r/   account_settingsTEMPLATE_EXTENSIONtemplate_namer   success_urlr   r    r-   r   __classcell__r   r   r   r   r      s    
r   c                       s<   e Zd ZdZdZ fddZ fddZ fddZ  ZS )	DownloadRecoveryCodesViewzmfa/recovery_codes/download.txtz
text/plainc                    sP   t | j| _| jst | j  | _| jst S t j	|g|R i |S r   )
r   view_recovery_codesr   r,   r   r&   r'   r+   r   r   )r   r   argsr)   r   r   r   r   9   s   z"DownloadRecoveryCodesView.dispatchc                    s    t  jdi |}| j|d< |S )Nr+   r   )r   r    r+   )r   r)   r*   r   r   r   r    B   s   
z*DownloadRecoveryCodesView.get_context_datac                    s    t  j|fi |}d|d< |S )Nz)attachment; filename="recovery-codes.txt"zContent-Disposition)r   render_to_response)r   contextresponse_kwargsresponser   r   r   r;   G   s   z,DownloadRecoveryCodesView.render_to_response)	r0   r1   r2   r5   content_typer   r    r;   r7   r   r   r   r   r8   4   s    	r8   c                       s&   e Zd Zdej Z fddZ  ZS )ViewRecoveryCodesViewzmfa/recovery_codes/index.c                    sF   t  jdi |}t| j}|st ||  t	j
d |S )N)r+   total_countr   )r   r    r   r9   r   r   updater&   r'   r   RECOVERY_CODE_COUNT)r   r)   r*   r,   r   r   r   r    T   s   
z&ViewRecoveryCodesView.get_context_data)r0   r1   r2   r3   r4   r5   r    r7   r   r   r   r   r@   P   s    
r@   N)!django.contrib.auth.decoratorsr   django.httpr   django.urlsr   django.utils.decoratorsr   django.views.genericr   django.views.generic.editr   allauth.accountr   r3   allauth.account.decoratorsr	   allauth.mfaallauth.mfa.modelsr
    allauth.mfa.recovery_codes.formsr   #allauth.mfa.recovery_codes.internalr   allauth.utilsr   r   as_viewr   r8   download_recovery_codesr@   r9   r   r   r   r   <module>   s,    


