From af35b25d155e050cba3e4925bf76529f7ae52137 Mon Sep 17 00:00:00 2001 From: Agustin Barto Date: Tue, 17 Mar 2020 21:28:08 -0300 Subject: [PATCH] Refactor read_preference to accept a dictionary instead of a ReadPreference instance. --- mongoengine/queryset/base.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index d8a4b96f..f8671f8f 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -5,6 +5,8 @@ import itertools import re import warnings +from collections.abc import Mapping + from bson import SON, json_util from bson.code import Code import pymongo @@ -1221,11 +1223,11 @@ class BaseQuerySet(object): :param read_concern: override ReplicaSetConnection-level preference. """ - if read_concern is not None and not isinstance(read_concern, ReadConcern): - raise TypeError("%r is not a read concern." % (read_concern,)) + if read_concern is not None and not isinstance(read_concern, Mapping): + raise TypeError("%r is not a valid read concern." % (read_concern,)) queryset = self.clone() - queryset._read_concern = read_concern + queryset._read_concern = ReadConcern(**read_concern) queryset._cursor_obj = None # we need to re-create the cursor object whenever we apply read_concern return queryset