query = session.query(Movie) clauses = [] if moviesearch.finnishTitle is not None: clauses.append(func.lower(self.movie_table.c.finnish_name) == moviesearch.finnishTitle.lower()) if moviesearch.yearStart is not None: clauses.append(self.movie_table.c.year >= moviesearch.yearStart) if moviesearch.yearEnd is not None: clauses.append(self.movie_table.c.year <= moviesearch.yearEnd) if moviesearch.imdbID is not None: clauses.append(or_(func.lower(self.movie_table.c.url).like('%' + moviesearch.imdbID + '%'), func.lower(self.movie_table.c.imdb_url).like('%' + moviesearch.imdbID + '%'))) return query.select(and_(*clauses))