def _init_queues(self): all_prorities = set(cls.priority for cls in util.all_subclasses(TaskMessage)) for priority in sorted(all_prorities, reverse=True): queue = _SinglePriorityQueue(priority) self.queues_by_priority.append(queue) self.queue_map[queue.priority] = queue
def lookup_class(key): """Find a ItemFilter subclass for a key.""" for cls in util.all_subclasses(ItemFilter): if cls.key == key: return cls raise KeyError(key)
def __init__(self, priority): self.priority = priority # map message classes to FIFO deques for that class self.fifo_map = {} # set up our structure for each task with our priority for cls in util.all_subclasses(TaskMessage): if cls.priority == priority: self.fifo_map[cls] = deque() # fifo_cycler is used to cycle through each fifo self.fifo_cycler = itertools.cycle(self.fifo_map.values()) self.fifo_count = len(self.fifo_map)
'CASE ' 'WHEN item.show IS NOT NULL THEN item.show ' 'ELSE item.parent_title ' 'END collate name', 'item.release_date') columns = ['feed.orig_url' 'show', 'parent_title', 'release_date'] query.set_complex_order_by(columns, sql) class DRMSort(ItemSort): key = 'drm' columns = ['-has_drm'] class RateSort(ItemSort): key = 'rate' columns = ['remote_downloader.rate'] class ETASort(ItemSort): key = 'eta' columns = ['remote_downloader.eta'] class TorrentDetailsSort(ItemSort): # FIXME: need to implement this key = 'torrent-details' columns = ['id'] class PlaylistSort(ItemSort): key = 'playlist' columns = ['playlist_item_map.position'] SORT_KEY_MAP = dict((sort.key, sort) for sort in util.all_subclasses(ItemSort))