[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