mirror of
https://github.com/aljazceru/CTFd.git
synced 2025-12-18 22:44:24 +01:00
* 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
24 lines
746 B
Python
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
|