[Checkins] SVN: grokapps/rdbexample/trunk/src/rdbexample/app.py -
Make contained items located
Jasper Spaans
jspaans at thehealthagency.com
Sat May 3 10:36:08 EDT 2008
Log message for revision 86224:
- Make contained items located
- Use rdb.key directive
- Check for KeyErrors in traversers
Changed:
U grokapps/rdbexample/trunk/src/rdbexample/app.py
-=-
Modified: grokapps/rdbexample/trunk/src/rdbexample/app.py
===================================================================
--- grokapps/rdbexample/trunk/src/rdbexample/app.py 2008-05-03 14:36:04 UTC (rev 86223)
+++ grokapps/rdbexample/trunk/src/rdbexample/app.py 2008-05-03 14:36:07 UTC (rev 86224)
@@ -3,6 +3,8 @@
from zope.interface.interfaces import IInterface
+from zope.location.location import located
+
from sqlalchemy.schema import Column, ForeignKey
from sqlalchemy.types import Integer, String
from sqlalchemy.orm import relation
@@ -16,7 +18,9 @@
class RDBExample(grok.Application, grok.Model):
def traverse(self, name):
try:
- return rdb.query(Faculty).get(int(name))
+ return located(rdb.query(Faculty).get(int(name)), self, name)
+ except KeyError:
+ return None
except ValueError:
return None
@@ -27,19 +31,22 @@
def render(self):
result = ""
for faculty in rdb.query(Faculty).all():
- result += "%i - %s\n" % (faculty.id, faculty.title)
+ result += "%s - %s (%s)" % (faculty.id, faculty.title,
+ self.url(str(faculty.id)))
return result
class Departments(rdb.Container):
- pass
+ rdb.key('title')
class DepartmentTraverse(grok.Traverser):
grok.context(Departments)
def traverse(self, name):
try:
- return self.context[int(name)]
+ return located(self.context[int(name)], self.context, name)
+ except KeyError:
+ return None
except ValueError:
return None
@@ -66,7 +73,7 @@
def traverse(self, name):
if name == 'departments':
- return self.context.departments
+ return located(self.context.departments, self.context, name)
class Department(rdb.Model):
__tablename__ = 'department'
More information about the Checkins
mailing list