def __init__(self, username=None, user_id=None, page=1, post_filter=None, id_list=None, only_public=False, post_amount=None): self.username = username self.user_id = user_id self.page = page self.post_filter = post_filter self.id_list = id_list self.only_public = only_public self.posts_per_page = post_amount if post_amount else \ user.get_posts_per_page() self.offset = (self.page-1)*self.posts_per_page # get post query object query = DBPosts.query if self.id_list == 'all': # get all posts and return self.post_list = query.order_by(DBPosts.id.desc()).all() return if self.username and not self.user_id: # get user id self.user_id = user.get_user_id_from_name(self.username) # filter posts py user query = query.filter_by(user_id=self.user_id) if self.post_filter: if self.post_filter in post_categories: # filter by categories query = query.filter_by(content_type=self.post_filter) else: # filter by date query = query.filter(DBPosts.time.startswith(self.post_filter)) if self.only_public: # only public posts query = query.filter_by(is_public=True) # set order query = query.order_by(DBPosts.id.desc()) # set limit query = query.limit(self.posts_per_page) # set offset query = query.offset(self.offset) # query database self.post_list = query.all()
def calc_page_links(post_amount, page_number): page = dict(number=page_number) page['prev'] = page_number-1 if page_number>1 else 0 page['next'] = page_number+1 if post_amount==get_posts_per_page() else 0 return page