web: hosts: HostList: Add filtering to GET method

master
Dustin 2016-01-01 00:33:40 -06:00
parent cd1835f4f6
commit 0d6e20d5b5
1 changed files with 15 additions and 1 deletions

View File

@ -11,8 +11,22 @@ log = logging.getLogger(__name__)
class HostListController(controllers.BaseController): class HostListController(controllers.BaseController):
def GET(self, request): def GET(self, request):
hosts = request.db.query(model.Host)
for attr in request.GET:
try:
column = model.Host.__table__.columns[attr]
except KeyError:
continue
for value in request.GET.getall(attr):
if not value:
continue
value = value.replace('%', r'\%')
if not value.endswith('*'):
value += '*'
value = value.replace('*', '%')
hosts = hosts.filter(column.like(value))
response = request.ResponseClass() response = request.ResponseClass()
response.set_payload(None, request.db.query(model.Host).all()) response.set_payload(None, hosts.all())
return response return response
def POST(self, request): def POST(self, request):