Exemple #1
0
 def test_get_by_src(self, req, redirect):
     item = Redirect(src=redirect.src)
     assert item.get(req, key='src') is not None
     assert item.src == redirect.src
     assert item.dst == redirect.dst
     assert item.code == redirect.code
     assert item.state == redirect.state
Exemple #2
0
def item_list(req, pager, search=None, state=None):
    conds = []
    if search:
        value = search.replace("'", "''")
        conds.append("(src LIKE '%%{1}%%' OR dst LIKE '%%{1}%%')".format(
                     value, value))
    if state is not None:
        conds.append("state=%d" % state)
    cond = 'WHERE '+(' AND '.join(conds)) if conds else ''

    tran = req.db.transaction(req.log_info)
    c = tran.cursor(DictCursor)
    c.execute("SELECT * FROM redirects %s ORDER BY %s %s LIMIT %%d, %%d" %
              (cond, pager.order, pager.sort),
              (pager.offset, pager.limit))
    items = []
    for row in iter(c.fetchone, None):
        item = Redirect()
        item.from_row(row)
        items.append(item)

    c.execute("SELECT count(*) FROM redirects %s" % cond)
    pager.total = c.fetchone()['count(*)']

    tran.commit()
    return items
Exemple #3
0
 def test_get(self, req, redirect):
     item = Redirect(redirect.id)
     assert item.get(req) is not None
     assert item.src == redirect.src
     assert item.dst == redirect.dst
     assert item.code == redirect.code
     assert item.state == redirect.state
Exemple #4
0
def redirect(req):
    item = Redirect()
    form = Form((('src', '/'),
                 ('dst', '/test'),
                 ('code', 301)))
    item.bind(form)
    assert item.add(req) is not None
    return item
Exemple #5
0
def redirect_ruri(req, *args):
    item = Redirect()
    item.src = req.uri_rule
    item.get(req, key='src')
    dst = item.dst.format(*args)
    print args
    redirect(req, dst,
             permanent=int(item.code == state.HTTP_MOVED_PERMANENTLY))
Exemple #6
0
def admin_redirects_delete(req, id):
    check_login(req)
    check_right(req, module_right)
    check_token(req, req.args.get('token'), uri='/admin/redirects')

    item = Redirect(id)
    if not item.delete(req):
        req.status = state.HTTP_NOT_FOUND

    return send_json(req, {})
Exemple #7
0
 def test_add(self, req, redirect):
     item = Redirect()
     item.state = 1
     assert isinstance(item.add(req), EmptySrc)
     item.src = '/'
     assert isinstance(item.add(req), EmptyDst)
     item.dst = '/root'
     assert isinstance(item.add(req), BadCode)
     item.code = 301
     assert item.add(req) is None
Exemple #8
0
def refresh_links(req, cfg_timestamp, clear=True):
    """ refresh redirect links from db if timestamp is change """
    global timestamp

    check = check_timestamp(req, cfg_timestamp)
    if check > timestamp:       # if last load was in past to timestamp file
        req.log_error("file timestamp is older, loading redirects from DB...",
                      state.LOG_INFO)

        if clear:
            for uri, hdls in app.handlers.items():
                if hdls.get(state.METHOD_GET) == redirect_uri:
                    app.pop_route(uri, state.METHOD_GET)
                    app.pop_route(uri, state.METHOD_HEAD)
        for it in Redirect.list(req, Pager(limit=-1), state=1):
            if it.src[-1] == '$':
                if not app.is_rroute(it.src):
                    req.cfg.log_info("Adding %s -> %s" % (it.src, it.dst))
                    app.set_rroute(it.src, redirect_ruri)
            else:
                if not app.is_route(it.src):
                    req.cfg.log_info("Adding %s -> %s" % (it.src, it.dst))
                    app.set_route(it.src, redirect_uri)

        timestamp = check
Exemple #9
0
def admin_redirects_add_update(req, id=None):
    check_login(req)
    check_right(req, module_right)
    check_token(req, req.form.get('token'), uri='/admin/redirects')

    item = Redirect(id)
    item.bind(req.form)
    rv = item.mod(req) if id else item.add(req)

    if isinstance(rv, Redirect):
        return send_json(req, {})

    req.status = state.HTTP_BAD_REQUEST
    if isinstance(rv, ErrorValue):
        return send_json(req, rv, cls=ObjectEncoder)

    return send_json(req, {'reason': 'src_exist'})
Exemple #10
0
def admin_redirects(req):
    check_login(req)
    check_right(req, module_right)

    search = req.args.getfirst('search', fce=nuni)

    pager = Pager(order='value')
    pager.bind(req.args)

    if search:
        pager.set_params(search=search)

    items = Redirect.list(req, pager, search=search)

    return generate_page(req, "admin/redirects.html",
                         token=create_token(req),
                         pager=pager, items=items, search=search)
Exemple #11
0
 def test_list_disables(self, req, redirect):
     items = Redirect.list(req, Pager(limit=1), state=0)
     assert items[0].src == redirect.src
Exemple #12
0
 def test_list(self, req, redirect):
     items = Redirect.list(req, Pager(limit=1))
     assert items[0].src == redirect.src
Exemple #13
0
 def test_db(self, req):
     Redirect.test(req)
Exemple #14
0
def redirect_uri(req, *args):
    item = Redirect()
    item.src = req.uri
    item.get(req, key='src')
    redirect(req, item.dst,
             permanent=int(item.code == state.HTTP_MOVED_PERMANENTLY))