Changeset 849
- Timestamp:
- 06/19/07 01:24:36 (2 years ago)
- Files:
-
- hammock/trunk/envutil.py (modified) (2 diffs)
- hammock/trunk/templates/collection.html (modified) (2 diffs)
- hammock/trunk/templates/item.html (added)
- hammock/trunk/templates/service.html (added)
- hammock/trunk/templates/service.xml (added)
- hammock/trunk/urls.py (modified) (2 diffs)
- hammock/trunk/view.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
hammock/trunk/envutil.py
r773 r849 1 1 from urllib import quote 2 2 3 def request_url(environ):3 def site_url(environ): 4 4 url = environ['wsgi.url_scheme']+'://' 5 5 if environ.get('HTTP_HOST'): … … 13 13 if environ['SERVER_PORT'] != '80': 14 14 url += ':' + environ['SERVER_PORT'] 15 return url 16 17 def request_url(environ): 18 url = site_url(environ) 15 19 url += quote(environ.get('SCRIPT_NAME','')) 16 20 url += quote(environ.get('PATH_INFO','')) hammock/trunk/templates/collection.html
r848 r849 8 8 <style type="text/css"> 9 9 body {font-family: Verdana, sans-serif;} 10 #alt-reprs {font-size: smaller;} 11 #fine-print {font-size: small; color: #cccccc;} 10 #fine-print {font-size: small; color: #aaaaaa;} 12 11 </style> 13 12 </head> 14 13 15 14 <body> 16 <h2>Collection</h2> 17 <div id="alt-reprs">[<a href="features.atom">Atom</a>][<a href="features">JSON</a>]</div> 15 <h1 py:content="title">Collection</h1> 18 16 19 <h3>Features</h3> 17 <div><a href="/index.html">Back to service index</a></div> 18 19 <h3>Items</h3> 20 20 <div py:for="id, item in collection"> 21 21 <a … … 28 28 </div> 29 29 30 <h3>Alternate Representations</h3> 31 <div><a href="features.atom">Atom</a></div> 32 30 33 <p id="fine-print">Under-powered by Hammock</p> 31 34 hammock/trunk/urls.py
r848 r849 3 3 4 4 urls = selector.Selector() 5 urls.add('/index.html', GET=view.service_html) 6 urls.add('/index.atom', GET=view.service_atom) 5 7 urls.add('/features[/]', GET=view.list, POST=view.feature_post) 6 8 urls.add('/features.html', GET=view.collection_html) … … 8 10 urls.add('/features.kml', GET=view.kml) 9 11 urls.add('/features/{id}[/]', GET=view.feature_get) 12 urls.add('/features/{id}.html', GET=view.feature_html) 13 urls.add('/features/{id}.json', GET=view.feature_get) 10 14 hammock/trunk/view.py
r848 r849 1 import os.path 2 1 3 from genshi.template import TemplateLoader 2 4 loader = TemplateLoader(['/home/sean/Projects/hammock/templates']) … … 10 12 # ----------- 11 13 14 def service_html(environ, start_response): 15 tmpl = loader.load('service.html') 16 stream = tmpl.generate(site_url=envutil.site_url(environ)) 17 start_response("200 OK", [('Content-Type', 'application/xhtml+xml')]) 18 return [stream.render()] 19 20 def service_atom(environ, start_response): 21 tmpl = loader.load('service.xml') 22 stream = tmpl.generate(site_url=envutil.site_url(environ)) 23 start_response("200 OK", [('Content-Type', 'application/atomsvc+xml')]) 24 return [stream.render()] 25 12 26 def list(environ, start_response): 13 27 list = [] … … 20 34 def collection_html(environ, start_response): 21 35 tmpl = loader.load('collection.html') 22 stream = tmpl.generate(title='Collection', collection=model.COLLECTION) 36 stream = tmpl.generate( 37 title='Collection: Features', 38 collection=model.COLLECTION 39 ) 23 40 start_response("200 OK", [('Content-Type', 'application/xhtml+xml')]) 24 41 return [stream.render()] … … 33 50 start_response("200 OK", [('Content-Type', 'application/vnd.google-earth.kml+xml')]) 34 51 return ['<?xml version="1.0" encoding="utf-8"?>', infoset.tostring(kml)] 52 53 def feature_html(environ, start_response): 54 fid = environ['wsgiorg.routing_args'][1]['id'] 55 f = model.COLLECTION.get(fid) 56 tmpl = loader.load('item.html') 57 stream = tmpl.generate( 58 title='Feature: %s' % f.id, 59 item = f 60 ) 61 start_response("200 OK", [('Content-Type', 'application/xhtml+xml')]) 62 return [stream.render()] 35 63 36 64 def feature_get(environ, start_response):
