if groups: return db.query(Schedule).\ filter((Schedule.nodesinclude.any(ScheduleNodeInclude.node == self.name) | Schedule.groupsinclude.any(ScheduleGroupInclude.group.in_(groups))) & ~(Schedule.nodesexclude.any(ScheduleNodeExclude.node == self.name)) & ~(Schedule.groupsexclude.any(ScheduleGroupExclude.group.in_(groups)))).all() else: return db.query(Schedule).\ filter(Schedule.nodesinclude.any(ScheduleNodeInclude.node == self.name) & ~(Schedule.nodesexclude.any(ScheduleNodeExclude.node == self.name))).all()