summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Lundberg <lundberg@sunet.se>2022-11-24 11:49:04 +0100
committerIvan Kanakarakis <ivan.kanak@gmail.com>2022-11-29 13:55:40 +0200
commita9801bb49f8e7e0eb82f344d2cc261fdb04cc55f (patch)
treeb24702a192556ef6c461ff22968933f70cd7d87a
parent0fb127f95648242c964349d1b401922063997d7e (diff)
downloadpysaml2-a9801bb49f8e7e0eb82f344d2cc261fdb04cc55f.tar.gz
make mongodb code run with more recent pymongo
these changes should be compatible with pymongo >=3.5
-rw-r--r--pyproject.toml2
-rw-r--r--src/saml2/mongo_store.py13
2 files changed, 4 insertions, 11 deletions
diff --git a/pyproject.toml b/pyproject.toml
index 92c0b66f..c6aab9ff 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -72,7 +72,7 @@ optional = true
[tool.poetry.group.test.dependencies]
pyasn1 = "*"
-pymongo = "^3"
+pymongo = ">=3.5"
pytest = ">=6.0"
responses = "*"
diff --git a/src/saml2/mongo_store.py b/src/saml2/mongo_store.py
index f2fc0a6e..4c0599e9 100644
--- a/src/saml2/mongo_store.py
+++ b/src/saml2/mongo_store.py
@@ -4,7 +4,6 @@ import logging
from pymongo import MongoClient
import pymongo.errors
-from pymongo.mongo_replica_set_client import MongoReplicaSetClient
import pymongo.uri_parser
from saml2.eptid import Eptid
@@ -222,12 +221,12 @@ class MDB:
if key is None:
if kwargs:
for item in self.db.find(kwargs):
- self.db.remove(item["_id"])
+ self.db.delete_one(item["_id"])
else:
doc = {self.primary_key: key}
doc.update(kwargs)
for item in self.db.find(doc):
- self.db.remove(item["_id"])
+ self.db.delete_one(item["_id"])
def keys(self):
for item in self.db.find():
@@ -271,25 +270,19 @@ def _mdb_get_database(uri, **kwargs):
kwargs["tz_aware"] = True
connection_factory = MongoClient
- _parsed_uri = {}
try:
_parsed_uri = pymongo.uri_parser.parse_uri(uri)
except pymongo.errors.InvalidURI:
# assume URI to be just the database name
db_name = uri
- _conn = MongoClient()
+ _conn = connection_factory()
else:
- if "replicaset" in _parsed_uri["options"]:
- connection_factory = MongoReplicaSetClient
db_name = _parsed_uri.get("database", "pysaml2")
_conn = connection_factory(uri, **kwargs)
_db = _conn[db_name]
- if "username" in _parsed_uri:
- _db.authenticate(_parsed_uri.get("username", None), _parsed_uri.get("password", None))
-
return _db