o
    h
                     @   sV   d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	m
Z
 G dd de jZdS )    N)AnyDictOptional)get_user_model)str_to_user_iduser_id_to_strc                	   @   s(  e Zd Z	d*dedededdfddZedd	 Zed
d Ze		d+de
e de
e fddZdefddZdd ZdefddZejdd Zejdd Zejdd ZdedefddZdedefdd Zddd!de
e de
e ddfd"d#Zd$d% Zedefd&d'Zedefd(d)ZdS ),AbstractCodeVerificationProcessNmax_attemptstimeoutstatereturnc                 C   s   || _ || _|| _|| _d S N)_userr	   r
   r   )selfr	   r
   r   user r   g/var/www/html/pos/venv/lib/python3.10/site-packages/allauth/account/internal/flows/code_verification.py__init__   s   
z(AbstractCodeVerificationProcess.__init__c                 C   sD   | j r| j S | jd}|sd S t|}t jj|d | _ | j S )Nuser_id)pk)r   r   getr   r   objectsfilterfirst)r   r   r   r   r   r      s   z$AbstractCodeVerificationProcess.userc                 C   s   | j ddS )Ncode )r   r   r   r   r   r   r   "   s   z$AbstractCodeVerificationProcess.codeemailphonec                 C   s>   t   dddd}|r||d< |r||d< |rt||d< |S )Nr   )atfailed_attemptsresend_countchange_countr   r   r   )timer   )clsr   r   r   r   r   r   r   initial_state&   s   z-AbstractCodeVerificationProcess.initial_statec                 C   s:   | j d  d7  < | j d | jkr|   dS |   dS )Nr       FT)r   r	   abortpersistr   r   r   r   record_invalid_attempt8   s   z6AbstractCodeVerificationProcess.record_invalid_attemptc                 C   s   |   s
|   d S | S r   )is_validr'   r   r   r   r   abort_if_invalid@   s   z0AbstractCodeVerificationProcess.abort_if_invalidc                 C   s   t   | jd  | jkS )Nr   )r#   r   r
   r   r   r   r   r*   F   s   z(AbstractCodeVerificationProcess.is_validc                 C      d S r   r   r   r   r   r   r(   I      z'AbstractCodeVerificationProcess.persistc                 C   r,   r   r   r   r   r   r   sendL   r-   z$AbstractCodeVerificationProcess.sendc                 C   r,   r   r   r   r   r   r   r'   O   r-   z%AbstractCodeVerificationProcess.abortquotac                 C      | j d |kS )Nr!   r   r   r/   r   r   r   is_resend_quota_reachedR      z7AbstractCodeVerificationProcess.is_resend_quota_reachedc                 C   r0   )Nr"   r1   r2   r   r   r   is_change_quota_reachedU   r4   z7AbstractCodeVerificationProcess.is_change_quota_reached)r   r   c                C   s6   | j d  d7  < |r|| j d< |r|| j d< d S d S )Nr"   r&   r   r   r1   )r   r   r   r   r   r   record_changeX   s   
z-AbstractCodeVerificationProcess.record_changec                 C   s   | j d  d7  < d S )Nr!   r&   r1   r   r   r   r   record_resenda   s   z-AbstractCodeVerificationProcess.record_resendc                 C      dS NFr   r   r   r   r   
can_resendd      z*AbstractCodeVerificationProcess.can_resendc                 C   r8   r9   r   r   r   r   r   
can_changeh   r;   z*AbstractCodeVerificationProcess.can_changer   )NN)__name__
__module____qualname__intdictr   propertyr   r   classmethodr   strr%   boolr)   r+   r*   abcabstractmethodr(   r.   r'   r3   r5   r6   r7   r:   r<   r   r   r   r   r   
   s\    







	r   )rF   r#   typingr   r   r   django.contrib.authr    allauth.account.internal.userkitr   r   ABCr   r   r   r   r   <module>   s    