Changeset 500
- Timestamp:
- 09/22/07 14:56:59
- Files:
-
- trunk/dejavu/storage/__init__.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/dejavu/storage/__init__.py
r499 r500 42 42 self.classes = set() 43 43 self.associations = Graph(directed=False) 44 44 45 # TODO: move these somewhere else 45 46 self.engine_functions = {} 47 46 48 self.logflags = logflags.ERROR + logflags.IO 47 49 … … 64 66 def register(self, cls): 65 67 """Assert that Units of class 'cls' will be handled.""" 68 try: 69 # hack for db SM's 70 nodename = self.db.name 71 except AttributeError: 72 nodename = self.__class__.__name__ 73 74 if self.logflags & logflags.REGISTER: 75 msg = logflags.REGISTER.message(nodename, cls) 76 print msg 77 self.log(msg) 78 66 79 self.classes.add(cls) 67 80 … … 390 403 filters = dict([(cls, None) for cls in query.relation]) 391 404 data = self._combine(query.relation, filters) 405 if order: 406 data = [unit for unit in data] 407 data.sort(dejavu.sort(order)) 408 data = iter(data) 392 409 393 410 if isinstance(query.attributes, logic.Expression): … … 403 420 yield datarow 404 421 elif query.attributes is None: 405 # What sort order (within each Unit)?422 # TODO: What sort order (within each Unit)? 406 423 choke 407 424 else: … … 427 444 else: 428 445 data = self.recall(query.relation, expr) 446 if order: 447 data.sort(dejavu.sort(order)) 448 data = iter(data) 429 449 430 450 if isinstance(query.attributes, logic.Expression): … … 455 475 else: 456 476 yield datarow 457 return self._paginate(puller(), order, limit, offset) 477 478 ordered_data = puller() 479 try: 480 for x in xrange(offset or 0): 481 ordered_data.next() 482 483 if limit: 484 for x in xrange(limit): 485 yield ordered_data.next() 486 else: 487 for unit in ordered_data: 488 yield unit 489 except StopIteration: 490 return 458 491 459 492 def view(self, query, order=None, limit=None, offset=None, distinct=False):
