示例#1
0
    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)
示例#2
0
 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)
示例#3
0
    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)
示例#4
0
 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)
示例#5
0
 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'])
示例#6
0
 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']})
示例#7
0
    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)
示例#8
0
 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])
示例#9
0
 def __init__(self):
     self._bookings = OOBTree.OOTreeSet()
     self._count = Length(0)