qmsk/pngtile/pngtile.py
changeset 238 2c62e4d70619
parent 236 4ca68e4eb386
child 115 ac2608e5a0b6
equal deleted inserted replaced
237:6698dabcc425 238:2c62e4d70619
    10         InvalidImage,
    10         InvalidImage,
    11         UncachedImage,
    11         UncachedImage,
    12         PNGTileStore,
    12         PNGTileStore,
    13 )
    13 )
    14 
    14 
       
    15 import os.path
       
    16 
    15 class Store (PNGTileStore):
    17 class Store (PNGTileStore):
    16     def __init__ (self, tileserver, **opts):
    18     def __init__ (self, title, tileserver, **opts):
    17         super(Store, self).__init__(**opts)
    19         super(Store, self).__init__(**opts)
       
    20         
       
    21         self._title = title
       
    22         self.tileserver = tileserver
    18 
    23 
    19         self.tileserver = tileserver
    24     def title (self, name):
       
    25         if name:
       
    26             return os.path.basename(name)
       
    27         else:
       
    28             return self._title
    20 
    29 
    21     def breadcrumb (self, name):
    30     def breadcrumb (self, name):
    22         """
    31         """
    23             Yield (name, title) tuples for breadcrumb to name
    32             Yield (name, title) tuples for breadcrumb to name
    24         """
    33         """
    27 
    36 
    28         for part in name.split('/'):
    37         for part in name.split('/'):
    29             path.append(part)
    38             path.append(part)
    30 
    39 
    31             yield '/'.join(path), part
    40             yield '/'.join(path), part
       
    41 
       
    42     def tree (self, name):
       
    43         """
       
    44             Yield [(item, name)] lists for given path.
       
    45         """
       
    46         
       
    47         # always, starting from root
       
    48         parts = []
       
    49 
       
    50         if name:
       
    51             # also including the dir itself... but not the root twice
       
    52             name += '/'
       
    53 
       
    54         # walk up the tree from root the dir itself
       
    55         for tree_item in name.split('/'):
       
    56             tree_name = '/'.join(parts)
       
    57             
       
    58             dirs = [ ]
       
    59             items = [ ]
       
    60             
       
    61             # walk through the items within this tree node
       
    62             for item, type in self.list(tree_name):
       
    63                 if tree_name:
       
    64                     item_name = tree_name + '/' + item
       
    65                 else:
       
    66                     item_name = item
       
    67 
       
    68                 if type:
       
    69                     items.append((item, item_name))
       
    70                 else:
       
    71                     dirs.append((item, item_name))
       
    72             
       
    73             # tree of parent + item within parent
       
    74             yield sorted(dirs), tree_item
       
    75 
       
    76             parts.append(tree_item)
       
    77 
       
    78     def items (self, name):
       
    79         """
       
    80             Yield (item, name) for given path.
       
    81         """
       
    82 
       
    83         for item, type in self.list(name):
       
    84             if name:
       
    85                 item_name = name + '/' + item
       
    86             else:
       
    87                 item_name = item
       
    88 
       
    89             if type:
       
    90                 yield item, item_name
    32 
    91 
    33     def tiles_url (self, name, **query):
    92     def tiles_url (self, name, **query):
    34         """
    93         """
    35             Return a tileserver URL.
    94             Return a tileserver URL.
    36         """
    95         """
    48 STORE = Store(
   107 STORE = Store(
    49     # PNGTileStore
   108     # PNGTileStore
    50     image_root  = settings.QMSK_PNGTILE_ROOT,
   109     image_root  = settings.QMSK_PNGTILE_ROOT,
    51     
   110     
    52     # Store
   111     # Store
       
   112     title       = settings.QMSK_PNGTILE_TITLE,
    53     tileserver  = settings.QMSK_PNGTILE_SERVER,
   113     tileserver  = settings.QMSK_PNGTILE_SERVER,
    54 )
   114 )