From 3d1abbd5be1d1bc0f27e488059ccf7aaca225f31 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Tue, 25 Aug 2009 01:30:40 +0000 Subject: - The ``repoze.bfg.view.static`` class now accepts a string as its first argument ("root_dir") that represents a package-relative name e.g. ``somepackage:foo/bar/static``. This is now the preferred mechanism for spelling package-relative static paths using this class. A ``package_name`` keyword argument has been left around for backwards compatibility. If it is supplied, it will be honored. - Fixed documentation for ``repoze.bfg.view.static`` (in narrative ``Views`` chapter). --- repoze/bfg/tests/test_view.py | 18 +++++++++++++++++- repoze/bfg/view.py | 12 +++++++++--- repoze/bfg/zcml.py | 2 +- 3 files changed, 27 insertions(+), 5 deletions(-) (limited to 'repoze') diff --git a/repoze/bfg/tests/test_view.py b/repoze/bfg/tests/test_view.py index a35930f69..3c7d6f853 100644 --- a/repoze/bfg/tests/test_view.py +++ b/repoze/bfg/tests/test_view.py @@ -351,7 +351,23 @@ class TestStaticView(unittest.TestCase, BaseTest): def test_relpath_withpackage(self): import os path = 'fixtures' - view = self._makeOne(path, package_name='another') + view = self._makeOne('another:fixtures') + context = DummyContext() + request = DummyRequest() + request.subpath = ['__init__.py'] + request.environ = self._makeEnviron() + response = view(context, request) + self.assertEqual(request.copied, True) + here = os.path.abspath(os.path.dirname(__file__)) + self.assertEqual(response.root_resource, 'fixtures') + self.assertEqual(response.resource_name, 'fixtures') + self.assertEqual(response.package_name, 'another') + self.assertEqual(response.cache_max_age, 3600) + + def test_relpath_withpackage_name(self): + import os + path = 'fixtures' + view = self._makeOne('fixtures', package_name='another') context = DummyContext() request = DummyRequest() request.subpath = ['__init__.py'] diff --git a/repoze/bfg/view.py b/repoze/bfg/view.py index 4e5418175..3fd5a8499 100644 --- a/repoze/bfg/view.py +++ b/repoze/bfg/view.py @@ -161,14 +161,20 @@ class static(object): """ def __init__(self, root_dir, cache_max_age=3600, level=2, package_name=None): + # package_name is for bw compat; it is preferred to pass in a + # package-relative path as root_dir + # (e.g. ``anotherpackage:foo/static``). if os.path.isabs(root_dir): - root_dir = caller_path(root_dir, level=level) self.app = StaticURLParser(root_dir, cache_max_age=cache_max_age) + return + if ':' in root_dir: + package_name, root_dir = root_dir.split(':', 1) else: if package_name is None: package_name = caller_package().__name__ - self.app = PackageURLParser(package_name, root_dir, - cache_max_age=cache_max_age) + + self.app = PackageURLParser(package_name, root_dir, + cache_max_age=cache_max_age) def __call__(self, context, request): subpath = '/'.join(request.subpath) diff --git a/repoze/bfg/zcml.py b/repoze/bfg/zcml.py index e38fd3449..e0c8d2e8e 100644 --- a/repoze/bfg/zcml.py +++ b/repoze/bfg/zcml.py @@ -354,7 +354,7 @@ class IStaticDirective(Interface): required=True) cache_max_age = Int( - title=u"Cache maximum age", + title=u"Cache maximum age in seconds", required=False, default=None) -- cgit v1.2.3