@@ -452,14 +452,16 @@ def __init__(
452452 permanent = True ,
453453 tz_aware = False ,
454454 ):
455+ import pymongo
456+
455457 if client is None :
456- from pymongo import MongoClient
457458
458459 if tz_aware :
459- client = MongoClient (tz_aware = tz_aware )
460+ client = pymongo . MongoClient (tz_aware = tz_aware )
460461 else :
461- client = MongoClient ()
462+ client = pymongo . MongoClient ()
462463
464+ self .use_deprecated_method = int (pymongo .version .split ("." )[0 ]) < 4
463465 self .client = client
464466 self .store = client [db ][collection ]
465467 self .key_prefix = key_prefix
@@ -495,7 +497,10 @@ def open_session(self, app, request):
495497
496498 if document and document .get ("expiration" ) <= utc_now :
497499 # Delete expired session
498- self .store .delete_one ({"id" : store_id })
500+ if self .use_deprecated_method :
501+ self .store .remove ({"id" : store_id })
502+ else :
503+ self .store .delete_one ({"id" : store_id })
499504 document = None
500505
501506 if document is not None :
@@ -515,7 +520,10 @@ def save_session(self, app, session, response):
515520 store_id = self .key_prefix + session .sid
516521 if not session :
517522 if session .modified :
518- self .store .delete_one ({"id" : store_id })
523+ if self .use_deprecated_method :
524+ self .store .remove ({"id" : store_id })
525+ else :
526+ self .store .delete_one ({"id" : store_id })
519527 response .delete_cookie (
520528 app .config ["SESSION_COOKIE_NAME" ], domain = domain , path = path
521529 )
@@ -528,11 +536,18 @@ def save_session(self, app, session, response):
528536 conditional_cookie_kwargs ["samesite" ] = self .get_cookie_samesite (app )
529537 expires = self .get_expiration_time (app , session )
530538 value = self .serializer .dumps (dict (session ))
531- self .store .update_one (
532- {"id" : store_id },
533- {"$set" : {"id" : store_id , "val" : value , "expiration" : expires }},
534- True ,
535- )
539+ if self .use_deprecated_method :
540+ self .store .update (
541+ {"id" : store_id },
542+ {"id" : store_id , "val" : value , "expiration" : expires },
543+ True ,
544+ )
545+ else :
546+ self .store .update_one (
547+ {"id" : store_id },
548+ {"$set" : {"id" : store_id , "val" : value , "expiration" : expires }},
549+ True ,
550+ )
536551 if self .use_signer :
537552 session_id = self ._get_signer (app ).sign (want_bytes (session .sid ))
538553 else :
0 commit comments