def filter_by(me, **kargs): ''' A.query().filter_by( x=4, **{'b.c.d':5, ...}) ''' r = me for k, v in kargs.iteritems(): attrs = k.split('.') if attrs[:-1]: r = r.join(attrs[:-1]) r = _saQuery.filter_by(r, **{attrs[-1]: v}) r = r.reset_joinpoint() return r
def filter_by(me, **kargs): """ A.query().filter_by( x=4, **{'b.c.d':5, ...}) """ r = me for k, v in kargs.iteritems(): attrs = k.split(".") if attrs[:-1]: r = r.join(attrs[:-1]) r = _saQuery.filter_by(r, **{attrs[-1]: v}) r = r.reset_joinpoint() return r
def filter_by_subattr(me, _subattr, **kargs): ''' A.query().filter( A.b.has( cod= b1.cod)).filter( A.c.has( cod= c1.cod)) == A.query().join( A.b).filter_by( cod= b1.cod).join( A.c).filter_by( cod= c1.cod)) -> A.query().filter_by_subattr( 'cod', b=b1, c=c1) used for hiding .obj_id, similar to .dbid being hidden in A.ptrB == b1, e.g. Pozicia.query( lambda self: self.firma.obj_id == f1.obj_id) -> Pozicia.query().filter_by_obj_id( firma = f1) ''' r = me for k, v in kargs.iteritems(): r = r.join(k.split('.')) r = _saQuery.filter_by(r, **{_subattr: getattr(v, _subattr)}) r = r.reset_joinpoint() return r
def filter_by_subattr(me, _subattr, **kargs): """ A.query().filter( A.b.has( cod= b1.cod)).filter( A.c.has( cod= c1.cod)) == A.query().join( A.b).filter_by( cod= b1.cod).join( A.c).filter_by( cod= c1.cod)) -> A.query().filter_by_subattr( 'cod', b=b1, c=c1) used for hiding .obj_id, similar to .dbid being hidden in A.ptrB == b1, e.g. Pozicia.query( lambda self: self.firma.obj_id == f1.obj_id) -> Pozicia.query().filter_by_obj_id( firma = f1) """ r = me for k, v in kargs.iteritems(): r = r.join(k.split(".")) r = _saQuery.filter_by(r, **{_subattr: getattr(v, _subattr)}) r = r.reset_joinpoint() return r