Files
CTFd/CTFd/utils/helpers/models.py
Kevin Chung f4c9d1e2e8 1569 submission filter by challenge (#1590)
* Allow the Admin Panel Submissions page to filter by Account IDs, Challenge IDs, and Challenge Names
* Deprecate `CTFd.api.v1.helpers.models.build_model_filters` and wrap it to `CTFd.utils.helpers.models.build_model_filters`
* Clean up some miscellaneous Submissions code 
* Closes #1569
2020-08-09 03:40:11 -04:00

24 lines
746 B
Python

import sqlalchemy
def build_model_filters(model, query, field, extra_columns=None):
if extra_columns is None:
extra_columns = {}
filters = []
if query:
# The field exists as an exposed column
if model.__mapper__.has_property(field):
column = getattr(model, field)
if type(column.type) == sqlalchemy.sql.sqltypes.Integer:
_filter = column.op("==")(query)
else:
_filter = column.like(f"%{query}%")
filters.append(_filter)
else:
if field in extra_columns:
column = extra_columns[field]
_filter = column.op("==")(query)
filters.append(_filter)
return filters