1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-15 00:03:28 +01:00

templates: ensure shared templates are loaded from root templates/ subdir

manager: add shared templates to templates subdir, not root dir #55 and #74
This commit is contained in:
Ilya Kreymer 2015-03-16 19:57:28 -07:00
parent 138aed3ddd
commit 4b45e789df
4 changed files with 33 additions and 17 deletions

View File

@ -1,8 +1,3 @@
#collections:
# pywb: ./sample_archive/cdx/
#archive_paths: ./sample_archive/warcs/
collections_root: collections
paths:

View File

@ -217,17 +217,20 @@ directory structure expected by pywb
'a collection name: template <coll> --{1} {0}')
raise IOError(msg.format(template_name, verb))
full_path = os.path.join(self.templates_dir,
os.path.basename(filename))
full_path = os.path.join(self.templates_dir, os.path.basename(filename))
except KeyError:
try:
filename = shared_templates[template_name]
full_path = os.path.join(os.getcwd(),
os.path.basename(filename))
full_path = os.path.join(os.getcwd(), filename)
# Create templates dir on demand
dir_ = os.path.dirname(full_path)
if not os.path.isdir(dir_):
os.makedirs(dir_)
except KeyError:
msg = 'template name must be one of {0} or {1}'
msg.format(templates.keys(), shared_templates.keys())
msg = msg.format(templates.keys(), shared_templates.keys())
raise KeyError(msg)
return full_path, filename

View File

@ -1,3 +1,6 @@
<!DOCTYPE html>
<html>
<body>
<h2>pywb Wayback Machine</h2>
This archive contains the following collections:
@ -14,4 +17,5 @@ This archive contains the following collections:
{% endif %}
{% endfor %}
</ul>
</body>
</html>

View File

@ -274,17 +274,13 @@ class TestManagedColls(object):
resp = self.testapp.get('/test/20140103030321/http://example.com?example=1')
assert resp.status_int == 200
def test_add_default_templates(self):
""" Test add default templates: shared, collection,
def test_add_default_coll_templates(self):
""" Test add default templates: collection,
and overwrite collection template
"""
# list
main(['template', 'foo', '--list'])
# Add shared template
main(['template', '--add', 'home_html'])
assert os.path.isfile(os.path.join(self.root_dir, 'index.html'))
# Add collection template
main(['template', 'foo', '--add', 'query_html'])
assert os.path.isfile(os.path.join(self.root_dir, 'collections', 'foo', 'templates', 'query.html'))
@ -292,6 +288,24 @@ class TestManagedColls(object):
# overwrite -- force
main(['template', 'foo', '--add', 'query_html', '-f'])
def test_add_modify_home_template(self):
# Add shared template
main(['template', '--add', 'home_html'])
filename = os.path.join(self.root_dir, 'templates', 'index.html')
assert os.path.isfile(filename)
with open(filename, 'r+b') as fh:
buf = fh.read()
buf = buf.replace('</html>', 'Custom Test Homepage</html>')
fh.seek(0)
fh.write(buf)
self._create_app()
resp = self.testapp.get('/')
assert resp.content_type == 'text/html'
assert 'Custom Test Homepage</html>' in resp.body, resp.body
@patch('pywb.manager.manager.get_input', lambda x: 'y')
def test_add_template_input_yes(self):
""" Test answer 'yes' to overwrite