author | Tero Marttila <terom@qmsk.net> |
Sat, 04 Oct 2014 16:54:49 +0300 | |
changeset 247 | 8b7383138956 |
parent 241 | 8456a554fab9 |
permissions | -rw-r--r-- |
236
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
1 |
from django import http |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
2 |
from django.shortcuts import render, redirect |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
3 |
|
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
4 |
from qmsk.pngtile import pngtile |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
5 |
|
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
6 |
import pypngtile |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
7 |
|
241 | 8 |
import json |
9 |
import os.path |
|
10 |
||
236
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
11 |
def index (request, name): |
238
2c62e4d70619
qmsk.pngtile: views.index: show tree in nav, and items in content
Tero Marttila <terom@qmsk.net>
parents:
236
diff
changeset
|
12 |
store = pngtile.STORE |
2c62e4d70619
qmsk.pngtile: views.index: show tree in nav, and items in content
Tero Marttila <terom@qmsk.net>
parents:
236
diff
changeset
|
13 |
|
236
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
14 |
try: |
238
2c62e4d70619
qmsk.pngtile: views.index: show tree in nav, and items in content
Tero Marttila <terom@qmsk.net>
parents:
236
diff
changeset
|
15 |
tree = store.tree(name) |
2c62e4d70619
qmsk.pngtile: views.index: show tree in nav, and items in content
Tero Marttila <terom@qmsk.net>
parents:
236
diff
changeset
|
16 |
items = store.items(name) |
236
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
17 |
except pngtile.NotFound: |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
18 |
raise http.Http404 |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
19 |
except pngtile.InvalidImage: |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
20 |
return http.HttpResponseBadRequest(name) |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
21 |
except pngtile.UncachedImage: |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
22 |
return http.HttpResponseBadRequest(name) |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
23 |
except pngtile.Error as error: |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
24 |
return http.HttpResponseServerError(str(error)) |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
25 |
except pypngtile.Error as error: |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
26 |
return http.HttpResponseServerError(str(error)) |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
27 |
|
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
28 |
return render(request, 'qmsk.pngtile/index.html', dict( |
247
8b7383138956
qmsk.pngtiles: site_name titles
Tero Marttila <terom@qmsk.net>
parents:
241
diff
changeset
|
29 |
site_name = store.title(), |
236
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
30 |
name = name, |
238
2c62e4d70619
qmsk.pngtile: views.index: show tree in nav, and items in content
Tero Marttila <terom@qmsk.net>
parents:
236
diff
changeset
|
31 |
title = store.title(name), |
2c62e4d70619
qmsk.pngtile: views.index: show tree in nav, and items in content
Tero Marttila <terom@qmsk.net>
parents:
236
diff
changeset
|
32 |
breadcrumb = store.breadcrumb(name), |
241 | 33 |
tree = tree, |
238
2c62e4d70619
qmsk.pngtile: views.index: show tree in nav, and items in content
Tero Marttila <terom@qmsk.net>
parents:
236
diff
changeset
|
34 |
index_items = sorted(items), |
236
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
35 |
)) |
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
36 |
|
4ca68e4eb386
qmsk.pngtile: django app for pngtile index/viewer; very raw index view
Tero Marttila <terom@qmsk.net>
parents:
diff
changeset
|
37 |
def image (request, name): |
241 | 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( |
|
247
8b7383138956
qmsk.pngtiles: site_name titles
Tero Marttila <terom@qmsk.net>
parents:
241
diff
changeset
|
70 |
site_name = store.title(), |
241 | 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 |