qmsk/pngtile/views.py
changeset 241 8456a554fab9
parent 238 2c62e4d70619
child 121 8c336a1970b3
equal deleted inserted replaced
240:21a38c59ce78 241:8456a554fab9
     2 from django.shortcuts import render, redirect
     2 from django.shortcuts import render, redirect
     3 
     3 
     4 from qmsk.pngtile import pngtile
     4 from qmsk.pngtile import pngtile
     5 
     5 
     6 import pypngtile
     6 import pypngtile
       
     7 
       
     8 import json
       
     9 import os.path
     7 
    10 
     8 def index (request, name):
    11 def index (request, name):
     9     store = pngtile.STORE
    12     store = pngtile.STORE
    10 
    13 
    11     try:
    14     try:
    25     return render(request, 'qmsk.pngtile/index.html', dict(
    28     return render(request, 'qmsk.pngtile/index.html', dict(
    26         site_name   = u"...",
    29         site_name   = u"...",
    27         name        = name,
    30         name        = name,
    28         title       = store.title(name),
    31         title       = store.title(name),
    29         breadcrumb  = store.breadcrumb(name),
    32         breadcrumb  = store.breadcrumb(name),
    30         index_tree  = tree,
    33         tree        = tree,
    31         index_items = sorted(items),
    34         index_items = sorted(items),
    32     ))
    35     ))
    33 
    36 
    34 def image (request, name):
    37 def image (request, name):
    35     pass
    38     store = pngtile.STORE
       
    39 
       
    40     try:
       
    41         image, name = store.open(name)
       
    42         tree  = store.tree(os.path.dirname(name))
       
    43     except pngtile.NotFound:
       
    44         raise http.Http404
       
    45     except pngtile.InvalidImage:
       
    46         return http.HttpResponseBadRequest(name)
       
    47     except pngtile.UncachedImage:
       
    48         return http.HttpResponseBadRequest(name)
       
    49     except pngtile.Error as error:
       
    50         return http.HttpResponseServerError(str(error))
       
    51     except pypngtile.Error as error:
       
    52         return http.HttpResponseServerError(str(error))
       
    53 
       
    54     image_info = image.info()
       
    55 
       
    56     map_config = dict(
       
    57         tiles_url       = store.tiles_url(name),
       
    58         tiles_mtime     = 0,
       
    59 
       
    60         tile_url        = '{tiles_url}?t={tiles_mtime}&x={x}&y={y}&zoom={z}',
       
    61         tile_size       = store.TILE_SIZE,
       
    62         tile_zoom       = store.TILE_ZOOM,
       
    63 
       
    64         image_url       = '{tiles_url}?w={w}&h={h}&x={x}&y={y}&zoom={z}',
       
    65         image_width     = image_info['img_width'],
       
    66         image_height    = image_info['img_height'],
       
    67     )
       
    68     
       
    69     return render(request, 'qmsk.pngtile/image.html', dict(
       
    70         site_name   = u"...",
       
    71         name        = name,
       
    72         title       = store.title(name),
       
    73         breadcrumb  = store.breadcrumb(name),
       
    74         tree        = tree,
       
    75         map_config  = json.dumps(map_config),
       
    76     ))
       
    77