minor tweaks to Document._build_index_specs

This commit is contained in:
Stefan Wojcik 2016-12-06 23:28:21 -05:00
parent 0fc44efbcc
commit bc83ba6a24
2 changed files with 10 additions and 12 deletions

View File

@ -732,9 +732,7 @@ class BaseDocument(object):
@classmethod @classmethod
def _build_index_specs(cls, meta_indexes): def _build_index_specs(cls, meta_indexes):
"""Generate and merge the full index specs """Generate and merge the full index specs."""
"""
geo_indices = cls._geo_indices() geo_indices = cls._geo_indices()
unique_indices = cls._unique_with_indexes() unique_indices = cls._unique_with_indexes()
index_specs = [cls._build_index_spec(spec) index_specs = [cls._build_index_spec(spec)
@ -744,14 +742,15 @@ class BaseDocument(object):
if not indices: if not indices:
return index_specs return index_specs
spec_fields = [v['fields'] spec_fields = [idx['fields'] for idx in index_specs]
for k, v in enumerate(index_specs)]
# Merge unique_indexes with existing specs # Merge unique_indexes with existing specs
for k, v in enumerate(indices): for idx in indices:
if v['fields'] in spec_fields: if idx['fields'] in spec_fields:
index_specs[spec_fields.index(v['fields'])].update(v) index_specs[spec_fields.index(idx['fields'])].update(idx)
else: else:
index_specs.append(v) index_specs.append(idx)
return index_specs return index_specs
index_specs = merge_index_specs(index_specs, geo_indices) index_specs = merge_index_specs(index_specs, geo_indices)
@ -760,8 +759,7 @@ class BaseDocument(object):
@classmethod @classmethod
def _build_index_spec(cls, spec): def _build_index_spec(cls, spec):
"""Build a PyMongo index spec from a MongoEngine index spec. """Build a PyMongo index spec from a MongoEngine index spec."""
"""
if isinstance(spec, six.string_types): if isinstance(spec, six.string_types):
spec = {'fields': [spec]} spec = {'fields': [spec]}
elif isinstance(spec, (list, tuple)): elif isinstance(spec, (list, tuple)):

View File

@ -8,6 +8,6 @@ tests = tests
[flake8] [flake8]
ignore=E501,F401,F403,F405,I201 ignore=E501,F401,F403,F405,I201
exclude=build,dist,docs,venv,venv3,.tox,.eggs,tests exclude=build,dist,docs,venv,venv26,venv3,.tox,.eggs,tests
max-complexity=42 max-complexity=42
application-import-names=mongoengine,tests application-import-names=mongoengine,tests