Exemplo n.º 1
0
def process_thread_paginator(trending=False, rs=None, subreddit=None):
    """
    abstracted because many sources pull from a thread listing
    source (subreddit permalink, homepage, etc)
    """
    threads_per_page = 15
    cur_page = request.args.get('page') or 1
    cur_page = int(cur_page)
    thread_paginator = None

    # if we are passing in a resultset, that means we are just looking to
    # quickly paginate some arbitrary data, no sorting
    if rs:
        thread_paginator = rs.paginate(cur_page,
                                       per_page=threads_per_page,
                                       error_out=True)
        return thread_paginator

    # sexy line of code :)
    base_query = subreddit.threads if subreddit else Thread.query

    if trending:
        thread_paginator = base_query.order_by(db.desc(Thread.votes)).\
        paginate(cur_page, per_page=threads_per_page, error_out=True)
    else:
        thread_paginator = base_query.order_by(db.desc(Thread.hotness)).\
                paginate(cur_page, per_page=threads_per_page, error_out=True)
    return thread_paginator
Exemplo n.º 2
0
def process_thread_paginator(trending=False, rs=None, subreddit=None):
    """
    abstracted because many sources pull from a thread listing
    source (subreddit permalink, homepage, etc)
    """
    threads_per_page = 15
    cur_page = request.args.get('page') or 1
    cur_page = int(cur_page)
    thread_paginator = None

    # if we are passing in a resultset, that means we are just looking to
    # quickly paginate some arbitrary data, no sorting
    if rs:
        thread_paginator = rs.paginate(cur_page, per_page=threads_per_page,
            error_out=True)
        return thread_paginator

    # sexy line of code :)
    base_query = subreddit.threads if subreddit else Thread.query

    if trending:
        thread_paginator = base_query.order_by(db.desc(Thread.votes)).\
        paginate(cur_page, per_page=threads_per_page, error_out=True)
    else:
        thread_paginator = base_query.order_by(db.desc(Thread.hotness)).\
                paginate(cur_page, per_page=threads_per_page, error_out=True)
    return thread_paginator
Exemplo n.º 3
0
 def get_comments(self, order_by='timestamp'):
     """
     default order by timestamp
     """
     if order_by == 'timestamp':
         return self.children.order_by(db.desc(Comment.created_on)).\
             all()[:THREAD.MAX_COMMENTS]
     else:
         return self.comments.order_by(db.desc(Comment.created_on)).\
             all()[:THREAD.MAX_COMMENTS]
Exemplo n.º 4
0
 def get_comments(self, order_by='timestamp'):
     """
     default order by timestamp
     """
     if order_by == 'timestamp':
         return self.children.order_by(db.desc(Comment.created_on)).\
             all()[:THREAD.MAX_COMMENTS]
     else:
         return self.comments.order_by(db.desc(Comment.created_on)).\
             all()[:THREAD.MAX_COMMENTS]
Exemplo n.º 5
0
 def get_threads(self, order_by='timestamp'):
     """
     default order by timestamp
     """
     if order_by == 'timestamp':
         return self.threads.order_by(db.desc(Thread.created_on)).\
             all()[:SUBREDDIT.MAX_THREADS]
     else:
         return self.threads.order_by(db.desc(Thread.created_on)).\
             all()[:SUBREDDIT.MAX_THREADS]
Exemplo n.º 6
0
 def get_threads(self, order_by='timestamp'):
     """
     default order by timestamp
     """
     if order_by == 'timestamp':
         return self.threads.order_by(db.desc(Thread.created_on)).\
             all()[:SUBREDDIT.MAX_THREADS]
     else:
         return self.threads.order_by(db.desc(Thread.created_on)).\
             all()[:SUBREDDIT.MAX_THREADS]
Exemplo n.º 7
0
 def get_comments(self, order_by='timestamp'):
     """
     default order by timestamp
     return only top levels!
     """
     if order_by == 'timestamp':
         return self.comments.filter_by(depth=1).\
             order_by(db.desc(Comment.created_on)).all()[:THREAD.MAX_COMMENTS]
     else:
         return self.comments.filter_by(depth=1).\
             order_by(db.desc(Comment.created_on)).all()[:THREAD.MAX_COMMENTS]
Exemplo n.º 8
0
 def get_comments(self, order_by='timestamp'):
     """
     default order by timestamp
     return only top levels!
     """
     if order_by == 'timestamp':
         return self.comments.filter_by(depth=1).\
             order_by(db.desc(Comment.created_on)).all()[:THREAD.MAX_COMMENTS]
     else:
         return self.comments.filter_by(depth=1).\
             order_by(db.desc(Comment.created_on)).all()[:THREAD.MAX_COMMENTS]
Exemplo n.º 9
0
def search(query,
           orderby='creation',
           filter_user=None,
           search_title=True,
           search_text=True,
           subreddit=None,
           limit=100):
    """
    search for threads (and maybe comments in the future)
    """
    if not query:
        return []
    query = query.strip()
    base_query = '%' + query + '%'

    base_qs = Thread.query

    title_clause = Thread.title.like(base_query) if search_title else False
    text_clause = Thread.text.like(base_query) if search_text else False
    # TODO: Searching by subreddit requires joining, leave out for now.
    # subreddit_clause = Thread.subreddit.name.like(subreddit.name) if subreddit else False

    or_clause = db.or_(title_clause, text_clause)

    base_qs = base_qs.filter(or_clause)

    if orderby == 'creation':
        base_qs = base_qs.order_by(db.desc(Thread.created_on))
    elif orderby == 'title':
        base_qs = base_qs.order_by(Thread.title)
    elif orderby == 'numb_comments':
        pass

    base_qs = base_qs.limit(limit)
    return base_qs
Exemplo n.º 10
0
def search(query, orderby='creation', filter_user=None, search_title=True,
            search_text=True, subreddit=None, limit=100):
    """
    search for threads (and maybe comments in the future)
    """
    if not query:
        return []
    query = query.strip()
    base_query = '%' + query + '%'

    base_qs = Thread.query

    title_clause = Thread.title.like(base_query) if search_title else False
    text_clause = Thread.text.like(base_query) if search_text else False
    # TODO: Searching by subreddit requires joining, leave out for now.
    # subreddit_clause = Thread.subreddit.name.like(subreddit.name) if subreddit else False

    or_clause = db.or_(title_clause, text_clause)

    base_qs = base_qs.filter(or_clause)

    if orderby == 'creation':
        base_qs = base_qs.order_by(db.desc(Thread.created_on))
    elif orderby == 'title':
        base_qs = base_qs.order_by(Thread.title)
    elif orderby == 'numb_comments':
        pass

    base_qs = base_qs.limit(limit)
    return base_qs