[Checkins] SVN: grokapps/rdbz3cformexample/trunk/s The example now uses Layout, Page and PageAddForm

Vincent Fretin vincent.fretin at gmail.com
Fri Sep 18 10:21:57 EDT 2009


Log message for revision 104331:
  The example now uses Layout, Page and PageAddForm

Changed:
  U   grokapps/rdbz3cformexample/trunk/setup.py
  U   grokapps/rdbz3cformexample/trunk/sources.cfg
  U   grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/app.py
  D   grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/app_templates/
  U   grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/configure.zcml
  A   grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/layout.py
  A   grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/
  A   grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/departmentindex.pt
  A   grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/departmentsindex.pt
  A   grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/facultyindex.pt
  A   grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/layout.pt
  A   grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/rdbexampleindex.pt

-=-
Modified: grokapps/rdbz3cformexample/trunk/setup.py
===================================================================
--- grokapps/rdbz3cformexample/trunk/setup.py	2009-09-18 13:48:28 UTC (rev 104330)
+++ grokapps/rdbz3cformexample/trunk/setup.py	2009-09-18 14:21:57 UTC (rev 104331)
@@ -25,6 +25,8 @@
                         'grokcore.startup',
                         'z3c.saconfig',
                         'megrok.rdb >= 0.10',
+                        'megrok.layout',
+                        'megrok.z3cform.base',
                         # Add extra requirements here
                         ],
       entry_points = """

Modified: grokapps/rdbz3cformexample/trunk/sources.cfg
===================================================================
--- grokapps/rdbz3cformexample/trunk/sources.cfg	2009-09-18 13:48:28 UTC (rev 104330)
+++ grokapps/rdbz3cformexample/trunk/sources.cfg	2009-09-18 14:21:57 UTC (rev 104331)
@@ -2,11 +2,12 @@
 extends = buildout.cfg
 extensions += mr.developer
 auto-checkout +=
-    megrok.rdb
-    z3c.saconfig
+    megrok.z3cform.base
 
 [sources]
-megrok.rdb      = svn svn+ssh://svn.zope.org/repos/main/megrok.rdb/trunk
-z3c.saconfig    = svn svn+ssh://svn.zope.org/repos/main/z3c.saconfig/trunk
-zope.sqlalchemy = svn svn+ssh://svn.zope.org/repos/main/zope.sqlalchemy/trunk
+megrok.rdb            = svn svn+ssh://svn.zope.org/repos/main/megrok.rdb/trunk
+z3c.saconfig          = svn svn+ssh://svn.zope.org/repos/main/z3c.saconfig/trunk
+zope.sqlalchemy       = svn svn+ssh://svn.zope.org/repos/main/zope.sqlalchemy/trunk
+megrok.z3cform.base   = svn svn+ssh://svn.zope.org/repos/main/megrok.z3cform.base/trunk
+megrok.z3cform.layout = svn svn+ssh://svn.zope.org/repos/main/megrok.z3cform.layout/trunk
 

Modified: grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/app.py
===================================================================
--- grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/app.py	2009-09-18 13:48:28 UTC (rev 104330)
+++ grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/app.py	2009-09-18 14:21:57 UTC (rev 104331)
@@ -10,6 +10,10 @@
 from z3c.saconfig import EngineFactory, GloballyScopedSession
 from z3c.saconfig.interfaces import IEngineCreatedEvent
 
+from megrok.layout import Page
+from megrok.z3cform.base import PageAddForm
+from z3c.form import field
+
 # we set up the engine factory and the session
 # we set them up as global utilities here. It is also possible to
 # use a local engine factory and a special locally scoped session
@@ -36,6 +40,8 @@
 def setUpDatabase(event):
     rdb.setupDatabase(metadata)
 
+grok.templatedir('templates')
+
 class RDBExample(grok.Application, grok.Model, rdb.QueryContainer):
     """The application object.
 
@@ -52,7 +58,7 @@
         # allow browsing to a subset
         return session.query(Faculty)
 
-class RDBExampleIndex(grok.View):
+class RDBExampleIndex(Page):
     """The index page for RDBExample. This shows all faculties available.
     """
     grok.name('index')
@@ -63,22 +69,26 @@
         for faculty in session.query(Faculty).all():
             yield located(faculty, self.context, str(faculty.id))
 
-class AddFaculty(grok.AddForm):
+class AddFaculty(PageAddForm):
     """A form to add a new Faculty object to the application.
     """
     grok.context(RDBExample)
 
     @property
-    def form_fields(self):
-        return grok.Fields(rdb.schema_from_model(Faculty))
+    def fields(self):
+        return field.Fields(rdb.schema_from_model(Faculty))
 
-    @grok.action('add')
-    def handle_add(self, *args, **kw):
-        faculty = Faculty(**kw)
+    def create(self, data):
+        faculty = Faculty(**data)
+        return faculty
+
+    def add(self, object):
         session = rdb.Session()
-        session.add(faculty)
-        self.redirect(self.url(self.context))
+        session.add(object)
 
+    def nextURL(self):
+        return self.url(self.context)
+
 class Departments(rdb.Container):
     """This container implements the departments relation on Faculty.
     """
@@ -106,7 +116,7 @@
                            backref='faculty',
                            collection_class=Departments)
 
-class FacultyIndex(grok.View):
+class FacultyIndex(Page):
     """This is the default view for Faculty.
     """
     grok.name('index')
@@ -126,26 +136,30 @@
     faculty_id = Column('faculty_id', Integer, ForeignKey('faculty.id'))
     title = Column('title', String(50))
 
-class AddDepartment(grok.AddForm):
+class AddDepartment(PageAddForm):
     grok.context(Departments)
 
     @property
-    def form_fields(self):
-        return grok.Fields(rdb.schema_from_model(Department))
+    def fields(self):
+        return field.Fields(rdb.schema_from_model(Department))
 
-    @grok.action('add')
-    def handle_add(self, *args, **kw):
-        department = Department(**kw)
+    def create(self, data):
+        department = Department(**data)
+        return department
+
+    def add(self, department):
         session = rdb.Session()
         session.add(department)
         self.context.set(department)
-        self.redirect(self.url(self.context))
-            
-class DepartmentIndex(grok.View):
+
+    def nextURL(self):
+        return self.url(self.context)
+
+class DepartmentIndex(Page):
     grok.name('index')
     grok.context(Department)
 
-class DepartmentsIndex(grok.View):
+class DepartmentsIndex(Page):
     grok.name('index')
     grok.context(Departments)
 

Modified: grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/configure.zcml
===================================================================
--- grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/configure.zcml	2009-09-18 13:48:28 UTC (rev 104330)
+++ grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/configure.zcml	2009-09-18 14:21:57 UTC (rev 104331)
@@ -2,5 +2,6 @@
            xmlns:grok="http://namespaces.zope.org/grok">
   <include package="grok" />
   <includeDependencies package="." />
+  <include package="megrok.z3cform.base" file="default_form_layer.zcml" />
   <grok:grok package="." />
 </configure>

Added: grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/layout.py
===================================================================
--- grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/layout.py	                        (rev 0)
+++ grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/layout.py	2009-09-18 14:21:57 UTC (rev 104331)
@@ -0,0 +1,12 @@
+import grok
+from megrok.layout import Layout
+from zope.interface import Interface
+
+
+class RDBLayout(Layout):
+    """The general layout for the RDB application
+    """
+    grok.context(Interface)
+    template = grok.PageTemplateFile('templates/layout.pt')
+
+

Added: grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/departmentindex.pt
===================================================================
--- grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/departmentindex.pt	                        (rev 0)
+++ grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/departmentindex.pt	2009-09-18 14:21:57 UTC (rev 104331)
@@ -0,0 +1 @@
+<h2>Department <span tal:content="context/title"></span></h2>

Added: grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/departmentsindex.pt
===================================================================
--- grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/departmentsindex.pt	                        (rev 0)
+++ grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/departmentsindex.pt	2009-09-18 14:21:57 UTC (rev 104331)
@@ -0,0 +1,11 @@
+<h3>Departments of faculty <span tal:replace="context/__parent__/title"></span></h3>
+<ul>
+  <li tal:repeat="department context/values">
+    <a tal:attributes="href python:view.url(department)" 
+       tal:content="department/title"></a>
+  </li>
+</ul>
+
+<p>
+  <a tal:attributes="href python:view.url(context, '@@adddepartment')">Add Department</a>
+</p>

Added: grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/facultyindex.pt
===================================================================
--- grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/facultyindex.pt	                        (rev 0)
+++ grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/facultyindex.pt	2009-09-18 14:21:57 UTC (rev 104331)
@@ -0,0 +1,6 @@
+<h2>Faculty <span tal:content="context/title"></span></h2>
+<h3>Departments</h3>
+
+<p>
+  <a tal:attributes="href python:view.url(context.departments)">Departments</a>
+</p>

Added: grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/layout.pt
===================================================================
--- grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/layout.pt	                        (rev 0)
+++ grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/layout.pt	2009-09-18 14:21:57 UTC (rev 104331)
@@ -0,0 +1,15 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      i18n:domain="zope"
+      metal:define-macro="master">
+  <head>
+    <title
+      metal:define-slot="title"
+      >RDB z3cform example application</title>
+  </head>
+
+  <body>
+<!--    <tal:header replace="structure provider:rdb_header" /> -->
+    <div id="content"
+         tal:content="structure view/content" />
+  </body>
+</html>

Added: grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/rdbexampleindex.pt
===================================================================
--- grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/rdbexampleindex.pt	                        (rev 0)
+++ grokapps/rdbz3cformexample/trunk/src/rdbz3cformexample/templates/rdbexampleindex.pt	2009-09-18 14:21:57 UTC (rev 104331)
@@ -0,0 +1,10 @@
+<h2>RDB Example</h2>
+<h3>Faculty listing</h3>
+<ul>
+  <li tal:repeat="faculty view/faculties">
+    <a tal:attributes="href python:view.url(faculty)" tal:content="faculty/title"></a>
+  </li>
+</ul>
+<p>
+  <a tal:attributes="href python:view.url('@@addfaculty')">Add Faculty</a>
+</p>



More information about the checkins mailing list