Beispiel #1
0
    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()
Beispiel #2
0
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