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)
def setUp(self): super(TestModels, self).setUp() self.create_data(4) self.models = Models(Post, User)
def setUp(self): super(TestMultiModels, self).setUp() self.create_data(4) self.models = Models(Post, User)
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
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