def thread_keys(self, thread_id, min=None, max=None, limit=100): if not thread_id: return () mapping = self._threadid_mapping.get(thread_id) if not mapping: return [thread_id] return longkeysortreverse(mapping, min, max, limit, reverse=False)
def keys(self, min=None, max=None, limit=100, tag=None): if tag and tag not in self._tag_mapping: return () # secure mapping = self._keys_tag(tag, self.allowed_status_keys()) return longkeysortreverse(mapping, min, max, limit)
def thread_keys(self, thread_id, min=None, max=None, limit=100): if not thread_id: return () mapping = self._threadid_mapping.get(thread_id) or [thread_id] mapping = self.secure(mapping) return longkeysortreverse(mapping, min, max, limit, reverse=False)
def keys(self, min=None, max=None, limit=100, tag=None): self._check_permission("read") if tag and tag not in self._tag_mapping: return () mapping = self._keys_tag(tag, self.allowed_status_keys()) return longkeysortreverse(mapping, min, max, limit)
def context_keys(self, microblog_context, min=None, max=None, limit=100, nested=True): if nested: # hits portal_catalog nested_uuids = [ uuid for uuid in self.nested_uuids(microblog_context) if uuid in self._uuid_mapping ] if not nested_uuids: return () else: # used in test_statuscontainer_microblog_context uuid = self._context2uuid(microblog_context) if uuid not in self._uuid_mapping: return () nested_uuids = [uuid] matches = self._query_mapping(self._uuid_mapping, nested_uuids) matches = self.secure(matches) return longkeysortreverse(matches, min, max, limit)
def context_keys(self, context, min=None, max=None, limit=100, tag=None, nested=True, mention=None): if tag and tag not in self._tag_mapping: return () if nested: # hits portal_catalog nested_uuids = [uuid for uuid in self.nested_uuids(context) if uuid in self._uuid_mapping] if not nested_uuids: return () else: # used in test_statuscontainer_context for non-integration tests uuid = self._context2uuid(context) if uuid not in self._uuid_mapping: return () nested_uuids = [uuid] # tag and uuid filters handle None inputs gracefully keyset_tag = self._keys_tag(tag, self.allowed_status_keys()) # mention and uuid filters handle None inputs gracefully keyset_mention = self._keys_tag(mention, keyset_tag) # calculate the tag+mention+uuid intersection for each uuid context keyset_uuids = [self._keys_uuid(_uuid, keyset_mention) for _uuid in nested_uuids] # merge the intersections merged_set = LLBTree.multiunion(keyset_uuids) merged_set = self.secure(merged_set) return longkeysortreverse(merged_set, min, max, limit)
def mention_keys(self, mentions, min=None, max=None, limit=100, tag=None): if not mentions: return () if tag and tag not in self._tag_mapping: return () if mentions == str(mentions): # single mention optimization mention = mentions mapping = self._mentions_mapping.get(mention) if not mapping: return () else: # collection of LLTreeSet treesets = (self._mentions_mapping.get(mention) for mention in mentions if mention in self._mentions_mapping.keys()) mapping = reduce(LLBTree.union, treesets, LLBTree.TreeSet()) # returns unchanged mapping if tag is None mapping = self._keys_tag(tag, mapping) mapping = self.secure(mapping) return longkeysortreverse(mapping, min, max, limit)
def thread_keys(self, thread_id, min=None, max=None, limit=100): if not thread_id: return () mapping = self._threadid_mapping.get(thread_id) or [thread_id] mapping = self.secure(mapping) return longkeysortreverse(mapping, min, max, limit)
def user_keys(self, users, min=None, max=None, limit=100, tag=None): if not users: return () if tag and tag not in self._tag_mapping: return () if users == str(users): # single user optimization userid = users mapping = self._user_mapping.get(userid) if not mapping: return () else: # collection of user LLTreeSet treesets = (self._user_mapping.get(userid) for userid in users if userid in self._user_mapping.keys()) mapping = reduce(LLBTree.union, treesets, LLBTree.TreeSet()) # returns unchanged mapping if tag is None mapping = self._keys_tag(tag, mapping) mapping = self.secure(mapping) return longkeysortreverse(mapping, min, max, limit)
def mention_keys(self, mentions, min=None, max=None, limit=100, tag=None): if not mentions: return () if tag and tag not in self._tag_mapping: return () if mentions == str(mentions): # single mention optimization mention = mentions mapping = self._mentions_mapping.get(mention) if not mapping: return () else: # collection of LLTreeSet treesets = (self._mentions_mapping.get(mention) for mention in mentions if mention in self._mentions_mapping.keys()) mapping = reduce(LLBTree.union, treesets, LLBTree.TreeSet()) # returns unchanged mapping if tag is None mapping = self._keys_tag(tag, mapping) return longkeysortreverse(mapping, min, max, limit)
def user_keys(self, users, min=None, max=None, limit=100, tag=None): if not users: return () if tag and tag not in self._tag_mapping: return () if users == str(users): # single user optimization userid = users mapping = self._user_mapping.get(userid) if not mapping: return () else: # collection of user LLTreeSet treesets = (self._user_mapping.get(userid) for userid in users if userid in self._user_mapping.keys()) mapping = reduce(LLBTree.union, treesets, LLBTree.TreeSet()) # returns unchanged mapping if tag is None mapping = self._keys_tag(tag, mapping) return longkeysortreverse(mapping, min, max, limit)
def context_keys(self, context, min=None, max=None, limit=100, tag=None, nested=True): self._check_permission("read") if tag and tag not in self._tag_mapping: return () if nested: # hits portal_catalog nested_uuids = [uuid for uuid in self.nested_uuids(context) if uuid in self._uuid_mapping] if not nested_uuids: return () else: # used in test_statuscontainer_context for non-integration tests uuid = self._context2uuid(context) if uuid not in self._uuid_mapping: return () nested_uuids = [uuid] # tag and uuid filters handle None inputs gracefully keyset_tag = self._keys_tag(tag, self.allowed_status_keys()) # calculate the tag+uuid intersection for each uuid context keyset_uuids = [self._keys_uuid(uuid, keyset_tag) for uuid in nested_uuids] # merge the intersections merged_set = LLBTree.multiunion(keyset_uuids) return longkeysortreverse(merged_set, min, max, limit)
def thread_keys(self, thread_id, min=None, max=None, limit=100): if not thread_id: return () mapping = self._threadid_mapping.get(thread_id) if not mapping: return [thread_id] else: if thread_id not in mapping: mapping.insert(thread_id) return longkeysortreverse(mapping, min, max, limit)
def keys(self, min=None, max=None, limit=100, tags=None, users=None): # secure if tags is None and users is None: matches = self.allowed_status_keys() else: matches = self.secure( LLBTree.union( self._query_mapping(self._tag_mapping, tags), self._query_mapping(self._user_mapping, users), )) return longkeysortreverse(matches, min, max, limit)
def context_keys(self, context, min=None, max=None, limit=100, tag=None): self._check_permission("read") if tag and tag not in self._tag_mapping: return () uuid = self._context2uuid(context) if uuid not in self._uuid_mapping: return () # tag and uuid filters handle None inputs gracefully keyset1 = self._keys_tag(tag, self.allowed_status_keys()) keyset2 = self._keys_uuid(uuid, keyset1) return longkeysortreverse(keyset2, min, max, limit)
def keys(self, min=None, max=None, limit=100, tag=None): self._check_permission("read") if tag: if tag not in self._tag_mapping: return () mapping = LLBTree.intersection( LLBTree.LLTreeSet(self._status_mapping.keys()), self._tag_mapping[tag]) else: mapping = self._status_mapping return longkeysortreverse(mapping, min, max, limit)
def is_content_keys(self, min=None, max=None, limit=100): # secure keys = self.secure(self._is_content_mapping) return longkeysortreverse(keys, min, max, limit)
def mention_keys(self, mentions, min=None, max=None, limit=100): if not mentions: return () matches = self._query_mapping(self._mentions_mapping, mentions) matches = self.secure(matches) return longkeysortreverse(matches, min, max, limit)