Esempio n. 1
0
def exec_todo(request, user, todo):
    r = todo.split('_')
    type = r[0]
    id = r[1]
    action = '_'.join(r[2:])
    if type == 'vote':
        subreddit_tag = session.query(SubredditTag).filter(
            SubredditTag.uid == id).first()
        if not subreddit_tag:
            raise NotFound
        vote = session.query(Vote).filter(Vote.subreddit_tag_id == id).filter(
            Vote.user_id == user.uid).first()
        if not vote:
            vote = Vote(subreddit_tag.uid, user.uid)
        if action == 'up':
            vote.up()
        elif action == 'down':
            vote.down()
        else:
            raise NotFound
        session.commit()
        return serve_response('api/bigtag.html', tag=subreddit_tag)
    elif type == 'tag':
        subreddit = session.query(Subreddit).filter_by(id=id).first()
        tag = session.query(Tag).filter_by(name=action).first()
        if not tag:
            tag = Tag()
            tag.user_id = user.uid
            tag.name = action
            session.commit()
        #see if this reddit is tagged already
        subreddit_tag = session.query(SubredditTag)\
                                .filter(SubredditTag.tag_id==tag.uid)\
                                .filter(SubredditTag.subreddit_id==subreddit.uid).first()
        if subreddit_tag:
            #upvote
            vote = session.query(Vote)\
                            .filter(Vote.subreddit_tag_id==subreddit_tag.uid)\
                            .filter(Vote.user_id==user.uid).first()
            if not vote:
                vote = Vote(subreddit_tag.uid, user.uid)
            vote.up()
            session.commit()
            return serve_response('api/bigtag.html', tag=subreddit_tag)
        subreddit_tag = SubredditTag()
        subreddit_tag.tag_id = tag.uid
        subreddit_tag.subreddit_id = subreddit.uid
        subreddit_tag.user_id = user.uid
        subreddit.tags.append(subreddit_tag)
        session.commit()
        vote = Vote(subreddit_tag.uid, user.uid)
        vote.up()
        session.commit()
        return serve_response('api/bigtag.html', tag=subreddit_tag)
    else:
        raise NotFound
Esempio n. 2
0
def user_reddits(request):
    username = request.args.get("user")
    if not username:
        cached = serve_response("stalk.html", username=None)
    else:
        key = _hash("stalk_" + username)
        cached = cache.get(key)
    if cached:
        return cached
    headers = _login()
    reddits = set()
    registered = lastseen = None
    links = comments = {}
    types = ("about", "comments", "submitted")
    for type in types:
        url = "http://www.reddit.com/user/%s/%s.json" % (username, type)
        out = _get_page(url, headers)
        if not out:
            break
        if type == "about":
            data = out["data"]
            username = data["name"]
            registered = datetime.fromtimestamp(data["created_utc"])
            links = {"karma": data["link_karma"]}
            comments = {"karma": data["comment_karma"]}
        else:
            ups = downs = 0
            data = out["data"]["children"]
            count = len(data)
            for i in data:
                date = i["data"]["created_utc"]
                if lastseen is None or lastseen < date:
                    lastseen = date
                ups += i["data"]["ups"]
                downs += i["data"]["downs"]
            reddits.update(set(s["data"]["subreddit"] for s in data))
            if type == "comments":
                comments.update({"ups": ups, "downs": downs, "count": count})
            elif type == "submitted":
                links.update({"ups": ups, "downs": downs, "count": count})
    if lastseen is not None:
        lastseen = datetime.fromtimestamp(lastseen)
        reddits = list(reddits)
        reddits.sort(lambda x, y: cmp(x.lower(), y.lower()))
    response = serve_response(
        "stalk.html",
        username=username,
        registered=registered,
        lastseen=lastseen,
        links=Storage(links),
        comments=Storage(comments),
        reddits=reddits,
    )
    cache.set(key, response, timeout=24 * 60 * 60)
    return response
Esempio n. 3
0
def exec_todo(request, user, todo):
    r = todo.split('_');
    type = r[0]
    id = r[1]
    action = '_'.join(r[2:])
    if type == 'vote':
        subreddit_tag = session.query(SubredditTag).filter(SubredditTag.uid==id).first()
        if not subreddit_tag:
            raise NotFound
        vote = session.query(Vote).filter(Vote.subreddit_tag_id==id).filter(Vote.user_id==user.uid).first()
        if not vote:
            vote = Vote(subreddit_tag.uid, user.uid)
        if action == 'up':
            vote.up()
        elif action == 'down':
            vote.down()
        else:
            raise NotFound
        session.commit()
        return serve_response('api/bigtag.html', tag=subreddit_tag)
    elif type == 'tag':
        subreddit = session.query(Subreddit).filter_by(id=id).first()
        tag = session.query(Tag).filter_by(name=action).first()
        if not tag:
            tag = Tag()
            tag.user_id = user.uid
            tag.name = action
            session.commit()
        #see if this reddit is tagged already
        subreddit_tag = session.query(SubredditTag)\
                                .filter(SubredditTag.tag_id==tag.uid)\
                                .filter(SubredditTag.subreddit_id==subreddit.uid).first()
        if subreddit_tag:
            #upvote
            vote = session.query(Vote)\
                            .filter(Vote.subreddit_tag_id==subreddit_tag.uid)\
                            .filter(Vote.user_id==user.uid).first()
            if not vote:
                vote = Vote(subreddit_tag.uid, user.uid)
            vote.up()
            session.commit()
            return serve_response('api/bigtag.html', tag=subreddit_tag)
        subreddit_tag = SubredditTag()
        subreddit_tag.tag_id = tag.uid
        subreddit_tag.subreddit_id = subreddit.uid
        subreddit_tag.user_id = user.uid
        subreddit.tags.append(subreddit_tag)
        session.commit()
        vote = Vote(subreddit_tag.uid, user.uid)
        vote.up()
        session.commit()
        return serve_response('api/bigtag.html', tag=subreddit_tag)
    else:
        raise NotFound
Esempio n. 4
0
def user_reddits(request):
    username = request.args.get('user')
    if not username:
        cached = serve_response('stalk.html', username=None)
    else:
        key = _hash('stalk_' + username)
        cached = cache.get(key)
    if cached:
        return cached
    headers = _login()
    reddits = set()
    registered = lastseen = None
    links = comments = {}
    types = ('about', 'comments', 'submitted')
    for type in types:
        url = 'http://www.reddit.com/user/%s/%s.json' % (username, type)
        out = _get_page(url, headers)
        if not out:
            break
        if type == 'about':
            data = out['data']
            username = data['name']
            registered = datetime.fromtimestamp(data['created_utc'])
            links = {'karma': data['link_karma']}
            comments = {'karma': data['comment_karma']}
        else:
            ups = downs = 0
            data = out['data']['children']
            count = len(data)
            for i in data:
                date = i['data']['created_utc']
                if lastseen is None or lastseen < date:
                    lastseen = date
                ups += i['data']['ups']
                downs += i['data']['downs']
            reddits.update(set(s['data']['subreddit'] for s in data))
            if type == 'comments':
                comments.update({'ups': ups, 'downs': downs, 'count': count})
            elif type == 'submitted':
                links.update({'ups': ups, 'downs': downs, 'count': count})
    if lastseen is not None:
        lastseen = datetime.fromtimestamp(lastseen)
        reddits = list(reddits)
        reddits.sort(lambda x, y: cmp(x.lower(), y.lower()))
    response = serve_response('stalk.html',
                              username=username,
                              registered=registered,
                              lastseen=lastseen,
                              links=Storage(links),
                              comments=Storage(comments),
                              reddits=reddits)
    cache.set(key, response, timeout=24 * 60 * 60)
    return response
Esempio n. 5
0
def monitor(request):
    if request.method == 'POST':
        key = request.form.get('keyword')
        if not key or len(key) < 5 or len(key) > 20:
            raise NotFound()
        keyword = session.query(Keyword).filter(
            Keyword.keyword.ilike(key)).first()
        if not keyword:
            chars = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
            hash = ''.join([random.choice(chars) for c in range(5)])
            keyword = Keyword(key, hash)
            session.commit()
        if request.logged_in:
            user = session.query(User).filter(
                User.name == request.user).first()
            monitored = session.query(Monitoring).filter(
                Monitoring.user_uid == user.uid).filter(
                    Monitoring.keyword_uid == keyword.uid).first()
            if not monitored:
                m = Monitoring(user.uid, keyword.uid)
                session.commit()
        return redirect(
            url_for('monitor', hash=keyword.hash, slug=keyword.keyword))
    cachekey = _hash('views_content_monitor')
    cached = cache.get(cachekey)
    if cached:
        return cached
    keys = ['bozarking', 'reddit search', 'jailbait']
    keywords = session.query(Keyword).filter(Keyword.keyword.in_(keys)).all()
    response = serve_response('monitor.html', keywords=keywords)
    cache.set(cachekey, response, 10 * 60)
    return response
Esempio n. 6
0
def cachedproxy(request, name):
    cached = cache.get('submissions_' + name)
    if cached:
        return cached
    subreddit = session.query(Subreddit).filter(
        Subreddit.url.ilike(name)).first()
    if not subreddit:
        raise NotFound
    http = httplib2.Http()
    uri = 'http://www.reddit.com/r/%s/.json?limit=5' % name
    response, content = http.request(uri, 'GET')
    if response['status'] == '200':
        out = json.loads(content)
        if out:
            out = out['data']['children']
        if not out:
            r = serve_json('there doesn\'t seem to be anything here.')
        else:
            subreddit.all_age_latest = unix_days_ago(
                out[0]['data']['created_utc'])
            session.commit()
            r = serve_response('api/submissions.html', submissions=out)
            cache.set('submissions_' + name, r, timeout=60 * 60)
    else:
        r = serve_json('fetching submissions failed.')
    return r
Esempio n. 7
0
def subreddit(request, name):
    names = name.split('+')
    subreddits = session.query(Subreddit).filter(
        Subreddit.url.in_(names)).order_by(Subreddit.url).all()
    if not subreddits:
        raise NotFound
    return serve_response('subreddit.html', subreddits=subreddits)
Esempio n. 8
0
def monitor(request):
    if request.method == "POST":
        key = request.form.get("keyword")
        if not key or len(key) < 5 or len(key) > 20:
            raise NotFound()
        keyword = session.query(Keyword).filter(Keyword.keyword.ilike(key)).first()
        if not keyword:
            chars = "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
            hash = "".join([random.choice(chars) for c in range(5)])
            keyword = Keyword(key, hash)
            session.commit()
        if request.logged_in:
            user = session.query(User).filter(User.name == request.user).first()
            monitored = (
                session.query(Monitoring)
                .filter(Monitoring.user_uid == user.uid)
                .filter(Monitoring.keyword_uid == keyword.uid)
                .first()
            )
            if not monitored:
                m = Monitoring(user.uid, keyword.uid)
                session.commit()
        return redirect(url_for("monitor", hash=keyword.hash, slug=keyword.keyword))
    cachekey = _hash("views_content_monitor")
    cached = cache.get(cachekey)
    if cached:
        return cached
    keys = ["bozarking", "reddit search", "jailbait"]
    keywords = session.query(Keyword).filter(Keyword.keyword.in_(keys)).all()
    response = serve_response("monitor.html", keywords=keywords)
    cache.set(cachekey, response, 10 * 60)
    return response
Esempio n. 9
0
def register_form(request):
    # getting and checking input
    username = request.form.get('username', None)
    pw1 = request.form.get('passwd', None)
    pw2 = request.form.get('passwd2', None)
    if not (username and pw1 and pw2):
        return serve_response('login.html', flashMsg='All fields are required.')
    if ' ' in username:
        return serve_response('login.html', flashMsg='Username cannot contain spaces.')
    if get_user(username):
        return serve_response('login.html', flashMsg='Username exists! Please choose another username.')
    if pw1 != pw2:
        return serve_response('login.html', flashMsg='Passwords don\'t match.')
    # create user
    user = User(username, pw1)
    session.commit()
    return login_form(request)
Esempio n. 10
0
def login_form(request):
    username = request.form.get('username')
    password = request.form.get('passwd')
    user = get_user(username)
    if user and user.is_valid_pw(password):
        request.login(username)
        return redirect(url_for('index'))
    flashMsg = 'Invalid credentials.'
    return serve_response('login.html', flashMsg=flashMsg)
Esempio n. 11
0
def login_form(request):
    username = request.form.get('username')
    password = request.form.get('passwd')
    user = get_user(username)
    if user and user.is_valid_pw(password):
        request.login(username)
        return redirect(url_for('index'))
    flashMsg = 'Invalid credentials.'
    return serve_response('login.html', flashMsg=flashMsg)
Esempio n. 12
0
def monitor_detail(request, hash, slug=None):
    if slug is not None and slug[-4:] == ".rss":
        template = "monitor-detail.xml"
        slug = slug[:-4]
    else:
        template = "monitor-detail.html"
    keyword = session.query(Keyword).filter(Keyword.hash == hash).first()
    if keyword is None:
        raise NotFound()
    return serve_response(template, keyword=keyword)
Esempio n. 13
0
def monitor_detail(request, hash, slug=None):
    if slug is not None and slug[-4:] == '.rss':
        template = 'monitor-detail.xml'
        slug = slug[:-4]
    else:
        template = 'monitor-detail.html'
    keyword = session.query(Keyword).filter(Keyword.hash == hash).first()
    if keyword is None:
        raise NotFound()
    return serve_response(template, keyword=keyword)
Esempio n. 14
0
def register_form(request):
    # getting and checking input
    username = request.form.get('username', None)
    pw1 = request.form.get('passwd', None)
    pw2 = request.form.get('passwd2', None)
    if not (username and pw1 and pw2):
        return serve_response('login.html',
                              flashMsg='All fields are required.')
    if ' ' in username:
        return serve_response('login.html',
                              flashMsg='Username cannot contain spaces.')
    if get_user(username):
        return serve_response(
            'login.html',
            flashMsg='Username exists! Please choose another username.')
    if pw1 != pw2:
        return serve_response('login.html', flashMsg='Passwords don\'t match.')
    # create user
    user = User(username, pw1)
    session.commit()
    return login_form(request)
Esempio n. 15
0
def logos(request, view='random'):
    per_page = 30
    query = session.query(Subreddit).filter(Subreddit.logo == True)
    if view == 'all':
        page = int(request.args.get('page', 1))
        query = query.filter(Subreddit.over18 == False).order_by(
            Subreddit.subscribers.desc())
        pagination = Pagination(query, per_page, page, 'logos')
        return serve_response('logos.html', pagination=pagination, view='all')
    elif view == 'over18':
        page = int(request.args.get('page', 1))
        query = query.filter(Subreddit.over18 == True).order_by(
            Subreddit.subscribers.desc())
        pagination = Pagination(query, per_page, page, 'logos')
        return serve_response('logos.html',
                              pagination=pagination,
                              view='over18')
    else:
        logos = query.filter(Subreddit.over18 == False).filter(
            Subreddit.subscribers > 100).order_by(
                sql_random()).limit(per_page).all()
        return serve_response('logos.html', logos=logos, view='random')
Esempio n. 16
0
def logos(request, view="random"):
    per_page = 30
    query = session.query(Subreddit).filter(Subreddit.logo == True)
    if view == "all":
        page = int(request.args.get("page", 1))
        query = query.filter(Subreddit.over18 == False).order_by(Subreddit.subscribers.desc())
        pagination = Pagination(query, per_page, page, "logos")
        return serve_response("logos.html", pagination=pagination, view="all")
    elif view == "over18":
        page = int(request.args.get("page", 1))
        query = query.filter(Subreddit.over18 == True).order_by(Subreddit.subscribers.desc())
        pagination = Pagination(query, per_page, page, "logos")
        return serve_response("logos.html", pagination=pagination, view="over18")
    else:
        logos = (
            query.filter(Subreddit.over18 == False)
            .filter(Subreddit.subscribers > 100)
            .order_by(sql_random())
            .limit(per_page)
            .all()
        )
        return serve_response("logos.html", logos=logos, view="random")
Esempio n. 17
0
def index(request):
    subreddits = session.query(Subreddit)\
                    .filter(Subreddit.subscribers>100)\
                    .filter(Subreddit.fp_submissions==50)\
                    .filter(Subreddit.all_age_latest<31)\
                    .filter(Subreddit.over18==False)\
                    .order_by(sql_random()).limit(30).all()
    logos = session.query(Subreddit)\
            .filter(Subreddit.logo==True)\
            .filter(Subreddit.all_age_latest<90)\
            .filter(Subreddit.over18==False)\
            .filter(Subreddit.subscribers>100)\
            .order_by(sql_random()).limit(30).all()
    return serve_response('index.html', subreddits=subreddits, logos=logos)
Esempio n. 18
0
def login(request):
    response = None
    if request.method == 'POST':
        token = request.form.get('token')
        todo = request.form.get('do')
        if not is_valid_token(todo, token):
            raise Forbidden
        if todo == 'login':
            response = login_form(request)
        if todo == 'reg':
            response = register_form(request)
    if not response:
        response = serve_response('login.html')
    request.session.save_cookie(response, expires=cookie_expires(), max_age=cookie_lifespan())
    return response
Esempio n. 19
0
def login(request):
    response = None
    if request.method == 'POST':
        token = request.form.get('token')
        todo = request.form.get('do')
        if not is_valid_token(todo, token):
            raise Forbidden
        if todo == 'login':
            response = login_form(request)
        if todo == 'reg':
            response = register_form(request)
    if not response:
        response = serve_response('login.html')
    request.session.save_cookie(response,
                                expires=cookie_expires(),
                                max_age=cookie_lifespan())
    return response
Esempio n. 20
0
def index(request):
    subreddits = (
        session.query(Subreddit)
        .filter(Subreddit.subscribers > 100)
        .filter(Subreddit.fp_submissions == 50)
        .filter(Subreddit.all_age_latest < 31)
        .filter(Subreddit.over18 == False)
        .order_by(sql_random())
        .limit(30)
        .all()
    )
    logos = (
        session.query(Subreddit)
        .filter(Subreddit.logo == True)
        .filter(Subreddit.all_age_latest < 90)
        .filter(Subreddit.over18 == False)
        .filter(Subreddit.subscribers > 100)
        .order_by(sql_random())
        .limit(30)
        .all()
    )
    return serve_response("index.html", subreddits=subreddits, logos=logos)
Esempio n. 21
0
def cachedproxy(request, name):
    cached = cache.get('submissions_' + name)
    if cached:
        return cached
    subreddit = session.query(Subreddit).filter(Subreddit.url.ilike(name)).first()
    if not subreddit:
        raise NotFound
    http = httplib2.Http()
    uri = 'http://www.reddit.com/r/%s/.json?limit=5' % name
    response, content = http.request(uri, 'GET')
    if response['status'] == '200':
        out = json.loads(content)
        if out:
            out = out['data']['children']
        if not out:
            r = serve_json('there doesn\'t seem to be anything here.')
        else:
            subreddit.all_age_latest = unix_days_ago(out[0]['data']['created_utc'])
            session.commit()
            r = serve_response('api/submissions.html', submissions=out)
            cache.set('submissions_' + name, r, timeout=60*60)
    else:
        r = serve_json('fetching submissions failed.')
    return r
Esempio n. 22
0
def reddits(request, view="cloud", filter="biggest"):
    key = _hash("view_reddits_" + filter + view + ";".join(["%s:%s" % (k, v) for k, v in request.args.items()]))
    value = cache.get(key)
    if value is not None:
        return value
    subscribers = request.args.get("s") or 100
    page = int(request.args.get("page", 1))
    query = session.query(Subreddit).filter(Subreddit.subscribers >= subscribers).filter(Subreddit.fp_submissions > 0)
    if filter == "new":
        query = query.filter(Subreddit.created > days_ago(90))
    elif filter == "biggest":
        query = query.filter(Subreddit.subscribers > 10000)
    elif filter == "active":
        query = (
            query.filter(Subreddit.fp_submissions == 50)
            .filter(Subreddit.all_age_latest <= 7)
            .filter(Subreddit.over18 == False)
        )
    elif filter == "over18":
        query = query.filter(Subreddit.all_age_latest < 91).filter(Subreddit.over18 == True)
    elif filter == "inactive":
        query = query.filter(Subreddit.all_age_latest < 360).filter(Subreddit.all_age_latest > 90)
    elif filter == "dead":
        query = query.filter(Subreddit.all_age_latest > 360)
    elif filter == "self":
        query = query.filter(Subreddit.selfposts > 20)
    elif filter == "media":
        query = query.filter(Subreddit.fp_media > 20)
    elif filter == "filter":
        q = request.args.get("q")
        t = request.args.get("t")
        l = request.args.get("l") or 1
        o = request.args.get("o")
        if q and len(q) > 2:
            query = query.filter(
                or_(
                    Subreddit.title.ilike("%" + q + "%"),
                    Subreddit.url.ilike("%" + q + "%"),
                    Subreddit.description.ilike("%" + q + "%"),
                )
            )
        if t:
            tag = session.query(Tag).filter(Tag.name == t).first()
            query = query.filter(Subreddit.tags.any(SubredditTag.tag == tag))
        query = query.filter(Subreddit.all_age_latest < l)
        if o and o != "all":
            over18 = True if o == "True" else False
            query = query.filter(Subreddit.over18 == o)
    else:
        query = (
            query.filter(Subreddit.fp_submissions == 25)
            .filter(Subreddit.all_age_latest == 0)
            .filter(Subreddit.over18 == False)
        )
    if view == "cloud":
        subreddits = query.order_by(Subreddit.url).all()
        response = serve_response(
            "reddits.html", view=view, filter=filter, subreddits=subreddits, querystring=request.args
        )
    elif view == "list":
        query = query.order_by(Subreddit.subscribers.desc())
        pagination = Pagination(query, 50, page, "reddits")
        response = serve_response(
            "reddits.html", view=view, filter=filter, pagination=pagination, querystring=request.args
        )
    if not "response" in locals():
        raise NotFound
    cache.set(key, response, 3600)
    return response
Esempio n. 23
0
def index(request):
    return serve_response('admin.html')
Esempio n. 24
0
def user(request, username):
    if request.user != username:
        raise NotFound()
    user = session.query(User).filter(User.name == username).first()
    return serve_response('user.html', user=user)
Esempio n. 25
0
def tag(request, name):
    tag = session.query(Tag).filter(Tag.name.ilike(name)).first()
    if not tag:
        raise NotFound
    return serve_response('tag.html', tag=tag)
Esempio n. 26
0
def subreddit(request, name):
    subreddit = session.query(Subreddit).filter(
        Subreddit.url.ilike(name)).first()
    if not subreddit:
        raise NotFound
    return serve_response('api/subreddit.html', subreddit=subreddit)
Esempio n. 27
0
def help(request):
    return serve_response('help.html')
Esempio n. 28
0
def tags(request, view='cloud'):
    tags = session.query(Tag).order_by(Tag.name)
    return serve_response('tags.html', view=view, tags=tags)
Esempio n. 29
0
def reddits(request, view='cloud', filter='biggest'):
    key = _hash('view_reddits_' + filter + view +
                ';'.join(['%s:%s' % (k, v) for k, v in request.args.items()]))
    value = cache.get(key)
    if value is not None:
        return value
    subscribers = request.args.get('s') or 100
    page = int(request.args.get('page', 1))
    query = session.query(Subreddit).filter(
        Subreddit.subscribers >= subscribers).filter(
            Subreddit.fp_submissions > 0)
    if filter == 'new':
        query = query.filter(Subreddit.created > days_ago(90))
    elif filter == 'biggest':
        query = query.filter(Subreddit.subscribers > 10000)
    elif filter == 'active':
        query = query.filter(Subreddit.fp_submissions == 50).filter(
            Subreddit.all_age_latest <= 7).filter(Subreddit.over18 == False)
    elif filter == 'over18':
        query = query.filter(Subreddit.all_age_latest < 91).filter(
            Subreddit.over18 == True)
    elif filter == 'inactive':
        query = query.filter(Subreddit.all_age_latest < 360).filter(
            Subreddit.all_age_latest > 90)
    elif filter == 'dead':
        query = query.filter(Subreddit.all_age_latest > 360)
    elif filter == 'self':
        query = query.filter(Subreddit.selfposts > 20)
    elif filter == 'media':
        query = query.filter(Subreddit.fp_media > 20)
    elif filter == 'filter':
        q = request.args.get('q')
        t = request.args.get('t')
        l = request.args.get('l') or 1
        o = request.args.get('o')
        if q and len(q) > 2:
            query = query.filter(
                or_(Subreddit.title.ilike('%' + q + '%'),
                    Subreddit.url.ilike('%' + q + '%'),
                    Subreddit.description.ilike('%' + q + '%')))
        if t:
            tag = session.query(Tag).filter(Tag.name == t).first()
            query = query.filter(Subreddit.tags.any(SubredditTag.tag == tag))
        query = query.filter(Subreddit.all_age_latest < l)
        if o and o != 'all':
            over18 = True if o == 'True' else False
            query = query.filter(Subreddit.over18 == o)
    else:
        query = query.filter(Subreddit.fp_submissions==25)\
                         .filter(Subreddit.all_age_latest==0)\
                         .filter(Subreddit.over18==False)
    if view == 'cloud':
        subreddits = query.order_by(Subreddit.url).all()
        response = serve_response('reddits.html',
                                  view=view,
                                  filter=filter,
                                  subreddits=subreddits,
                                  querystring=request.args)
    elif view == 'list':
        query = query.order_by(Subreddit.subscribers.desc())
        pagination = Pagination(query, 50, page, 'reddits')
        response = serve_response('reddits.html',
                                  view=view,
                                  filter=filter,
                                  pagination=pagination,
                                  querystring=request.args)
    if not 'response' in locals():
        raise NotFound
    cache.set(key, response, 3600)
    return response
Esempio n. 30
0
def not_found(request, error):
    return serve_response('error.html', status=404, error=error)
Esempio n. 31
0
def help(request):
    return serve_response('help.html')
Esempio n. 32
0
def subreddit(request, name):
    subreddit = session.query(Subreddit).filter(Subreddit.url.ilike(name)).first()
    if not subreddit:
        raise NotFound
    return serve_response('api/subreddit.html', subreddit=subreddit)
Esempio n. 33
0
def search(request):
    return serve_response('search.html')
Esempio n. 34
0
def not_found(request, error):
    return serve_response('error.html', status=404, error=error)
Esempio n. 35
0
def links(request):
    return serve_response('links.html')
Esempio n. 36
0
def links(request):
    return serve_response('links.html')
Esempio n. 37
0
def about(request):
    return serve_response('about.html')
Esempio n. 38
0
def user(request, username):
    if request.user != username:
        raise NotFound()
    user = session.query(User).filter(User.name == username).first()
    return serve_response("user.html", user=user)
Esempio n. 39
0
def tags(request, view="cloud"):
    tags = session.query(Tag).order_by(Tag.name)
    return serve_response("tags.html", view=view, tags=tags)
Esempio n. 40
0
def tag(request, name):
    tag = session.query(Tag).filter(Tag.name.ilike(name)).first()
    if not tag:
        raise NotFound
    return serve_response('api/tag.html', tag=tag)
Esempio n. 41
0
def search(request):
    return serve_response('search.html')
Esempio n. 42
0
def about(request):
    return serve_response('about.html')
Esempio n. 43
0
def subreddit(request, name):
    names = name.split("+")
    subreddits = session.query(Subreddit).filter(Subreddit.url.in_(names)).order_by(Subreddit.url).all()
    if not subreddits:
        raise NotFound
    return serve_response("subreddit.html", subreddits=subreddits)