Skip to content

Instantly share code, notes, and snippets.

@maowug
Last active December 18, 2015 12:09
Show Gist options
  • Save maowug/5781182 to your computer and use it in GitHub Desktop.
Save maowug/5781182 to your computer and use it in GitHub Desktop.
Test traversal. Note "@view_config" and leave "name='' " to default view.
#!/usr/bin/env python
#encoding: utf-8
#__author__ = 'actor2019'
# $http.get('/ja/word/あい')
from pyramid.security import (
Allow,
Everyone,
)
def _assign(obj, name, parent):
obj.__name__ = name
obj.__parent__ = parent
return obj
class Root(object):
__name__ = None
__parent__ = None
# __acl__ = [ (Allow, Everyone, 'view')]
def __init__(self, request):
self.request = request
def __getitem__(self, name):
if name == 'ja':
return _assign(Ja(self.request),name,self)
raise KeyError
# --------------- ja ---------------
class Ja(object):
def __init__(self, request):
self.request = request
def __getitem__(self, name):
if name == 'word':
return _assign(JaWord(self.request),name,self)
raise KeyError
# JaWord works as JaEntryDispatcher
class JaWord(object):
def __init__(self, request):
self.request = request
def __getitem__(self, title):
jp=self.request.db.jp
entries=list(jp.find({'title':title}))
if entries:
entries=JaEntry(entries)
return _assign(entries,title,self)
# raise KeyError
raise KeyError
class JaEntry(object):
def __init__(self, entries):
self.entries = entries
#- ---------- #- ---------- #- ---------- in view
@view_config(context=JaEntry, renderer='json')
def ja_entry_view(request):
return request.context.entries
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment