Add patterns for joining tables in API list methods

i.e. we needed to do an *outer* join on User.person since that can be null
This commit is contained in:
Lance Edgar 2018-11-27 02:21:38 -06:00
parent 93aa96a339
commit b7319fd152
3 changed files with 43 additions and 10 deletions
tailbone/api

View file

@ -43,16 +43,20 @@ class UserView(APIMasterView):
def normalize(self, user):
return {
'username': user.username,
'person_name': six.text_type(user.person or ''),
'person_display_name': (user.person.display_name or '') if user.person else '',
'active': user.active,
}
def interpret_sortcol(self, order_by):
if order_by == 'person_name':
return self.sortcol('display_name', 'Person')
if order_by == 'person_display_name':
return self.sortcol('Person', 'display_name')
return self.sortcol(order_by)
def join_for_sort_model(self, query, model_name):
if model_name == 'Person':
query = query.outerjoin(model.Person)
return query
@view(permission='users.list')
def collection_get(self):
return self._collection_get()