diff --git a/geonode/printing/__init__.py b/geonode/printing/__init__.py new file mode 100644 index 00000000000..792d6005489 --- /dev/null +++ b/geonode/printing/__init__.py @@ -0,0 +1 @@ +# diff --git a/geonode/printing/admin.py b/geonode/printing/admin.py new file mode 100644 index 00000000000..f98e2b43338 --- /dev/null +++ b/geonode/printing/admin.py @@ -0,0 +1,4 @@ +from geonode.printing.models import PrintTemplate +from django.contrib import admin + +admin.site.register(PrintTemplate) diff --git a/geonode/printing/fixtures/initial_data.json b/geonode/printing/fixtures/initial_data.json new file mode 100644 index 00000000000..cd3a2e03e75 --- /dev/null +++ b/geonode/printing/fixtures/initial_data.json @@ -0,0 +1 @@ +[{"pk": 1, "model": "printing.printtemplate", "fields": {"contents": "\r\n

{{ map_title }}

\r\n
\r\n {{ map_html|safe }}\r\n
\r\n\r\n", "title": "Basic"}}] diff --git a/geonode/printing/models.py b/geonode/printing/models.py new file mode 100644 index 00000000000..6875d51d869 --- /dev/null +++ b/geonode/printing/models.py @@ -0,0 +1,12 @@ +from django.db import models +from django.utils.translation import ugettext as _ + +class PrintTemplate(models.Model): + """A template suitable for interpolation that can be printed with a map""" + + title = models.CharField(_('Title'), max_length=30) + contents = models.TextField(_('Contents')) + + def __unicode__(self): + return self.title + diff --git a/geonode/printing/urls.py b/geonode/printing/urls.py new file mode 100644 index 00000000000..f3b7fd8c270 --- /dev/null +++ b/geonode/printing/urls.py @@ -0,0 +1,5 @@ +from django.conf.urls.defaults import patterns, url + +urlpatterns = patterns('geonode.printing.views', + url(r'^template/(?P\d+)$', 'template_view', name='template_view'), +) diff --git a/geonode/printing/views.py b/geonode/printing/views.py new file mode 100644 index 00000000000..842f43b0b61 --- /dev/null +++ b/geonode/printing/views.py @@ -0,0 +1,15 @@ +from django.http import HttpResponse +from django.shortcuts import get_object_or_404 +from django.template import Context +from django.template import Template +from geonode.printing.models import PrintTemplate + + +def template_view(request, templateid): + """interpolate the template with the given id""" + + template_obj = get_object_or_404(PrintTemplate, pk=templateid) + template = Template(template_obj.contents) + context = Context(request.GET) + rendered = template.render(context) + return HttpResponse(rendered, content_type="text/html") diff --git a/geonode/settings.py b/geonode/settings.py index 6105078b0e0..43af04b84d5 100644 --- a/geonode/settings.py +++ b/geonode/settings.py @@ -122,6 +122,7 @@ 'geonode.maps', 'geonode.layers', 'geonode.people', + 'geonode.printing', 'geonode.proxy', 'geonode.security', ) diff --git a/geonode/urls.py b/geonode/urls.py index 336290fda11..dd7b6e8e49c 100644 --- a/geonode/urls.py +++ b/geonode/urls.py @@ -50,6 +50,9 @@ (r'^people/', include('geonode.people.urls')), (r'^avatar/', include('avatar.urls')), + # Printing + (r'^printing/', include('geonode.printing.urls')), + # Meta url(r'^lang\.js$', 'django.views.generic.simple.direct_to_template', {'template': 'lang.js', 'mimetype': 'text/javascript'}, name='lang'),