-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathview.py
49 lines (45 loc) · 2.25 KB
/
view.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Copyright 2008 Adam Stiles
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy
# of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
# by applicable law or agreed to in writing, software distributed under the
# License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
# OF ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.
import os
from google.appengine.ext.webapp import template
class MainView():
"""Helper method for our one-and-only template. All display goes through here"""
@staticmethod
def render(handler, status, urly, format, href=None, title=None):
"""Lovin my delphi-like inner functions"""
def render_raw(handler, content_type, body):
handler.response.headers["Content-Type"] = content_type
handler.response.out.write(body)
def render_main(handler, values=None):
path = os.path.join(os.path.dirname(__file__), 'main.html')
handler.response.out.write(template.render(path, values))
""" We never have an error if we have an urly to show """
if (urly is not None):
if (format is None):
handler.redirect(urly.href)
elif (format == '.json'):
render_raw(handler, "application/json", urly.to_json())
elif (format == '.xml'):
render_raw(handler, "application/xml", urly.to_xml())
elif (format == '.txt'):
render_raw(handler, "text/plain", urly.to_text())
else:
render_main(handler, { 'urly': urly, 'title': title })
elif (status == 400):
handler.error(status)
if (format != '.json') and (format != '.xml'):
vals = { 'error_href': True, 'default_href': href }
render_main(handler, vals)
elif (status == 404):
handler.error(404)
if (format != '.json') and (format != '.xml'):
vals = { 'error_404': True }
render_main(handler, vals)
else:
render_main(handler)