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
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
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
def redirect(req): item = Redirect() form = Form((('src', '/'), ('dst', '/test'), ('code', 301))) item.bind(form) assert item.add(req) is not None return item
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))
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, {})
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
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
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'})
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)
def test_list_disables(self, req, redirect): items = Redirect.list(req, Pager(limit=1), state=0) assert items[0].src == redirect.src
def test_list(self, req, redirect): items = Redirect.list(req, Pager(limit=1)) assert items[0].src == redirect.src
def test_db(self, req): Redirect.test(req)
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))