summaryrefslogtreecommitdiff
path: root/xstatic
diff options
context:
space:
mode:
authorThomas Waldmann <tw AT waldmann-edv DOT de@localhost>2011-06-24 01:47:04 +0200
committerThomas Waldmann <tw AT waldmann-edv DOT de@localhost>2011-06-24 01:47:04 +0200
commitbdced3edbc8d062ba5f0318ff195dbd9af2f1990 (patch)
treeeef69e534b9141be393600543534bdd58a58ad0e /xstatic
parent79aa79bb292254c8c56354645ca00cbddc9b08da (diff)
downloadxstatic-git-bdced3edbc8d062ba5f0318ff195dbd9af2f1990.tar.gz
add some first versions of setup / code (untested)
Diffstat (limited to 'xstatic')
-rw-r--r--xstatic/__init__.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/xstatic/__init__.py b/xstatic/__init__.py
new file mode 100644
index 0000000..1c362fa
--- /dev/null
+++ b/xstatic/__init__.py
@@ -0,0 +1,47 @@
+# http://remote_base/path
+# http://local_base/path
+
+class XStatic(object):
+ """
+ minimal support code to access resources from xstatic.pkg.* files
+ or CDN locations.
+ """
+ name = None # lowercase short name
+ base_dir = None # fs path to the files
+ locations = {} # CDN/remote locations
+
+ def __init__(self, root_url='/xstatic', provider='local', protocol='http'):
+ """
+ :arg root_url: the common root url path for all local xstatic
+ resources
+ :arg provider: 'local' to get it from local server or
+ a name of another source (e.g. CDN)
+ :arg protocol: 'http' (default) or 'https'
+ """
+ self.provider = provider
+ if provider == 'local':
+ self.base_url = "%s/%s" % (root_url, self.name)
+ else:
+ self.base_url = self.locations[(provider, protocol)]
+
+ def get_mapping(self):
+ """
+ query the mapping url -> directory, use this to setup
+ your own static file serving.
+ """
+ if self.provider == 'local':
+ return self.base_url, self.base_dir
+
+ def url_for(self, path):
+ """
+ compute the url for some resource.
+
+ :arg path: a relative path into the data
+ """
+ loc = self.base_url
+ if isinstance(loc, str):
+ loc = "%s/%s" % (loc, path)
+ elif isinstance(loc, dict):
+ loc = loc[path]
+ return loc
+