Skip to content

Commit 2420be5

Browse files
committed
Add conn_* kwargs and tests
1 parent b33d766 commit 2420be5

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

django_mongodb/utils.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def check_django_compatability():
2626
)
2727

2828

29-
def parse(uri, engine=None):
29+
def parse(uri, engine=None, conn_max_age=None, conn_health_checks=None):
3030
"""
3131
Parse a MongoDB URI and return a dictionary of Django database
3232
settings. This function is a wrapper around PyMongo's
@@ -51,7 +51,7 @@ def parse(uri, engine=None):
5151
elif len(nodelist) > 1:
5252
host = ",".join([f"{host}:{port}" for host, port in nodelist])
5353

54-
return {
54+
settings_dict = {
5555
"ENGINE": engine,
5656
"NAME": uri["database"],
5757
"HOST": host,
@@ -61,6 +61,14 @@ def parse(uri, engine=None):
6161
"OPTIONS": uri.get("options"),
6262
}
6363

64+
if conn_max_age is not None:
65+
settings_dict["CONN_MAX_AGE"] = conn_max_age
66+
67+
if conn_health_checks is not None:
68+
settings_dict["CONN_HEALTH_CHECKS"] = conn_health_checks
69+
70+
return settings_dict
71+
6472

6573
def set_wrapped_methods(cls):
6674
"""Initialize the wrapped methods on cls."""

tests/utils_/test_parse.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,13 @@ def test_parse(self, mock_resolver):
3333
def test_engine_kwarg(self, mock_resolver):
3434
settings_dict = django_mongodb.parse(URI, engine="some_other_engine")
3535
self.assertEqual(settings_dict["ENGINE"], "some_other_engine")
36+
37+
@patch("dns.resolver.resolve")
38+
def test_conn_max_age_kwarg(self, mock_resolver):
39+
settings_dict = django_mongodb.parse(URI, conn_max_age=600)
40+
self.assertEqual(settings_dict["CONN_MAX_AGE"], 600)
41+
42+
@patch("dns.resolver.resolve")
43+
def test_conn_health_checks_kwarg(self, mock_resolver):
44+
settings_dict = django_mongodb.parse(URI, conn_health_checks=True)
45+
self.assertEqual(settings_dict["CONN_HEALTH_CHECKS"], True)

0 commit comments

Comments
 (0)