[Checkins] SVN: grokapps/rdbexample/trunk/src/rdbexample/app.py
More goodies for the rdb integration
Jasper Spaans
jspaans at thehealthagency.com
Sat May 3 07:48:01 EDT 2008
Log message for revision 86188:
More goodies for the rdb integration
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 11:44:06 UTC (rev 86187)
+++ grokapps/rdbexample/trunk/src/rdbexample/app.py 2008-05-03 11:48:00 UTC (rev 86188)
@@ -23,18 +23,35 @@
class FacultyList(grok.View):
grok.name('index')
grok.context(RDBExample)
- grok.template('facultylist')
+ def render(self):
+ result = ""
+ for faculty in rdb.query(Faculty).all():
+ result += "%i - %s\n" % (faculty.id, faculty.title)
+ return result
+
class Departments(rdb.Container):
pass
+class DepartmentTraverse(grok.Traverser):
+ grok.context(Departments)
+ def traverse(self, name):
+ try:
+ return self.context[int(name)]
+ except ValueError:
+ return None
+
class Faculty(rdb.Model):
-
# rdb.table_name('faculty') is the default
__tablename__ = 'faculty'
+ # XXX note that rdb.Model s don't support traversal using traverse methods;
+ # it does work using external grok.Traversers
+ def traverse(self, name):
+ pass
+
grok.traversable('departments')
id = Column('id', Integer, primary_key=True)
@@ -44,7 +61,13 @@
backref='faculty',
collection_class=Departments)
+class FacultyTraverse(grok.Traverser):
+ grok.context(Faculty)
+ def traverse(self, name):
+ if name == 'departments':
+ return self.context.departments
+
class Department(rdb.Model):
__tablename__ = 'department'
@@ -52,8 +75,14 @@
faculty_id = Column('faculty_id', Integer, ForeignKey('faculty.id'))
title = Column('title', String(50))
-from megrok.rdb.schema import schema_from_model
+class DepartmentView(grok.View):
+ grok.name('index')
+ grok.context(Department)
+
+ def render(self):
+ return "Department: %i - %s" % (self.context.id, self.context.title)
+
class DepartmentList(grok.View):
grok.name('index')
grok.context(Faculty)
@@ -64,6 +93,16 @@
result += department.title + '\n'
return result
+class DepartmentsView(grok.View):
+ grok.name('index')
+ grok.context(Departments)
+
+ def render(self):
+ result = ""
+ for department in self.context.values():
+ result += department.title + '\n'
+ return result
+
class AddFaculty(grok.AddForm):
grok.context(RDBExample)
More information about the Checkins
mailing list