Skip to content

Commit

Permalink
Update AliasedSolrQuerySet only to support aliased names as args
Browse files Browse the repository at this point in the history
  • Loading branch information
rlskoeser committed Apr 24, 2019
1 parent feb3e9d commit f16caa1
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
10 changes: 8 additions & 2 deletions parasolr/query/aliased_queryset.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,14 @@ def order_by(self, *args) -> 'AliasedSolrQuerySet':
def only(self, *args, **kwargs) -> 'AliasedSolrQuerySet':
'''Extend :meth:`parasolr.query.queryset.SolrQuerySet.only``
to support using aliased field names for args (but not kwargs).'''
args = self._unalias_args(*args)
return super().only(*args, **kwargs)

# convert args to aliased args, switching them to keyword
# args; unknown fields are treated the same way
kwargs.update({arg: self.field_aliases.get(arg, arg)
for arg in args})
return super().only(**kwargs)

# also method does not need to be extended, since it runs through only

def highlight(self, field: str, **kwargs) -> 'AliasedSolrQuerySet':
'''Extend :meth:`parasolr.query.queryset.SolrQuerySet.highlight``
Expand Down
8 changes: 6 additions & 2 deletions parasolr/query/tests/test_aliased_queryset.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,12 @@ def test_order_by(self, mock_order_by):
def test_only(self, mock_only):
# args should be unaliased
self.mysqs.only('name', 'year')
mock_only.assert_called_with(self.mysqs.field_aliases['name'],
self.mysqs.field_aliases['year'])
mock_only.assert_called_with(name=self.mysqs.field_aliases['name'],
year=self.mysqs.field_aliases['year'])

# field with no alias passed through as kwarg
self.mysqs.only('foo')
mock_only.assert_called_with(foo='foo')

# kwargs should be ignored
self.mysqs.only(end_year_i='end_year')
Expand Down

0 comments on commit f16caa1

Please sign in to comment.