Exemplo n.º 1
0
 def distinct(self, *criteria):
     """Restrict query result to distinct elements."""
     n = len(criteria)
     if n == 0:
         _distinct = uniq
     else:
         if n == 1:
             criterion = first(criteria)
         elif criteria:
             criterion = TFL.Filter_And(*criteria)
         _distinct = _Q_Filter_Distinct_(criterion)
     return _Q_Result_(self, _distinct=_distinct)
Exemplo n.º 2
0
 def group_by(self, *criteria, **kw):
     """Group query result by `criteria`."""
     if kw:
         criteria = list(criteria)
         Q = self.Q
         for k, v in pyk.iteritems(kw):
             criteria.append(getattr(Q, k) == v)
         criteria = tuple(criteria)
     assert criteria
     if len(criteria) == 1:
         criterion = first(criteria)
     else:
         criterion = TFL.Filter_And(*criteria)
     return self._Q_Result_Group_By_(self, criterion, self._distinct)
Exemplo n.º 3
0
 def filter(self, *criteria, **kw):
     """Restrict query result to elements matching the `criteria`."""
     if kw:
         criteria = list(criteria)
         Q = self.Q
         for k, v in pyk.iteritems(kw):
             criteria.append(getattr(Q, k) == v)
         criteria = tuple(criteria)
     assert criteria
     if len(criteria) == 1:
         criterion = first(criteria)
     else:
         criterion = TFL.Filter_And(*criteria)
     return self._Q_Result_Filtered_(self, criterion, self._distinct)