def _get_query(self, argv): mapper = models.class_mapper(self._obj) args, kwargs = _query_args(argv[1:], self._environ) q = _session.query(self._obj) if args: grps, left = divmod(len(args), 3) if grps: for name, op, val in _by_three(args[:grps*3]): col = getattr(self._obj, name) opm = {"=": col.__eq__, ">": col.__gt__, "<": col.__lt__, "match": col.match, "contains": col.contains, "in": col.in_, "like": col.like}.get(op) if opm: if op == "like": val = val.replace("*", "%") val = val.replace(".", "_") if "%" not in val: val = "%" + val + "%" if op == "in": val = val.split(",") q = q.filter(opm(val)) for name in args[grps*3:]: if name.startswith("="): q = q.order_by(name[1:]) if kwargs: for name, value in kwargs.items(): col = getattr(self._obj, name) value = CLI.clieval(value) q = q.filter(col.__eq__(value)) return q