def search(self, keywords): criteria = [] for keyword in keywords.split(): keyword = '%' + keyword + '%' criteria.append(db.or_(Program.name.ilike(keyword), )) q = reduce(db.and_, criteria) return self.filter(q).distinct()
def conflict_programs(self): return db.session.query(Program)\ .filter_by(channel_id=self.channel_id)\ .filter(db.or_( db.and_(Program.start_dt<self.start_dt, Program.end_dt>self.start_dt), db.and_(Program.start_dt<self.end_dt, Program.end_dt>self.end_dt) ))\ .all()