rset.py
changeset 1381 6042f1b342bb
parent 616 545a7e18c47f
child 1477 b056a49c16dc
equal deleted inserted replaced
1379:6c6dbc0df829 1381:6042f1b342bb
    49         # .limit method
    49         # .limit method
    50         self.limited = None
    50         self.limited = None
    51         # set by the cursor which returned this resultset
    51         # set by the cursor which returned this resultset
    52         self.vreg = None
    52         self.vreg = None
    53         self.req = None
    53         self.req = None
    54    
    54         # actions cache
       
    55         self._rsetactions = None
       
    56         
    55     def __str__(self):
    57     def __str__(self):
    56         if not self.rows:
    58         if not self.rows:
    57             return '<empty resultset %s>' % self.rql
    59             return '<empty resultset %s>' % self.rql
    58         return '<resultset %s (%s rows)>' % (self.rql, len(self.rows))
    60         return '<resultset %s (%s rows)>' % (self.rql, len(self.rows))
    59     
    61     
    68                                                      '\n'.join(str(r) for r in rows))
    70                                                      '\n'.join(str(r) for r in rows))
    69         return '<resultset %r (%s rows): %s>' % (self.rql, len(self.rows),
    71         return '<resultset %r (%s rows): %s>' % (self.rql, len(self.rows),
    70                                                  '\n'.join('%s (%s)' % (r, d)
    72                                                  '\n'.join('%s (%s)' % (r, d)
    71                                                            for r, d in zip(rows, self.description)))
    73                                                            for r, d in zip(rows, self.description)))
    72 
    74 
    73     @cached
    75     def possible_actions(self, **kwargs):
    74     def possible_actions(self):
    76         if self._rsetactions is None:
    75         return self.vreg.possible_vobjects('actions', self.req, self)
    77             self._rsetactions = {}
       
    78         if kwargs:
       
    79             key = tuple(sorted(kwargs.iteritems()))
       
    80         else:
       
    81             key = None
       
    82         try:
       
    83             return self._rsetactions[key]
       
    84         except KeyError:
       
    85             actions = self.vreg.possible_vobjects('actions', self.req, self, **kwargs)
       
    86             self._rsetactions[key] = actions
       
    87             return actions
    76     
    88     
    77     def __len__(self):
    89     def __len__(self):
    78         """returns the result set's size"""
    90         """returns the result set's size"""
    79         return self.rowcount
    91         return self.rowcount
    80 
    92