def add(self, user_id, item_id): assert (user_id == str(user_id)) assert (item_id == str(item_id)) self._user_uuids_mapping.insert(user_id, OOBTree.OOTreeSet()) self._uuid_users_mapping.insert(item_id, OOBTree.OOTreeSet()) self._user_uuids_mapping[user_id].insert(item_id) self._uuid_users_mapping[item_id].insert(user_id)
def set_follow(self, actor, other): """User <actor> subscribes to user <other>""" assert (actor == str(actor)) assert (other == str(other)) # insert user if not exists self._following.insert(actor, OOBTree.OOTreeSet()) self._followers.insert(other, OOBTree.OOTreeSet()) # add follow subscription self._following[actor].insert(other) self._followers[other].insert(actor)
def like(self, item_type, item_id, user_id): """User <user_id> likes <item_type> <item_id>""" item_type = decode(item_type) assert (item_type in self.supported_like_types) user_id = decode(user_id) item_id = decode(item_id) self._likes[item_type].insert(user_id, OOBTree.OOTreeSet()) self._liked[item_type].insert(item_id, OOBTree.OOTreeSet()) self._likes[item_type][user_id].insert(item_id) self._liked[item_type][item_id].insert(user_id)
def follow(self, item_type, item_id, user_id): """User <user_id> subscribes to <item_type> <item_id>""" item_type = decode(item_type) assert (item_type in self.supported_follow_types) user_id = decode(user_id) item_id = decode(item_id) # insert user if not exists self._following[item_type].insert(user_id, OOBTree.OOTreeSet()) self._followers[item_type].insert(item_id, OOBTree.OOTreeSet()) # add follow subscription self._following[item_type][user_id].insert(item_id) self._followers[item_type][item_id].insert(user_id)
def test_unpack_treeset(self): struct = OOBTree.OOTreeSet() struct.insert('foo') struct.insert('bar') g = NetworkGraph() flat = g.unpack(struct) self.assertEqual(flat, ['bar', 'foo'])
def test_unpack_btree_treeset(self): struct = OOBTree.OOBTree() struct['foo'] = OOBTree.OOTreeSet() struct['foo'].insert('baz') struct['foo'].insert('bar') g = NetworkGraph() flat = g.unpack(struct) self.assertEqual(flat, {'foo': ['bar', 'baz']})
def tag(self, item_type, item_id, user_id, *tags): """User <user_id> adds tags <*tags> on <item_type> <item_id>""" item_type = decode(item_type) assert (item_type in self.supported_tag_types) user_id = decode(user_id) item_id = decode(item_id) tags = [decode(tag) for tag in tags] for tag in tags: if user_id not in self._tagged: self._tagged[user_id] = OOBTree.OOBTree() if tag not in self._tagged[user_id]: self._tagged[user_id][tag] = OOBTree.OOBTree() for _type in self.supported_tag_types: self._tagged[user_id][tag][_type] = OOBTree.OOTreeSet() self._tagged[user_id][tag][item_type].insert(item_id) if item_id not in self._tagger[item_type]: self._tagger[item_type][item_id] = OOBTree.OOBTree() if tag not in self._tagger[item_type][item_id]: self._tagger[item_type][item_id][tag] = OOBTree.OOTreeSet() self._tagger[item_type][item_id][tag].insert(user_id) if user_id not in self._tags: self._tags[user_id] = OOBTree.OOBTree() for _type in self.supported_tag_types: self._tags[user_id][_type] = OOBTree.OOBTree() if item_id not in self._tags[user_id][item_type]: self._tags[user_id][item_type][item_id] = OOBTree.OOTreeSet() self._tags[user_id][item_type][item_id].insert(tag) if tag not in self._bytag: self._bytag[tag] = OOBTree.OOBTree() for _type in self.supported_tag_types: self._bytag[tag][_type] = OOBTree.OOBTree() if item_id not in self._bytag[tag][item_type]: self._bytag[tag][item_type][item_id] = OOBTree.OOTreeSet() self._bytag[tag][item_type][item_id].insert(user_id)
def indexTrack(self, trackNum, track): ixd = track.indexdata for attr in self.indexAttributes: value = ixd[attr] if value is not None: self.indexes[attr].index_doc(trackNum, value) taskId = ixd['taskId'] userName = ixd['userName'] if taskId not in self.taskUsers: self.taskUsers[taskId] = OOBTree.OOTreeSet() self.taskUsers[taskId].update([userName])
def __init__(self): self._bookings = OOBTree.OOTreeSet() self._count = Length(0)