Newer
Older
from app.database.models import Competition, Question, Slide, Team, User
def user(email=None, name=None, city_id=None, role_id=None, page=0, page_size=15, order=1, order_by=None):
query = User.query
if name:
query = query.filter(User.name.like(f"%{name}%"))
if email:
query = query.filter(User.email.like(f"%{email}%"))
if city_id:
query = query.filter(User.city_id == city_id)
if role_id:
query = query.filter(User.role_id == role_id)
order_column = User.id # Default order_by
if order_by:
order_column = getattr(User.__table__.c, order_by)
return query.pagination(page, page_size, order_column, order)
def competition(name=None, year=None, city_id=None, page=0, page_size=15, order=1, order_by=None):
query = Competition.query
if name:
query = query.filter(Competition.name.like(f"%{name}%"))
if year:
query = query.filter(Competition.year == year)
if city_id:
query = query.filter(Competition.city_id == city_id)
order_column = Competition.year # Default order_by
if order_by:
order_column = getattr(Competition.columns, order_by)
return query.pagination(page, page_size, order_column, order)
def slide(slide_order=None, title=None, body=None, competition_id=None, page=0, page_size=15, order=1, order_by=None):
query = Slide.query
if slide_order:
query = query.filter(Slide.order == slide_order)
if title:
query = query.filter(Slide.title.like(f"%{title}%"))
if body:
query = query.filter(Slide.body.like(f"%{body}%"))
if competition_id:
query = query.filter(Slide.competition_id == competition_id)
order_column = Slide.id # Default order_by
if order_by:
order_column = getattr(Slide.__table__.c, order_by)
return query.pagination(page, page_size, order_column, order)
name=None,
total_score=None,
type_id=None,
slide_id=None,
competition_id=None,
page=0,
page_size=15,
order=1,
order_by=None,
):
query = Question.query
if name:
query = query.filter(Question.name.like(f"%{name}%"))
if total_score:
query = query.filter(Question.total_score == total_score)
if type_id:
query = query.filter(Question.type_id == type_id)
if slide_id:
query = query.filter(Question.slide_id == slide_id)
if competition_id:
slide_ids = set(
[x.id for x in Slide.query.filter(Slide.competition_id == competition_id).all()]
) # TODO: Filter using database instead of creating a set of slide_ids
query = query.filter(Question.slide_id.in_(slide_ids))
order_column = Question.id # Default order_by
if order_by:
order_column = getattr(Question.__table__.c, order_by)
return query.pagination(page, page_size, order_column, order)