
    wg                         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mZmZmZmZ  G d
 de
          Zde
fdZdS )    )Iterable)datetime)cache)F)now)UserSessionRepositoryInterface)UserSessionInterface)SessionFIltersHeader)SessionFilters
UserActionUserActivityWebSearcherWebSearcherActionc                       e Zd Zdededz  fdZddededededz  ddf
d	Zde	e
         fd
ZdefdZd ZdefdZdedefdZddZdefdZdedefdZdededdfdZd ZdeddfdZd ZdeddfdZdS )UserSessionRepositoryidreturnNc                 p    	 t           j                            |          S # t           j        $ r Y d S w xY wNr   )r   objectsgetDoesNotExistselfr   s     T/var/www/html/cms/infrastructure/persistence/repositories/user_session_repository.pyr   zUserSessionRepository.get   sF    	'++r+222( 	 	 	44	s   " 55adresstext
session_idtimec                 l    |t                      }t          j                            ||||           d S )N)r   r   r    r   )r   r   r   create)r   r   r   r   r    s        r   create_user_actionz(UserSessionRepository.create_user_action   sF    <55D!!!	 	" 	
 	
 	
 	
 	
    c                 x    t           j                                        }|r|j                                        S g S N)r   r   firstheadersallr   filterss     r   get_session_filter_headersz0UserSessionRepository.get_session_filter_headers&   s7     (..00 	)?&&(((	r$   c                 .    t          j        j        di |S N )r   r   r"   r   kwargss     r   r"   zUserSessionRepository.create-   s    #*44V444r$   c                     t          j        d          }|s5t          j                                        }t          j        d|d           |S )Nsession_filtersi  )timeout)r   r   r   r   r'   setr*   s     r   get_session_filtersz)UserSessionRepository.get_session_filters0   sL    )-.. 	C$,2244GI''BBBBr$   c                 |    t           j                            d                                          }|r|d         ndS )N	searchersr    r   r   values_listr'   )r   r3   s     r   get_searchersz#UserSessionRepository.get_searchers8   s9    (0<<[IIOOQQ%4<q!!"<r$   c                 f    t           j                            |                                          S r   )r   r   filterexistsr   s     r   is_searcher_exists_by_idz.UserSessionRepository.is_searcher_exists_by_id<   s(    "))R)0077999r$   c                 2    t          j        j        di | d S r.   )r   r   r"   r0   s     r   create_searcher_logz)UserSessionRepository.create_searcher_log?   s"    !(22622222r$   c                 <    t          j        j        di |}|j        S r.   )r   r   r"   r   )r   r1   searchers      r   create_searcherz%UserSessionRepository.create_searcherB   s#    &-7777{r$   sessionc                 N    t          |d          r|                                 |S )Nsave)hasattrrH   )r   rF   s     r   updatezUserSessionRepository.updateF   s&    7F## 	LLNNNr$   
field_namec                 ~    t          j                            |          j        di |t	          |          dz   i d S )Nr      r/   )r   r   r>   rJ   r   )r   r   rK   s      r   increment_user_session_fieldz2UserSessionRepository.increment_user_session_fieldK   sD    ##r#**1TTZ:QRAR4STTTTTr$   c                 p    d |D             }t           j                            d |D                        d S )Nc                 d    g | ]-}|d          t           j                            dd          v +|.S )r   r   Tflat)r   r   r;   .0logs     r   
<listcomp>zGUserSessionRepository.bulk_create_user_session_logs.<locals>.<listcomp>O   s?    rrrC3|+<@T@`@`aelp@`@q@q+q+qC+q+q+qr$   c                 &    g | ]}t          d i |S )r/   )r   rS   s     r   rV   zGUserSessionRepository.bulk_create_user_session_logs.<locals>.<listcomp>P   s&    'N'N'Nc
(9(9S(9(9'N'N'Nr$   )r   r   bulk_create)r   logsnew_logss      r   bulk_create_user_session_logsz3UserSessionRepository.bulk_create_user_session_logsN   sA    rr4rrr&&'N'NX'N'N'NOOOOOr$   c                 f    t           j                            |                                          S r   )r   r   r   deleter   s     r   delete_user_sessionz)UserSessionRepository.delete_user_sessionR   s(    #''2'..55777r$   c                 h    t           j                            dd                                          S )Ndisallowed_hostTrQ   r:   )r   s    r   get_disallowed_host_penaltyz1UserSessionRepository.get_disallowed_host_penaltyU   s+    %112C$1OOUUWWWr$   	ban_limitc                 j    t           j                            |                                           d S )N)session__ban_rate__gte)r   r   r>   r]   )r   rb   s     r   delete_hacking_visitorsz-UserSessionRepository.delete_hacking_visitorsX   s.    ##9#EELLNNNNNr$   r&   )r   N)__name__
__module____qualname__intr	   r   strr   r#   r   r
   r,   r"   r6   r<   boolr@   rB   rE   rJ   rN   r[   r^   ra   re   r/   r$   r   r   r      s       c 2T9    	
 	
 	
C 	
S 	
PX[_P_ 	
ko 	
 	
 	
 	
H5I,J    5"6 5 5 5 5  =s = = = =:3 :4 : : : :3 3 3 33    2 7K    
Us U U U U U UP P P8c 8d 8 8 8 8X X XO O O O O O O Or$   r   r   c                      t                      S r&   )r   r/   r$   r   get_user_session_repositoryrm   \   s     """r$   N)collections.abcr   r   django.core.cacher   django.db.modelsr   django.utils.timezoner   domain.user_sessions.repositoryr   domain.user_sessions.sessionr	   $domain.user_sessions.session_filtersr
   1infrastructure.persistence.models.site_statisticsr   r   r   r   r   r   rm   r/   r$   r   <module>rv      s=   $ $ $ $ $ $       # # # # # #       % % % % % % J J J J J J = = = = = = E E E E E E             EO EO EO EO EO: EO EO EOP#%C # # # # # #r$   