
    soj                         d dl Z d dlT 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  G d de          Ze                                 dS )	    N)*)	BaseModel)Crew)User)CrewJoinRequestStatusc                      e Zd ZU dZ eed          Zeez  ed<    eed          Z	eez  ed<    e
ej                  Zee
z  ed<    G d d	          Zeded
ed          fd            Zededed
ed          fd            ZdS )CrewJoinRequestz
    CrewJoinRequest class
    crew_join_requests)backrefusercrew)defaultstatusc                       e Zd ZdZdS )CrewJoinRequest.Metacrew_join_requestN)__name__
__module____qualname__db_table     !/app/src/model/CrewJoinRequest.pyMetar      s        &r   r   returnc           	         t                                                               t           j        | k    t           j        t
          j                                        t          j        t          j	        
                                          z
  k                                  t           j                                                  S )z
        Get all requests of a user in the cooldown period
        :param user: The user object
        :return: The list of requests
        hours)r	   selectwherer   datedatetimenow	timedeltaEnv#CREW_JOIN_REQUEST_COOLDOWN_DURATIONget_intorder_byasc)r   s    r   #get_all_requests_in_cooldown_periodz3CrewJoinRequest.get_all_requests_in_cooldown_period   s     ""$$U$,$#''))$3+R+Z+Z+\+\]]]^^  Xo*..0011		
r   c           
      N   t                                                               t           j        | k    t           j        |k    t           j        t          j                                        t          j        t          j
                                                  z
  k              S )z
        Get all requests of a user for a given crew in the cooldown period
        :param user: The user object
        :param crew: The crew object
        :return: The list of requests
        r   )r	   r   r    r   r   r!   r"   r#   r$   r%   -CREW_JOIN_REQUEST_COOLDOWN_SAME_CREW_DURATIONr'   )r   r   s     r   ,get_all_requests_in_cooldown_period_for_crewz<CrewJoinRequest.get_all_requests_in_cooldown_period_for_crew,   s     %%''-- D( D( ##%% GOOQQ  
 
 	
r   N)r   r   r   __doc__ForeignKeyFieldr   r   __annotations__r   r   SmallIntegerFieldr   PENDINGr   r   staticmethodlistr*   r-   r   r   r   r	   r	      s;          $3?4AU#V#V#VD$
 VVV#2?4AU#V#V#VD$
 VVV8I8I%-9 9 9F!$55   ' ' ' ' ' ' ' ' 
$ 
4@Q;R 
 
 
 \
" 


		 
 
 
 \
 
 
r   r	   )r"   peeweeresources.EnvironmentEnvironmentr%   src.model.BaseModelr   src.model.Crewr   src.model.Userr   *src.model.enums.crew.CrewJoinRequestStatusr   r	   create_tabler   r   r   <module>r=      s         # # # # # # ) ) ) ) ) )             L L L L L L2
 2
 2
 2
 2
i 2
 2
 2
j        r   