示例#1
0
def render_public(template, **data):
    models = Models(Blog, Author)
    query = models.select()
    results = query.execute()

    if results.count <= 0:
        flashx.warning('Not configure blog or author yet')
        return render_template('error.html')
    blog, author = results.one()
    return render_template(template, blog=blog, author=author,
                           logged_in=logged_in(), **data)
示例#2
0
 def setUp(self):
     super(TestModels, self).setUp()
     self.create_data(4)
     self.models = Models(Post, User)
示例#3
0
 def setUp(self):
     super(TestMultiModels, self).setUp()
     self.create_data(4)
     self.models = Models(Post, User)
示例#4
0
class TestModels(Test):

    def setUp(self):
        super(TestModels, self).setUp()
        self.create_data(4)
        self.models = Models(Post, User)

    def test_where(self):
        assert self.models.where(
            User.id == Post.user_id).select().execute().count == 4
        assert self.models.where(
            User.id == Post.user_id, User.id == 1
        ).select().execute().count == 1

    def test_select(self):
        for post, user in self.models.where(
            User.id == Post.user_id
        ).select():
            assert user.id == post.user_id

        post, user = self.models.where(
            Post.post_id == User.id
        ).getone()

        assert user.id == post.post_id

    def test_groupby(self):
        query = self.models.groupby(User.name).select()
        results = query.execute()
        assert results.count == 4

        query = self.models.groupby(User.name, Post.name).select()
        result = query.execute()
        assert result.count == 16

    def test_having(self):
        query = self.models.groupby(
            User.name).having(fn.count(User.id) >= 1).select()
        results = query.execute()
        assert results.count == 4

        query = self.models.groupby(
            User.name).having(fn.count(User.id) > 4).select()
        results = query.execute()
        assert results.count == 0

        query = self.models.groupby(
            User.name).having(fn.count(User.id) == 4).select()
        results = query.execute()
        assert results.count == 4   # 16 / 4 =4

    def test_distinct(self):
        query = self.models.select(distinct(User.name))
        result = query.execute()
        assert result.count == 4

    def test_update(self):
        assert self.models.where(
            User.id == Post.user_id
        ).update(User.name == 'new').execute() == 4

        User.at(1).getone().name == 'new'

    def test_delete(self):
        assert self.models.where(
            User.id == Post.user_id).delete().execute() == 8
        assert self.models.where(
            User.id == Post.user_id).select().execute().count == 0
        assert Post.count() == 0
        assert User.count() == 0

    def test_delete2(self):
        assert self.models.where(
            User.id == Post.user_id).delete(Post).execute() == 4
        assert User.select().execute().count == 4
        assert Post.count() == 0

    def test_orderby(self):
        g = self.models.where(
            Post.post_id == User.id
        ).orderby(User.name, desc=True).getall()
        d = tuple(g)
        assert d == tuple(sorted(d, key=lambda x: x[1].name, reverse=True))

    def test_limit(self):
        query = self.models.where(
            (Post.user_id == User.id) & (User.id > 1)
        ).limit(4, offset=2).select()
        result = query.execute()
        assert result.count == 1

    def test_getone(self):
        post, user = self.models.where(User.id == Post.user_id).getone()
        assert user.id == post.user_id

    def test_getall(self):
        g = self.models.where(User.id == Post.user_id).getall()
        for post, user in g:
            assert post.user_id == user.id
示例#5
0
class TestMultiModels(Test):

    def setUp(self):
        super(TestMultiModels, self).setUp()
        self.create_data(4)
        self.models = Models(Post, User)

    def test_where(self):
        assert self.models.where(
            User.id == Post.user_id).select().execute().count == 4
        assert self.models.where(
            User.id == Post.user_id, User.id == 1
        ).select().execute().count == 1

    def test_select(self):
        for post, user in self.models.where(
            User.id == Post.user_id
        ).select():
            assert user.id == post.user_id

        post, user = self.models.where(
            Post.post_id == User.id
        ).getone()

        assert user.id == post.post_id == 1

    def test_delete(self):
        if db_type != 'sqlite':  # sqlite dosen't support 'delete xx from xxx'
            assert self.models.where(
                User.id == Post.user_id).delete().execute() == 8
            assert self.models.where(
                User.id == Post.user_id).select().execute().count == 0
            assert Post.count() == 0
            assert User.count() == 0

    def test_delete2(self):
        if db_type != 'sqlite':  # sqlite dosen't support 'delete xx from xxx'
            assert self.models.where(
                User.id == Post.user_id).delete(Post).execute() == 4
            assert User.select().execute().count == 4
            assert Post.count() == 0

    def test_groupby(self):
        query = self.models.groupby(User.name).select()
        results = query.execute()
        assert results.count == 4

        query = self.models.groupby(User.name, Post.name).select()
        result = query.execute()
        assert result.count == 16

    def test_having(self):
        query = self.models.groupby(
            User.name).having(fn.count(User.id) >= 1).select()
        results = query.execute()
        assert results.count == 4

        query = self.models.groupby(
            User.name).having(fn.count(User.id) > 4).select()
        results = query.execute()
        assert results.count == 0

        query = self.models.groupby(
            User.name).having(fn.count(User.id) == 4).select()
        results = query.execute()
        assert results.count == 4   # 16 / 4 =4

    def test_distinct(self):
        query = self.models.select(distinct(User.name))
        result = query.execute()
        assert result.count == 4

    def test_orderby(self):
        g = self.models.where(
            Post.post_id == User.id
        ).orderby(User.name, desc=True).getall()
        d = tuple(g)
        assert d == tuple(sorted(d, key=lambda x: x[1].name, reverse=True))

    def test_limit(self):
        query = self.models.where(
            (Post.user_id == User.id) & (User.id > 1)
        ).limit(4, offset=2).select()
        result = query.execute()
        assert result.count == 1

    def test_getone(self):
        post, user = self.models.where(User.id == Post.user_id).getone()
        assert user.id == post.user_id

    def test_getall(self):
        g = self.models.where(User.id == Post.user_id).getall()
        for post, user in g:
            assert post.user_id == user.id