Esempio n. 1
0
def test_insert1(env):
    users = []

    user1 = User()
    user1.oid = 1
    user1.name = 'Homer Simpson'
    user1.authid = 'homer'
    user1.email = '*****@*****.**'
    user1.birthday = datetime.date(1950, 12, 24)
    user1.is_friendly = True
    user1.tags = ['relaxed', 'beerfan']
    users.append(user1)

    user2 = User()
    user2.oid = 2
    user2.name = 'Crocodile Dundee'
    user2.authid = 'crocoboss'
    user2.email = '*****@*****.**'
    user2.birthday = datetime.date(1960, 2, 4)
    user2.is_friendly = False
    user2.tags = ['red', 'yellow']
    user2.referred_by = user1.oid
    users.append(user2)

    user3 = User()
    user3.oid = 3
    user3.name = 'Foobar Space'
    user3.authid = 'foobar'
    user3.email = '*****@*****.**'
    user3.birthday = datetime.date(1970, 5, 7)
    user3.is_friendly = True
    user3.tags = ['relaxed', 'beerfan']
    user3.referred_by = user1.oid
    users.append(user3)

    with Transaction(env, write=True) as txn:
        for user in users:
            _user = txn.users[user.oid]
            if not _user:
                txn.users[user.oid] = user
                #txn.users_by_authid[user.authid] = user.oid
                print('user stored', user)
            else:
                print('user loaded', _user)
Esempio n. 2
0
def test_insert1(env):
    users = []

    user1 = User()
    user1.oid = 1
    user1.name = 'Homer Simpson'
    user1.authid = 'homer'
    user1.email = '*****@*****.**'
    user1.birthday = datetime.date(1950, 12, 24)
    user1.is_friendly = True
    user1.tags = ['relaxed', 'beerfan']
    users.append(user1)

    user2 = User()
    user2.oid = 2
    user2.name = 'Crocodile Dundee'
    user2.authid = 'crocoboss'
    user2.email = '*****@*****.**'
    user2.birthday = datetime.date(1960, 2, 4)
    user2.is_friendly = False
    user2.tags = ['red', 'yellow']
    user2.referred_by = user1.oid
    users.append(user2)

    user3 = User()
    user3.oid = 3
    user3.name = 'Foobar Space'
    user3.authid = 'foobar'
    user3.email = '*****@*****.**'
    user3.birthday = datetime.date(1970, 5, 7)
    user3.is_friendly = True
    user3.tags = ['relaxed', 'beerfan']
    user3.referred_by = user1.oid
    users.append(user3)

    with Transaction(env, write=True) as txn:
        for user in users:
            _user = txn.users[user.oid]
            if not _user:
                txn.users[user.oid] = user
                #txn.users_by_authid[user.authid] = user.oid
                print('user stored', user)
            else:
                print('user loaded', _user)
Esempio n. 3
0
def test_insert2(env):
    with Transaction(env, write=True) as txn:
        for i in range(100):
            user = User()
            user.oid = i + 10
            user.name = 'Test {}'.format(i)
            user.authid = 'test-{}'.format(i)
            user.email = '{}@example.com'.format(user.authid)
            for j in range(10):
                user.ratings['test-rating-{}'.format(j)] = random.random()

            _user = txn.users[user.oid]
            if not _user:
                txn.users[user.oid] = user
                #txn.users_by_authid[user.authid] = user.oid
                print('user stored', user, user.oid, user.authid)
            else:
                print('user loaded', _user, _user.oid, _user.authid)
Esempio n. 4
0
def test_insert2(env):
    with Transaction(env, write=True) as txn:
        for i in range(100):
            user = User()
            user.oid = i + 10
            user.name = 'Test {}'.format(i)
            user.authid = 'test-{}'.format(i)
            user.email = '{}@example.com'.format(user.authid)
            for j in range(10):
                user.ratings['test-rating-{}'.format(j)] = random.random()

            _user = txn.users[user.oid]
            if not _user:
                txn.users[user.oid] = user
                #txn.users_by_authid[user.authid] = user.oid
                print('user stored', user, user.oid, user.authid)
            else:
                print('user loaded', _user, _user.oid, _user.authid)
Esempio n. 5
0
def test_insert3(env):
    oid = 4

    with Transaction(env, write=True) as txn:
        user = txn.users[oid]
        if not user:
            user = User()
            user.oid = oid
            user.name = 'Foobar Space'
            user.authid = 'foobar'
            user.email = '*****@*****.**'
            user.birthday = datetime.date(1970, 5, 7)
            user.is_friendly = True
            user.tags = ['relaxed', 'beerfan']
            user.referred_by = 1

            txn.users[oid] = user
            print('user stored', user)
        else:
            print('user loaded', user)
Esempio n. 6
0
def test_insert3(env):
    oid = 4

    with Transaction(env, write=True) as txn:
        user = txn.users[oid]
        if not user:
            user = User()
            user.oid = oid
            user.name = 'Foobar Space'
            user.authid = 'foobar'
            user.email = '*****@*****.**'
            user.birthday = datetime.date(1970, 5, 7)
            user.is_friendly = True
            user.tags = ['relaxed', 'beerfan']
            user.referred_by = 1

            txn.users[oid] = user
            print('user stored', user)
        else:
            print('user loaded', user)
Esempio n. 7
0
def parse_post(content):
    post = Post()
    users = []
    comments = []

    # Note: this code needs patched lxml with support for huge_tree in HTMLParser
    parser = lxml.etree.HTMLParser(recover=True, huge_tree=True)
    root = lxml.etree.HTML(content, parser=parser)

    # post
    post_node = root.xpath('//li[@class="hentry"]')[0]
    comments_node = post_node.xpath('.//div[@class="entry-comments"]')[0]
    author_node = post_node.xpath('.//p[@class="author"]')[0]

    post_url = post_node.xpath('.//a[@class="entry-title"]')[0].get('href')
    post.post_id = int(re.search(r'/(\d+)$', post_url).group(1))

    comment_list_raw = comments_node.xpath('ul')[0].get("id")
    post.comment_list_id = int(re.match(r'comments_(\d+)$', comment_list_raw).group(1))

    post.language = post_node.xpath('.//a[@rel="chapter"]')[0].text

    post.code = post_node.xpath('div[@class="entry-content"]/pre/code')[0].text
    post.text = inner_html(post_node.xpath('p[@class="description"]')[0])

    post.posted = parse_date(author_node.xpath('abbr')[0].get('title'))

    post.vote_plus, post.vote_minus, post.rating = parse_rating(post_node.xpath('p[@class="vote"]/strong')[0])

    # author info
    user = User()

    user_url = author_node.xpath('a[1]')[0].get('href')
    user.user_id = int(re.search(r'/user/(\d+)$', user_url).group(1))
    user.name = author_node.xpath('a[2]')[0].text
    user.avatar_hash = parse_avatar(author_node.xpath('a[1]/img')[0].get('src'))

    post.user_id = user.user_id
    users.append(user)

    # comments
    for comment_node in comments_node.xpath('.//div[@class="entry-comment-wrapper"]'):
        comment = Comment()

        comment.comment_id = int(re.match(r'comment-(\d+)$', comment_node.get('id')).group(1))
        comment.post_id = post.post_id

        parent_node = comment_node.getparent().getparent().getparent()
        if parent_node.tag == 'li':
            parent_node = parent_node.xpath('div[@class="entry-comment-wrapper"]')[0]
            comment.parent_id = int(re.match(r'comment-(\d+)$', parent_node.get('id')).group(1))
        else:
            comment.parent_id = None

        comment.text = inner_html(comment_node.xpath('.//span[@class="comment-text"]')[0])

        info_node = comment_node.xpath('p[@class="entry-info"]')[0]

        comment.posted = parse_date(info_node.xpath('abbr[@class="published"]')[0].get('title'))
        comment.vote_plus, comment.vote_minus, comment.rating = parse_rating(info_node.xpath('span[@class="comment-vote"]/strong')[0])

        user_node = info_node.xpath('strong[@class="entry-author"]/a')[0]

        user = User()
        user.user_id = int(re.search(r'/user/(\d+)$', user_node.get('href')).group(1))
        user.name = user_node.text
        user.avatar_hash = parse_avatar(info_node.xpath('img[@class="avatar"]')[0].get('src'))

        comment.user_id = user.user_id
        users.append(user)
        comments.append(comment)

    return (post, users, comments)