Changeset 849

Show
Ignore:
Timestamp:
06/19/07 01:24:36 (2 years ago)
Author:
sgillies
Message:

Add item and service templates

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • hammock/trunk/envutil.py

    r773 r849  
    11from urllib import quote 
    22 
    3 def request_url(environ): 
     3def site_url(environ): 
    44    url = environ['wsgi.url_scheme']+'://' 
    55    if environ.get('HTTP_HOST'): 
     
    1313            if environ['SERVER_PORT'] != '80': 
    1414                url += ':' + environ['SERVER_PORT'] 
     15    return url 
     16 
     17def request_url(environ): 
     18    url = site_url(environ) 
    1519    url += quote(environ.get('SCRIPT_NAME','')) 
    1620    url += quote(environ.get('PATH_INFO','')) 
  • hammock/trunk/templates/collection.html

    r848 r849  
    88    <style type="text/css"> 
    99      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;} 
    1211    </style> 
    1312  </head> 
    1413 
    1514  <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> 
    1816 
    19     <h3>Features</h3> 
     17    <div><a href="/index.html">Back to service index</a></div> 
     18 
     19    <h3>Items</h3> 
    2020    <div py:for="id, item in collection"> 
    2121      <a  
     
    2828    </div> 
    2929 
     30    <h3>Alternate Representations</h3> 
     31    <div><a href="features.atom">Atom</a></div> 
     32 
    3033    <p id="fine-print">Under-powered by Hammock</p> 
    3134 
  • hammock/trunk/urls.py

    r848 r849  
    33 
    44urls = selector.Selector() 
     5urls.add('/index.html', GET=view.service_html) 
     6urls.add('/index.atom', GET=view.service_atom) 
    57urls.add('/features[/]', GET=view.list, POST=view.feature_post) 
    68urls.add('/features.html', GET=view.collection_html) 
     
    810urls.add('/features.kml', GET=view.kml) 
    911urls.add('/features/{id}[/]', GET=view.feature_get) 
     12urls.add('/features/{id}.html', GET=view.feature_html) 
     13urls.add('/features/{id}.json', GET=view.feature_get) 
    1014 
  • hammock/trunk/view.py

    r848 r849  
     1import os.path 
     2 
    13from genshi.template import TemplateLoader 
    24loader = TemplateLoader(['/home/sean/Projects/hammock/templates']) 
     
    1012# ----------- 
    1113 
     14def 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 
     20def 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 
    1226def list(environ, start_response): 
    1327    list = [] 
     
    2034def collection_html(environ, start_response): 
    2135    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        ) 
    2340    start_response("200 OK", [('Content-Type', 'application/xhtml+xml')]) 
    2441    return [stream.render()] 
     
    3350    start_response("200 OK", [('Content-Type', 'application/vnd.google-earth.kml+xml')]) 
    3451    return ['<?xml version="1.0" encoding="utf-8"?>', infoset.tostring(kml)] 
     52 
     53def 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()] 
    3563 
    3664def feature_get(environ, start_response):