Skip to content

Instantly share code, notes, and snippets.

@reedobrien
Created June 30, 2011 14:07
Show Gist options
  • Save reedobrien/1056303 to your computer and use it in GitHub Desktop.
Save reedobrien/1056303 to your computer and use it in GitHub Desktop.
class Category(ContextBySpec):
__name__= None
__collection__ = __parent__ = 'categories'
def __init__(self, request, path_segments=None, **kwd):
super(ContextBySpec, self).__init__(self, request, **kwd)
for k,v in kwd.items():
setattr(self, k, v)
if not path_segments:
path_segments = request.path_info.split('/')
self.__name__ = path_segments.pop(0)
self._remainder = path_segments[1]
self.request = request
self.find = request.db[__collection__].find
def __getitem__(self, name):
try:
cursor = self.find({'__name__' : name,
'__parent__' : self.__name__})
assert cursor.count() == 1
cat = cursor.next()
return Category(self.request,
path_segments = self._remainder,
__parent__ = self.__name__)
except AssertionError as e:
##handle error
pass
def __iter__(self):
try:
cursor = self.find({"__parent__" : self.__name__})
return (Category(self.request,
path_segments=self._remainder,
__parent__ = self.__name__) for cat in cursor)
except:
##handle errors
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment