Good morning.
I'm receiving a 404 error trying to use the expose method from plnt
example. What is wrong:
******************
* utils.py
******************
from os import path
from urlparse import urlparse
from sqlalchemy import MetaData
from sqlalchemy.orm import create_session, scoped_session
from werkzeug import Local, LocalManager, Response
from werkzeug.routing import Map, Rule
from mako.lookup import TemplateLookup
ALLOWED_SCHEMES = frozenset(['http', 'https', 'ftp', 'ftps'])
TEMPLATE_PATH = path.join(path.dirname(__file__), 'templates')
mako_lookup = TemplateLookup(directories=[TEMPLATE_PATH],
input_encoding='utf-8')
local = Local()
local_manager = LocalManager([local])
application = local('application')
metadata = MetaData()
session = scoped_session(lambda: create_session
(application.database_engine,
autocommit=True),
local_manager.get_ident)
url_map = Map()
views = {}
def expose(rule, endpoint, **kwargs):
def decorate(f):
epoint = endpoint
views[epoint] = f
url_map.add(Rule(rule, endpoint=epoint, **kwargs))
return f
return decorate
def url_for(endpoint, _external=False, **values):
return local.url_adapter.build(endpoint, values,
force_external=_external)
def render_template(template, **context):
return Response(mako_lookup.get_template(template).render
(**context),
mimetype='text/html')
def validate_url(url):
return urlparse(url)[0] in ALLOWED_SCHEMES
************
* views.py
*************
from werkzeug.exceptions import NotFound
from database.utils import session, expose, render_template
from database.models import Contact
@expose('/', 'database/list')
def list(request):
contacts = session.query(Contact).all()
if not contacts:
raise NotFound()
return render_template('list.html', contacts=contacts)
******************
* application.py
******************
from sqlalchemy import create_engine
from werkzeug import Request, import_string, ClosingIterator
from werkzeug.exceptions import HTTPException
from database.utils import session, views, metadata, local,
local_manager, \
url_map
import database.models
class Database(object):
def __init__(self, db_uri):
local.application = self
self.database_engine = create_engine(db_uri, encoding='utf-8')
def init_database(self):
metadata.create_all(self.database_engine)
def __call__(self, environ, start_response):
local.application = self
request = Request(environ)
local.url_adapter = adapter = url_map.bind_to_environ(environ)
try:
endpoint, values = adapter.match()
view = views[endpoint](request, **values)
response = view(request, **values)
except HTTPException, e:
response = e
return ClosingIterator(response(environ, start_response),
[session.remove,
local_manager.cleanup])
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pocoo-libs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/pocoo-libs?hl=en
-~----------~----~----~----~------~----~------~--~---