
    di                         S SK r S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJr  SS	KJrJr  SS
KJr   " S S\5      r " S S\5      rg)    N)datetime)	timedelta)Optional)Flask)
want_bytes)MongoClientversion   )ServerSideSessionServerSideSessionInterface)Defaultsc                       \ rS rSrSrg)MongoDBSession    N)__name__
__module____qualname____firstlineno____static_attributes__r       g/var/www/fortnox.synktek.com/backend/venv/lib/python3.13/site-packages/flask_session/mongodb/mongodb.pyr   r      s    r   r   c                   Z  ^  \ rS rSrSr\rSr\R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                   4S\S\\   S\S\S\S	\S
\S\S\4U 4S jjjrS\S\\   4S jrS\SS4S jrS\S\S\SS4S jrSrU =r$ )MongoDBSessionInterface   a  A Session interface that uses mongodb as session storage. (`pymongo` required)

:param client: A ``pymongo.MongoClient`` instance.
:param key_prefix: A prefix that is added to all storage keys.
:param use_signer: Whether to sign the session id cookie or not.
:param permanent: Whether to use permanent session or not.
:param sid_length: The length of the generated session id in bytes.
:param serialization_format: The serialization format to use for the session data.
:param db: The database to use.
:param collection: The collection to use.

.. versionadded:: 0.7
    The `serialization_format` and `app` parameters were added.

.. versionadded:: 0.6
    The `sid_length` parameter was added.

.. versionadded:: 0.2
    The `use_signer` parameter was added.
Tappclient
key_prefix
use_signer	permanent
sid_lengthserialization_formatdb
collectionc
                 L  > Ub  [        U[        5      (       d$  [        R                  " S[        SS9  [        5       nX l        X(   U	   U l        [        [        R                  " S5      S   5      S:  U l
        U R                  R                  SSS9  [        T
U ]5  XXEXg5        g )	NzoNo valid MongoClient instance provided, attempting to create a new instance on localhost with default settings.   )
stacklevel.r      
expiration)expireAfterSeconds)
isinstancer   warningswarnRuntimeWarningr   storeintr	   splituse_deprecated_methodcreate_indexsuper__init__)selfr   r   r   r   r    r!   r"   r#   r$   	__class__s             r   r6    MongoDBSessionInterface.__init__+   s     >FK!@!@MM B
 !]FZ
+
%(s);A)>%?!%C" 	

CZJ	
r   store_idreturnc                     U R                   R                  SU05      nU(       a)  [        US   5      nU R                  R	                  U5      $ g )Nidval)r0   find_oner   
serializerdecode)r7   r:   documentserialized_session_datas       r   _retrieve_session_data.MongoDBSessionInterface._retrieve_session_dataK   sF    ::&&h'78&0%&A#??))*ABBr   Nc                     U R                   (       a  U R                  R                  SU05        g U R                  R                  SU05        g )Nr=   )r3   r0   remove
delete_one)r7   r:   s     r   _delete_session'MongoDBSessionInterface._delete_sessionS   s9    %%JJtX./JJ!!4"23r   session_lifetimesessionc                    [         R                  " 5       U-   nU R                  R                  U5      nU R                  (       a$  U R
                  R                  SU0UUUS.S5        g U R
                  R                  SU0SUUUS.0S5        g )Nr=   )r=   r>   r*   Tz$set)r   utcnowr@   encoder3   r0   update
update_one)r7   rK   rL   r:   storage_expiration_datetimerC   s         r   _upsert_session'MongoDBSessionInterface._upsert_sessionY   s     '/oo&7:J&J# #'//"8"8"A %%JJx "2"=
  JJ!!x &6&A 
r   )r   r0   r3   ) r   r   r   r   __doc__r   session_classttlr   SESSION_MONGODBSESSION_KEY_PREFIXSESSION_USE_SIGNERSESSION_PERMANENTSESSION_ID_LENGTHSESSION_SERIALIZATION_FORMATSESSION_MONGODB_DBSESSION_MONGODB_COLLECTr   r   r   strboolr1   r6   dictrD   rI   	TimeDeltar   rS   r   __classcell__)r8   s   @r   r   r      s   * #M
C
 )1(@(@"55#66"44"44$,$I$I--"::

 %
 	

 
 
 
 "
 
 
 
@s x~ 4 4 4 )4EQT	 r   r   )r-   r   r   rc   typingr   flaskr   itsdangerousr   pymongor   r	   baser   r   defaultsr   r   r   r   r   r   <module>rk      s<      +   # ( @ 	& 	e8 er   