diff options
author | Thomas Waldmann <tw AT waldmann-edv DOT de> | 2011-06-24 01:47:04 +0200 |
---|---|---|
committer | Thomas Waldmann <tw AT waldmann-edv DOT de> | 2011-06-24 01:47:04 +0200 |
commit | 5f765b829a5a823441654d539d786f6075f80e80 (patch) | |
tree | eef69e534b9141be393600543534bdd58a58ad0e | |
parent | fcc213ab15e7aa783835cfead3cc9e988c8da81d (diff) | |
download | xstatic-5f765b829a5a823441654d539d786f6075f80e80.tar.gz |
add some first versions of setup / code (untested)
-rw-r--r-- | MANIFEST.in | 7 | ||||
-rw-r--r-- | README.txt | 8 | ||||
-rw-r--r-- | setup.py | 23 | ||||
-rw-r--r-- | xstatic/__init__.py | 47 |
4 files changed, 85 insertions, 0 deletions
diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..04ae8b9 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,7 @@ +include README.txt + +global-exclude *.pyc +global-exclude *.pyo +global-exclude *.orig +global-exclude *.rej + diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..f5c5757 --- /dev/null +++ b/README.txt @@ -0,0 +1,8 @@ +XStatic +------- + +The goal of XStatic family of packages is to provide static file packages +with minimal overhead - without selling you some dependencies you don't want. + +XStatic has some minimal support code for working with the XStatic-* packages. + diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..236e4ae --- /dev/null +++ b/setup.py @@ -0,0 +1,23 @@ +from setuptools import setup, find_packages + +# The README.txt file should be written in reST so that PyPI can use +# it to generate your project's PyPI page. +long_description = open('README.txt').read() + + +setup( + name='XStatic', + version='0.0.1a0', + description='XStatic base package with minimal support code', + long_description=long_description, + classifiers=[], + keywords=[], + author='Thomas Waldmann', + author_email='tw@waldmann-edv.de', + license='MIT license', + packages=find_packages(), + include_package_data=True, + zip_safe=False, + install_requires=[], # there should never be a dependency! +) + 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 + |