[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