
    CiE                     b    d Z ddlmZmZmZmZmZ ddlmZ ddl	m	Z	m
Z
 ddlmZ  G d de      Zy)	u0   
Modèle pour les codes OTP (One-Time Password)
    )ColumnIntegerStringBooleanDateTime)func)datetime	timedelta)Basec                   |   e Zd ZdZ eedd      Z e ed      dd      Z e ed      d      Z	 e ed	      d      Z
 eed
      Z eed
      Z e ed       ej                                Z e ed      d      Z e ed      d      Zedefd       Zedefd       Zeddedefd       Zy)OTPotpsT)primary_keyindex   F)nullabler   
   )r   2   )defaultr   )timezone)server_defaultreturnc                 D    t        j                         | j                  kD  S )u!   Vérifie si le code OTP a expiré)r	   utcnow
expires_atselfs    6/home/www/lebenam.kofcorporation.com/app/models/otp.py
is_expiredzOTP.is_expired   s      4??22    c                 \    | j                    xr | j                   xr | j                  dk  S )u+   Vérifie si le code OTP est toujours valide   )r   is_verifiedattemptsr   s    r   is_validzOTP.is_valid   s.     ??"Q4+;+;';QPQ@QQr    minutesc                 D    t        j                         t        |       z   S )u   
        Crée un timestamp d'expiration
        
        Args:
            minutes: Nombre de minutes avant expiration (par défaut 10)
            
        Returns:
            Datetime d'expiration
        r&   )r	   r   r
   r(   s    r   create_expiry_timezOTP.create_expiry_time$   s      9W#===r    N)r   )__name__
__module____qualname____tablename__r   r   idr   phonecodepurposer   r#   r$   r   r   now
created_atr   verified_atpropertyboolr   r%   staticmethodintr	   r)    r    r   r   r   	   s    M	T	6B6":T:E&*u-D VBZ%0G%0Kgq)H$/
KJ$/%@J404@K3D 3 3 R$ R R 
>C 
> 
> 
>r    r   N)__doc__
sqlalchemyr   r   r   r   r   sqlalchemy.sqlr   r	   r
   app.db.base_classr   r   r9   r    r   <module>r>      s(    B A  ( "&>$ &>r    