web: hosts: HostList: Add filtering to GET method
parent
cd1835f4f6
commit
0d6e20d5b5
|
@ -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):
|
||||||
|
|
Loading…
Reference in New Issue