コード例 #1
0
ファイル: views.py プロジェクト: demophoon/shrls
def render_code_snippet(url_id):
    redirect_obj = DBSession.query(Snippet).filter(Snippet.alias == url_id).first()
    if redirect_obj:
        redirect_obj.views += 1
        DBSession.add(redirect_obj)
        DBSession.commit()
        return render_template('snippet.html', code=redirect_obj)
    return not_found()
コード例 #2
0
ファイル: views.py プロジェクト: demophoon/shrls
def url_redirect(url_id):
    url_id = url_id.split('.')[0]
    redirect_obj = DBSession.query(Url).filter(Url.alias == url_id).all()
    redirect_obj = random.choice(redirect_obj)
    if redirect_obj:
        location = redirect_obj.location
        redirect_obj.views += 1
        DBSession.add(redirect_obj)
        DBSession.commit()
        return redirect(location, code=302)
    return not_found()
コード例 #3
0
ファイル: views.py プロジェクト: demophoon/shrls
def create_url(longurl, shorturl=None, creator=None, overwrite=None):
    shrl = Url(longurl)
    if shorturl:
        if overwrite:
            obj = DBSession.query(Url).filter(Url.alias == shorturl).first()
            if obj:
                DBSession.delete(obj)
                DBSession.commit()
        shrl.alias = shorturl
    if creator:
        shrl.alias = "{}/{}".format(creator, shrl.alias)
    DBSession.add(shrl)
    DBSession.commit()
    return '{}/{}'.format(app.config['shrls_base_url'], shrl.alias)
コード例 #4
0
ファイル: views.py プロジェクト: demophoon/shrls
def create_snippet():
    print request.args
    content = request.form.get('c')
    title = request.form.get('t')
    shortid = request.form.get('s')
    if not content:
        return "Error"
    shrl = Snippet(content, title=title)
    if shortid:
        obj = DBSession.query(Snippet).filter(Snippet.alias == shortid).first()
        if obj:
            DBSession.delete(obj)
            DBSession.commit()
        shrl.alias = shortid
    DBSession.add(shrl)
    DBSession.commit()
    alias = '{}/c/{}'.format(app.config['shrls_base_url'], shrl.alias)
    alias = create_url(alias)
    return alias
コード例 #5
0
ファイル: __init__.py プロジェクト: demophoon/shrls
def shutdown_session(exception=None):
    DBSession.remove()
コード例 #6
0
ファイル: views.py プロジェクト: demophoon/shrls
def admin_index():
    page = int(request.args.get('page', 0))
    count = int(request.args.get('count', 50))
    urls = DBSession.query(Url)

    order_by = request.args.get('order_by')
    sort_by = request.args.get('sort')
    if not order_by or order_by.lower() not in ['id', 'created_at', 'alias', 'views', 'location']:
        order_by = 'created_at'
    if not sort_by or sort_by.lower() not in ['asc', 'desc']:
        sort_by = 'desc'
    order_by = order_by.lower()
    sort_by = sort_by.lower()

    urls = urls.order_by(getattr(getattr(Url, order_by), sort_by)())

    include = request.args.getlist('include')
    exclude = request.args.getlist('exclude')
    searches = request.args.getlist('search')

    t = {
        '+': include,
        '-': exclude,
    }
    searches = [[word for word in x.split(' ') if word] for x in searches if x]
    for search in searches:
        mode = '+'
        phrase = []
        for word in search:
            if word and word[0] in ['-', '+']:
                if phrase:
                    t[mode].append(' '.join(phrase))
                phrase = []
                mode = word[0]
                word = word[1:]
            if word:
                phrase.append(word)
        t[mode].append(' '.join(phrase))

    for f in include:
        urls = urls.filter(or_(
            Url.alias.ilike("%{}%".format(f)),
            Url.location.ilike("%{}%".format(f)),
        ))

    for f in exclude:
        urls = urls.filter(not_(
            or_(
                Url.alias.ilike("%{}%".format(f)),
                Url.location.ilike("%{}%".format(f)),
            )
        ))

    urls = urls.all()

    urlparams = []
    for k, v in request.args.iteritems():
        if k in ['page', 'order_by', 'sort']:
            continue
        urlparams.append("{}={}".format(k, v))
    params = "?{}".format("&".join(urlparams))
    if urlparams:
        params += "&"
    searches = ' '.join([' '.join(x) for x in searches])
    return render_template('admin.html', urls=urls, page=page, count=count, params=params, search=searches)