Skip to content

Commit

Permalink
Pushing internal layer configuration to a static prepareKeywordArgs()…
Browse files Browse the repository at this point in the history
… method of provider classes, starting with Proxy, UrlTemplate and Sandwich providers
  • Loading branch information
migurski committed Sep 4, 2012
1 parent 2d8e80f commit c4e9d57
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 17 deletions.
15 changes: 2 additions & 13 deletions TileStache/Config.py
Expand Up @@ -426,17 +426,6 @@ def _parseConfigfileLayer(layer_dict, config, dirpath):
provider_kwargs['mapfile'] = provider_dict['mapfile'] provider_kwargs['mapfile'] = provider_dict['mapfile']
provider_kwargs['fonts'] = provider_dict.get('fonts', None) provider_kwargs['fonts'] = provider_dict.get('fonts', None)


elif _class is Providers.Proxy:
if 'url' in provider_dict:
provider_kwargs['url'] = provider_dict['url']
if 'provider' in provider_dict:
provider_kwargs['provider_name'] = provider_dict['provider']

elif _class is Providers.UrlTemplate:
provider_kwargs['template'] = provider_dict['template']
if 'referer' in provider_dict:
provider_kwargs['referer'] = provider_dict['referer']

elif _class is Providers.Vector.Provider: elif _class is Providers.Vector.Provider:
provider_kwargs['driver'] = provider_dict['driver'] provider_kwargs['driver'] = provider_dict['driver']
provider_kwargs['parameters'] = provider_dict['parameters'] provider_kwargs['parameters'] = provider_dict['parameters']
Expand Down Expand Up @@ -472,8 +461,8 @@ def _parseConfigfileLayer(layer_dict, config, dirpath):
if 'layer id key' in provider_dict: if 'layer id key' in provider_dict:
provider_kwargs['layer_id_key'] = provider_dict['layer id key'] provider_kwargs['layer_id_key'] = provider_dict['layer id key']


elif str(_class) == 'TileStache.Sandwich.Provider': elif hasattr(_class, 'prepareKeywordArgs'):
provider_kwargs['stack'] = provider_dict['stack'] provider_kwargs.update(_class.prepareKeywordArgs(provider_dict))


elif 'class' in provider_dict: elif 'class' in provider_dict:
_class = loadClassPath(provider_dict['class']) _class = loadClassPath(provider_dict['class'])
Expand Down
37 changes: 33 additions & 4 deletions TileStache/Providers.py
Expand Up @@ -90,19 +90,22 @@
import Vector import Vector
import MBTiles import MBTiles
import Geography import Geography
from .Mapnik import ImageProvider as MapnikImage, GridProvider as MapnikGrid


# Already deprecated; provided for temporary backward-compatibility with # Already deprecated; provided for temporary backward-compatibility with
# old location of Mapnik provider. TODO: remove in next major version. # old location of Mapnik provider. TODO: remove in next major version.
Mapnik = MapnikImage try:
from .Mapnik import ImageProvider as Mapnik
except ImportError:
pass


def getProviderByName(name): def getProviderByName(name):
""" Retrieve a provider object by name. """ Retrieve a provider object by name.
Raise an exception if the name doesn't work out. Raise an exception if the name doesn't work out.
""" """
if name.lower() == 'mapnik': if name.lower() == 'mapnik':
return MapnikImage from .Mapnik import ImageProvider
return ImageProvider


elif name.lower() == 'proxy': elif name.lower() == 'proxy':
return Proxy return Proxy
Expand All @@ -117,7 +120,8 @@ def getProviderByName(name):
return MBTiles.Provider return MBTiles.Provider


elif name.lower() == 'mapnik grid': elif name.lower() == 'mapnik grid':
return MapnikGrid from .Mapnik import GridProvider
return GridProvider


elif name.lower() == 'sandwich': elif name.lower() == 'sandwich':
import Sandwich import Sandwich
Expand Down Expand Up @@ -164,6 +168,20 @@ def __init__(self, layer, url=None, provider_name=None):
else: else:
raise Exception('Missing required url or provider parameter to Proxy provider') raise Exception('Missing required url or provider parameter to Proxy provider')


@staticmethod
def prepareKeywordArgs(config_dict):
'''
'''
kwargs = dict()

if 'url' in config_dict:
kwargs['url'] = config_dict['url']

if 'provider' in config_dict:
kwargs['provider_name'] = config_dict['provider']

return kwargs

def renderTile(self, width, height, srs, coord): def renderTile(self, width, height, srs, coord):
""" """
""" """
Expand Down Expand Up @@ -222,6 +240,17 @@ def __init__(self, layer, template, referer=None):
self.template = Template(template) self.template = Template(template)
self.referer = referer self.referer = referer


@staticmethod
def prepareKeywordArgs(config_dict):
'''
'''
kwargs = {'template': config_dict['template']}

if 'referer' in config_dict:
kwargs['referer'] = config_dict['referer']

return kwargs

def renderArea(self, width, height, srs, xmin, ymin, xmax, ymax, zoom): def renderArea(self, width, height, srs, xmin, ymin, xmax, ymax, zoom):
""" Return an image for an area. """ Return an image for an area.
Expand Down
6 changes: 6 additions & 0 deletions TileStache/Sandwich.py
Expand Up @@ -143,6 +143,12 @@ def __init__(self, layer, stack):
self.config = layer.config self.config = layer.config
self.stack = stack self.stack = stack


@staticmethod
def prepareKeywordArgs(config_dict):
'''
'''
return {'stack': config_dict['stack']}

def renderTile(self, width, height, srs, coord): def renderTile(self, width, height, srs, coord):


rendered = draw_stack(self.stack, coord, self.config, dict()) rendered = draw_stack(self.stack, coord, self.config, dict())
Expand Down

0 comments on commit c4e9d57

Please sign in to comment.