mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +01:00
urlrewrite templates: add get_top_frame_params() callback for adding custom params for top frame,
also inject env['webrec.template_params'] if set
This commit is contained in:
parent
d40edfc22d
commit
fa5d5e6bcc
@ -49,11 +49,15 @@ class RewriterApp(object):
|
|||||||
full_prefix = host_prefix + rel_prefix
|
full_prefix = host_prefix + rel_prefix
|
||||||
|
|
||||||
if self.framed_replay and wb_url.mod == self.frame_mod:
|
if self.framed_replay and wb_url.mod == self.frame_mod:
|
||||||
|
extra_params = self.get_top_frame_params(wb_url, kwargs)
|
||||||
return self.frame_insert_view.get_top_frame(wb_url,
|
return self.frame_insert_view.get_top_frame(wb_url,
|
||||||
full_prefix,
|
full_prefix,
|
||||||
host_prefix,
|
host_prefix,
|
||||||
|
request.environ,
|
||||||
self.frame_mod,
|
self.frame_mod,
|
||||||
self.replay_mod)
|
self.replay_mod,
|
||||||
|
coll='',
|
||||||
|
extra_params=extra_params)
|
||||||
|
|
||||||
urlrewriter = UrlRewriter(wb_url,
|
urlrewriter = UrlRewriter(wb_url,
|
||||||
prefix=full_prefix,
|
prefix=full_prefix,
|
||||||
@ -78,7 +82,7 @@ class RewriterApp(object):
|
|||||||
else:
|
else:
|
||||||
closest = wb_url.timestamp
|
closest = wb_url.timestamp
|
||||||
|
|
||||||
upstream_url = self.get_upstream_url(url, closest, kwargs)
|
upstream_url = self.get_upstream_url(url, wb_url, closest, kwargs)
|
||||||
|
|
||||||
r = requests.post(upstream_url,
|
r = requests.post(upstream_url,
|
||||||
data=BytesIO(req_data),
|
data=BytesIO(req_data),
|
||||||
@ -159,8 +163,12 @@ class RewriterApp(object):
|
|||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get_upstream_url(self, url, closest, kwargs):
|
def get_upstream_url(self, url, wb_url, closest, kwargs):
|
||||||
raise NotImplemented()
|
raise NotImplemented()
|
||||||
|
|
||||||
def _add_custom_params(self, cdx, kwargs):
|
def _add_custom_params(self, cdx, kwargs):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def get_top_frame_params(self, wb_url, kwargs):
|
||||||
|
return None
|
||||||
|
|
||||||
|
@ -92,8 +92,12 @@ class BaseInsertView(object):
|
|||||||
self.insert_file = insert_file
|
self.insert_file = insert_file
|
||||||
self.banner_file = banner_file
|
self.banner_file = banner_file
|
||||||
|
|
||||||
def render_to_string(self, **kwargs):
|
def render_to_string(self, env, **kwargs):
|
||||||
template = self.jenv.jinja_env.get_template(self.insert_file)
|
template = self.jenv.jinja_env.get_template(self.insert_file)
|
||||||
|
params = env.get('webrec.template_params')
|
||||||
|
if params:
|
||||||
|
kwargs.update(params)
|
||||||
|
|
||||||
return template.render(**kwargs)
|
return template.render(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
@ -124,7 +128,7 @@ class HeadInsertView(BaseInsertView):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def make_head_insert(rule, cdx):
|
def make_head_insert(rule, cdx):
|
||||||
return (self.render_to_string(wbrequest=wbrequest,
|
return (self.render_to_string(env, wbrequest=wbrequest,
|
||||||
cdx=cdx,
|
cdx=cdx,
|
||||||
top_url=top_url,
|
top_url=top_url,
|
||||||
include_ts=include_ts,
|
include_ts=include_ts,
|
||||||
@ -139,9 +143,11 @@ class TopFrameView(BaseInsertView):
|
|||||||
def get_top_frame(self, wb_url,
|
def get_top_frame(self, wb_url,
|
||||||
wb_prefix,
|
wb_prefix,
|
||||||
host_prefix,
|
host_prefix,
|
||||||
|
env,
|
||||||
frame_mod,
|
frame_mod,
|
||||||
replay_mod,
|
replay_mod,
|
||||||
coll=''):
|
coll='',
|
||||||
|
extra_params=None):
|
||||||
|
|
||||||
embed_url = wb_url.to_str(mod=replay_mod)
|
embed_url = wb_url.to_str(mod=replay_mod)
|
||||||
|
|
||||||
@ -165,6 +171,9 @@ class TopFrameView(BaseInsertView):
|
|||||||
url=wb_url.get_url(),
|
url=wb_url.get_url(),
|
||||||
banner_html=self.banner_file)
|
banner_html=self.banner_file)
|
||||||
|
|
||||||
return self.render_to_string(**params)
|
if extra_params:
|
||||||
|
params.update(extra_params)
|
||||||
|
|
||||||
|
return self.render_to_string(env, **params)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user