From e8d4e5821447da9ceec7dfb60f4b95cad1861f7a Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Thu, 5 Jul 2012 22:12:29 -0500 Subject: Moving staticdirect to tools/ --- mediagoblin/init/__init__.py | 2 +- mediagoblin/staticdirect.py | 75 --------------------------------------- mediagoblin/tools/staticdirect.py | 75 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 76 deletions(-) delete mode 100644 mediagoblin/staticdirect.py create mode 100644 mediagoblin/tools/staticdirect.py diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py index 7a885800..ae54cacf 100644 --- a/mediagoblin/init/__init__.py +++ b/mediagoblin/init/__init__.py @@ -18,7 +18,7 @@ from beaker.cache import CacheManager from beaker.util import parse_cache_config_options import jinja2 -from mediagoblin import staticdirect +from mediagoblin.tools import staticdirect from mediagoblin.init.config import ( read_mediagoblin_config, generate_validation_report) from mediagoblin import mg_globals diff --git a/mediagoblin/staticdirect.py b/mediagoblin/staticdirect.py deleted file mode 100644 index 7477de68..00000000 --- a/mediagoblin/staticdirect.py +++ /dev/null @@ -1,75 +0,0 @@ -# GNU MediaGoblin -- federated, autonomous media hosting -# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -#################################### -# Staticdirect infrastructure. -# Borrowed largely from cc.engine -# by Chris Webber & Creative Commons -# -# This needs documentation! -#################################### - -import pkg_resources -import logging - -_log = logging.getLogger(__name__) - - -class StaticDirect(object): - def __init__(self): - self.cache = {} - - def __call__(self, filepath): - if filepath in self.cache: - return self.cache[filepath] - - if not pkg_resources.resource_exists('mediagoblin', - 'static' + filepath): - _log.info("StaticDirect resource %r not found locally", - filepath) - static_direction = self.cache[filepath] = self.get(filepath) - return static_direction - - def get(self, filepath): - # should be implemented by the individual staticdirector - pass - - -class RemoteStaticDirect(StaticDirect): - def __init__(self, remotepath): - StaticDirect.__init__(self) - self.remotepath = remotepath.rstrip('/') - - def get(self, filepath): - return '%s/%s' % ( - self.remotepath, filepath.lstrip('/')) - - -class MultiRemoteStaticDirect(StaticDirect): - """ - For whene separate sections of the static data is served under - separate urls. - """ - def __init__(self, remotepaths): - StaticDirect.__init__(self) - self.remotepaths = remotepaths - - def get(self, filepath): - section, rest = filepath.strip('/').split('/', 1) - - return '%s/%s' % ( - self.remotepaths[section].rstrip('/'), - rest.lstrip('/')) diff --git a/mediagoblin/tools/staticdirect.py b/mediagoblin/tools/staticdirect.py new file mode 100644 index 00000000..7477de68 --- /dev/null +++ b/mediagoblin/tools/staticdirect.py @@ -0,0 +1,75 @@ +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +#################################### +# Staticdirect infrastructure. +# Borrowed largely from cc.engine +# by Chris Webber & Creative Commons +# +# This needs documentation! +#################################### + +import pkg_resources +import logging + +_log = logging.getLogger(__name__) + + +class StaticDirect(object): + def __init__(self): + self.cache = {} + + def __call__(self, filepath): + if filepath in self.cache: + return self.cache[filepath] + + if not pkg_resources.resource_exists('mediagoblin', + 'static' + filepath): + _log.info("StaticDirect resource %r not found locally", + filepath) + static_direction = self.cache[filepath] = self.get(filepath) + return static_direction + + def get(self, filepath): + # should be implemented by the individual staticdirector + pass + + +class RemoteStaticDirect(StaticDirect): + def __init__(self, remotepath): + StaticDirect.__init__(self) + self.remotepath = remotepath.rstrip('/') + + def get(self, filepath): + return '%s/%s' % ( + self.remotepath, filepath.lstrip('/')) + + +class MultiRemoteStaticDirect(StaticDirect): + """ + For whene separate sections of the static data is served under + separate urls. + """ + def __init__(self, remotepaths): + StaticDirect.__init__(self) + self.remotepaths = remotepaths + + def get(self, filepath): + section, rest = filepath.strip('/').split('/', 1) + + return '%s/%s' % ( + self.remotepaths[section].rstrip('/'), + rest.lstrip('/')) -- cgit v1.2.3