Esempio n. 1
0
    def get_by(cls,
               first=False,
               to_dict=True,
               fl=None,
               exclude=None,
               deleted=False,
               use_master=False,
               **kwargs):
        db_session = db.session if not use_master else db.session().using_bind(
            "master")
        fl = fl.strip().split(",") if fl and isinstance(
            fl, six.string_types) else (fl or [])
        exclude = exclude.strip().split(",") if exclude and isinstance(
            exclude, six.string_types) else (exclude or [])

        keys = cls.get_columns()
        fl = [k for k in fl if k in keys]
        fl = [k for k in keys
              if k not in exclude and not k.isupper()] if exclude else fl
        fl = list(filter(lambda x: "." not in x, fl))

        if hasattr(cls, "deleted") and deleted is not None:
            kwargs["deleted"] = deleted

        if fl:
            query = db_session.query(*[getattr(cls, k) for k in fl])
            query = query.filter_by(**kwargs)
            result = [{k: getattr(i, k) for k in fl} for i in query]
        else:
            result = [
                i.to_dict() if to_dict else i
                for i in getattr(cls, 'query').filter_by(**kwargs)
            ]

        return result[0] if first and result else (None if first else result)
Esempio n. 2
0
 def with_deleted(self):
     return self.__class__(db.class_mapper(self._mapper_zero().class_),
                           session=db.session(),
                           _with_deleted=True)