mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 00:03:28 +01:00
refactor webapp: RewriteLiveHandler and WBHandler share a common base class,
SearchPageWbUrlHandler which renders the search page when there is no wburl move some inits from pywb_init to WBHandler itself
This commit is contained in:
parent
7c57345363
commit
b8a17b7cab
@ -8,19 +8,55 @@ from pywb.utils.loaders import BlockLoader
|
||||
from pywb.framework.basehandlers import BaseHandler, WbUrlHandler
|
||||
from pywb.framework.wbrequestresponse import WbResponse
|
||||
|
||||
from pywb.warc.recordloader import ArcWarcRecordLoader
|
||||
from pywb.warc.resolvingloader import ResolvingLoader
|
||||
|
||||
from views import J2TemplateView, add_env_globals
|
||||
from replay_views import ReplayView
|
||||
|
||||
|
||||
#=================================================================
|
||||
class SearchPageWbUrlHandler(WbUrlHandler):
|
||||
"""
|
||||
Loads a default search page html template to be shown when
|
||||
the wb_url is empty
|
||||
"""
|
||||
def __init__(self, config):
|
||||
self.search_view = (J2TemplateView.
|
||||
create_template(config.get('search_html'),
|
||||
'Search Page'))
|
||||
|
||||
def render_search_page(self, wbrequest, **kwargs):
|
||||
if self.search_view:
|
||||
return self.search_view.render_response(wbrequest=wbrequest,
|
||||
prefix=wbrequest.wb_prefix,
|
||||
**kwargs)
|
||||
else:
|
||||
return WbResponse.text_response('No Lookup Url Specified')
|
||||
|
||||
|
||||
#=================================================================
|
||||
# Standard WB Handler
|
||||
#=================================================================
|
||||
class WBHandler(WbUrlHandler):
|
||||
def __init__(self, index_reader, replay,
|
||||
search_view=None, config=None):
|
||||
class WBHandler(SearchPageWbUrlHandler):
|
||||
def __init__(self, query_handler, config=None):
|
||||
super(WBHandler, self).__init__(config)
|
||||
|
||||
self.index_reader = index_reader
|
||||
self.index_reader = query_handler
|
||||
|
||||
self.replay = replay
|
||||
cookie_maker = config.get('cookie_maker')
|
||||
record_loader = ArcWarcRecordLoader(cookie_maker=cookie_maker)
|
||||
|
||||
self.search_view = search_view
|
||||
paths = config.get('archive_paths')
|
||||
|
||||
resolving_loader = ResolvingLoader(paths=paths,
|
||||
record_loader=record_loader)
|
||||
|
||||
template_globals = config.get('template_globals')
|
||||
if template_globals:
|
||||
add_env_globals(template_globals)
|
||||
|
||||
self.replay = ReplayView(resolving_loader, config)
|
||||
|
||||
self.fallback_handler = None
|
||||
self.fallback_name = config.get('fallback')
|
||||
@ -59,14 +95,6 @@ class WBHandler(WbUrlHandler):
|
||||
|
||||
return self.fallback_handler(wbrequest)
|
||||
|
||||
def render_search_page(self, wbrequest, **kwargs):
|
||||
if self.search_view:
|
||||
return self.search_view.render_response(wbrequest=wbrequest,
|
||||
prefix=wbrequest.wb_prefix,
|
||||
**kwargs)
|
||||
else:
|
||||
return WbResponse.text_response('No Lookup Url Specified')
|
||||
|
||||
def __str__(self):
|
||||
return 'Web Archive Replay Handler'
|
||||
|
||||
|
@ -2,17 +2,21 @@ from pywb.framework.basehandlers import WbUrlHandler
|
||||
from pywb.framework.wbrequestresponse import WbResponse
|
||||
from pywb.framework.archivalrouter import ArchivalRouter, Route
|
||||
|
||||
from handlers import StaticHandler
|
||||
from handlers import StaticHandler, SearchPageWbUrlHandler
|
||||
|
||||
from replay_views import RewriteLiveView
|
||||
|
||||
|
||||
#=================================================================
|
||||
class RewriteHandler(WbUrlHandler):
|
||||
class RewriteHandler(SearchPageWbUrlHandler):
|
||||
def __init__(self, config):
|
||||
super(RewriteHandler, self).__init__(config)
|
||||
self.rewrite_view = RewriteLiveView(config)
|
||||
|
||||
def __call__(self, wbrequest):
|
||||
if wbrequest.wb_url_str == '/':
|
||||
return self.render_search_page(wbrequest)
|
||||
|
||||
return self.rewrite_view(wbrequest)
|
||||
|
||||
def __str__(self):
|
||||
|
@ -6,13 +6,9 @@ from pywb.framework.wbrequestresponse import WbRequest
|
||||
from pywb.framework.memento import MementoRequest
|
||||
from pywb.framework.basehandlers import BaseHandler
|
||||
|
||||
from pywb.warc.recordloader import ArcWarcRecordLoader
|
||||
from pywb.warc.resolvingloader import ResolvingLoader
|
||||
|
||||
from views import J2TemplateView, add_env_globals
|
||||
from views import J2TemplateView
|
||||
from views import J2HtmlCapturesView, HeadInsertView
|
||||
|
||||
from replay_views import ReplayView
|
||||
from live_rewrite_handler import RewriteHandler
|
||||
|
||||
from query_handler import QueryHandler
|
||||
@ -63,31 +59,10 @@ class DictChain:
|
||||
|
||||
#=================================================================
|
||||
def create_wb_handler(query_handler, config):
|
||||
|
||||
cookie_maker = config.get('cookie_maker')
|
||||
record_loader = ArcWarcRecordLoader(cookie_maker=cookie_maker)
|
||||
|
||||
paths = config.get('archive_paths')
|
||||
|
||||
resolving_loader = ResolvingLoader(paths=paths,
|
||||
record_loader=record_loader)
|
||||
|
||||
template_globals = config.get('template_globals')
|
||||
if template_globals:
|
||||
add_env_globals(template_globals)
|
||||
|
||||
replayer = ReplayView(resolving_loader, config)
|
||||
|
||||
search_view = (J2TemplateView.
|
||||
create_template(config.get('search_html'),
|
||||
'Search Page'))
|
||||
|
||||
wb_handler_class = config.get('wb_handler_class', WBHandler)
|
||||
|
||||
wb_handler = wb_handler_class(
|
||||
query_handler,
|
||||
replayer,
|
||||
search_view=search_view,
|
||||
config=config,
|
||||
)
|
||||
|
||||
|
@ -65,7 +65,7 @@ class BaseContentView(object):
|
||||
def __call__(self, wbrequest, *args):
|
||||
# render top level frame if in frame mode
|
||||
# (not supported in proxy mode)
|
||||
if (self.is_frame_mode and
|
||||
if (self.is_frame_mode and wbrequest.wb_url and
|
||||
not wbrequest.wb_url.mod and
|
||||
not wbrequest.options['is_proxy'] and
|
||||
not wbrequest.options.get('is_timegate', False)):
|
||||
|
@ -2,8 +2,6 @@ from pywb.utils.timeutils import timestamp_to_datetime
|
||||
from pywb.framework.wbrequestresponse import WbResponse
|
||||
from pywb.framework.memento import make_timemap, LINK_FORMAT
|
||||
|
||||
from handlers import WBHandler
|
||||
|
||||
import urlparse
|
||||
import logging
|
||||
|
||||
@ -62,7 +60,8 @@ def is_wb_handler(obj):
|
||||
if not hasattr(obj, 'handler'):
|
||||
return False
|
||||
|
||||
return isinstance(obj.handler, WBHandler)
|
||||
#return isinstance(obj.handler, WBHandler)
|
||||
return obj.handler.__class__.__name__ == "WBHandler"
|
||||
|
||||
|
||||
#=================================================================
|
||||
|
Loading…
x
Reference in New Issue
Block a user