# HG changeset patch # User Tero Marttila # Date 1412422554 -10800 # Node ID 4ca68e4eb386936ead71d846b8d5117c430531c8 # Parent 2fb2928eed8c98fdd32d3a3cf08858458ac7d4b8 qmsk.pngtile: django app for pngtile index/viewer; very raw index view diff -r 2fb2928eed8c -r 4ca68e4eb386 qmsk/pngtile/pngtile.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qmsk/pngtile/pngtile.py Sat Oct 04 14:35:54 2014 +0300 @@ -0,0 +1,54 @@ +from __future__ import absolute_import + +from django.conf import settings +import django.utils.http + +# the top-level pngtile package +from pngtile.store import ( + Error, + NotFound, + InvalidImage, + UncachedImage, + PNGTileStore, +) + +class Store (PNGTileStore): + def __init__ (self, tileserver, **opts): + super(Store, self).__init__(**opts) + + self.tileserver = tileserver + + def breadcrumb (self, name): + """ + Yield (name, title) tuples for breadcrumb to name + """ + + path = [ ] + + for part in name.split('/'): + path.append(part) + + yield '/'.join(path), part + + def tiles_url (self, name, **query): + """ + Return a tileserver URL. + """ + + url = self.tileserver + + if name: + url += name + + if query: + url += '?' + django.utils.http.urlencode(query) + + return url + +STORE = Store( + # PNGTileStore + image_root = settings.QMSK_PNGTILE_ROOT, + + # Store + tileserver = settings.QMSK_PNGTILE_SERVER, +) diff -r 2fb2928eed8c -r 4ca68e4eb386 qmsk/pngtile/templates/qmsk.pngtile/index.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qmsk/pngtile/templates/qmsk.pngtile/index.html Sat Oct 04 14:35:54 2014 +0300 @@ -0,0 +1,36 @@ +{% extends "site.html" %} + +{% block title %}{{ site_name }} :: {{ name }}{% endblock %} + +{% block header %} +

+ {{ site_name }} +

+{% endblock %} + +{% block breadcrumb %} + +{% endblock %} + +{% block nav %} + +{% endblock %} + +{% block content %} + +{% endblock %} + +{% block footer %} + +{% endblock %} + diff -r 2fb2928eed8c -r 4ca68e4eb386 qmsk/pngtile/urls.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qmsk/pngtile/urls.py Sat Oct 04 14:35:54 2014 +0300 @@ -0,0 +1,9 @@ +from django.conf.urls import patterns, include, url + +from qmsk.pngtile import views + +urlpatterns = patterns('', + url(r'^$', views.index, name='index', kwargs=dict(name='')), + url(r'^(?P.*)/$', views.index, name='index'), + url(r'^(?P.*\.\w+)$', views.image, name='image'), +) diff -r 2fb2928eed8c -r 4ca68e4eb386 qmsk/pngtile/views.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qmsk/pngtile/views.py Sat Oct 04 14:35:54 2014 +0300 @@ -0,0 +1,30 @@ +from django import http +from django.shortcuts import render, redirect + +from qmsk.pngtile import pngtile + +import pypngtile + +def index (request, name): + try: + items = pngtile.STORE.list(name) + except pngtile.NotFound: + raise http.Http404 + except pngtile.InvalidImage: + return http.HttpResponseBadRequest(name) + except pngtile.UncachedImage: + return http.HttpResponseBadRequest(name) + except pngtile.Error as error: + return http.HttpResponseServerError(str(error)) + except pypngtile.Error as error: + return http.HttpResponseServerError(str(error)) + + return render(request, 'qmsk.pngtile/index.html', dict( + site_name = u"...", + name = name, + breadcrumb = pngtile.STORE.breadcrumb(name), + index_list = items, + )) + +def image (request, name): + pass