Skip to content

Commit 1a6e106

Browse files
committed
Merge pull request #92 from IndiciumSRL/master
Add support to multiple databases with aliases
2 parents abbb9c2 + 21c8c6d commit 1a6e106

File tree

2 files changed

+35
-7
lines changed

2 files changed

+35
-7
lines changed

flask_mongoengine/__init__.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,30 @@ def init_app(self, app):
4444
'port': int(app.config.get('MONGODB_PORT', 0)) or None
4545
}
4646

47-
conn_settings = dict([(k.lower(), v) for k, v in conn_settings.items() if v])
47+
if isinstance(conn_settings, list):
48+
self.connection = {}
49+
for conn in conn_settings:
50+
conn = dict([(k.lower(), v) for k, v in conn.items() if v])
4851

49-
if 'replicaset' in conn_settings:
50-
conn_settings['replicaSet'] = conn_settings['replicaset']
51-
del conn_settings['replicaset']
52+
if 'replicaset' in conn:
53+
conn['replicaSet'] = conn['replicaset']
54+
del conn['replicaset']
5255

53-
self.connection = mongoengine.connect(**conn_settings)
56+
self.connection[conn.get('alias')] = mongoengine.connect(**conn)
57+
58+
else:
59+
conn_settings = dict([(k.lower(), v) for k, v in conn_settings.items() if v])
60+
61+
if 'replicaset' in conn_settings:
62+
conn_settings['replicaSet'] = conn_settings['replicaset']
63+
del conn_settings['replicaset']
64+
65+
self.connection = mongoengine.connect(**conn_settings)
5466

5567
app.extensions = getattr(app, 'extensions', {})
5668
app.extensions['mongoengine'] = self
5769
self.app = app
5870

59-
6071
class BaseQuerySet(QuerySet):
6172
"""
6273
A base queryset with handy extras

tests/test_basic_app.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def test_connection_kwargs(self):
5252
app.config['MONGODB_SETTINGS'] = {
5353
'DB': 'testing_tz_aware',
5454
'alias': 'tz_aware_true',
55-
'TZ_AWARE': True,
55+
'TZ_AWARE': True
5656
}
5757
app.config['TESTING'] = True
5858
db = MongoEngine()
@@ -66,6 +66,23 @@ def test_connection_kwargs(self):
6666
db.init_app(app)
6767
self.assertFalse(db.connection.tz_aware)
6868

69+
def test_connection_kwargs_as_list(self):
70+
app = flask.Flask(__name__)
71+
app.config['MONGODB_SETTINGS'] = [{
72+
'DB': 'testing_tz_aware',
73+
'alias': 'tz_aware_true',
74+
'TZ_AWARE': True
75+
}, {
76+
'DB': 'testing_tz_aware_off',
77+
'alias' : 'tz_aware_false',
78+
'TZ_AWARE' : False
79+
}]
80+
app.config['TESTING'] = True
81+
db = MongoEngine()
82+
db.init_app(app)
83+
self.assertTrue(db.connection['tz_aware_true'].tz_aware)
84+
self.assertFalse(db.connection['tz_aware_false'].tz_aware)
85+
6986
def test_with_id(self):
7087
c = self.app.test_client()
7188
resp = c.get('/show/38783728378090/')

0 commit comments

Comments
 (0)