[Checkins] SVN: grokapps/SimpleViewletDemo/ Adding a simple grok example app that shows how you can use viewlets for layout.

Tim Terlegård tim.terlegard at valentinewebsystems.se
Fri May 9 09:14:44 EDT 2008


Log message for revision 86566:
  Adding a simple grok example app that shows how you can use viewlets for layout.
  

Changed:
  A   grokapps/SimpleViewletDemo/
  A   grokapps/SimpleViewletDemo/bootstrap.py
  A   grokapps/SimpleViewletDemo/buildout.cfg
  A   grokapps/SimpleViewletDemo/setup.py
  A   grokapps/SimpleViewletDemo/src/
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/__init__.py
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app.py
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/adminbar.pt
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/appcss.pt
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/copyright.pt
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/fruit.pt
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/fruitcss.pt
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/login.pt
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/logo.pt
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/master.pt
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/navigation.pt
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/title.pt
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/configure.zcml
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/ftesting.zcml
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/README.txt
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/app.css
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/fruit.css
  A   grokapps/SimpleViewletDemo/src/simpleviewletdemo/testing.py
  A   grokapps/SimpleViewletDemo/versions.cfg

-=-
Added: grokapps/SimpleViewletDemo/bootstrap.py
===================================================================
--- grokapps/SimpleViewletDemo/bootstrap.py	                        (rev 0)
+++ grokapps/SimpleViewletDemo/bootstrap.py	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,63 @@
+##############################################################################
+#
+# Copyright (c) 2006 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Bootstrap a buildout-based project
+
+Simply run this script in a directory containing a buildout.cfg.
+The script accepts buildout command-line options, so you can
+use the -c option to specify an alternate configuration file.
+
+$Id$
+"""
+
+import os, shutil, sys, tempfile, urllib2
+
+tmpeggs = tempfile.mkdtemp()
+
+try:
+    import pkg_resources
+except ImportError:
+    ez = {}
+    exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
+                         ).read() in ez
+    ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
+
+    import pkg_resources
+
+if sys.platform == 'win32':
+    def quote(c):
+        if ' ' in c:
+            return '"%s"' % c # work around spawn lamosity on windows
+        else:
+            return c
+else:
+    def quote (c):
+        return c
+
+cmd = 'from setuptools.command.easy_install import main; main()'
+ws  = pkg_resources.working_set
+assert os.spawnle(
+    os.P_WAIT, sys.executable, quote (sys.executable),
+    '-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout',
+    dict(os.environ,
+         PYTHONPATH=
+         ws.find(pkg_resources.Requirement.parse('setuptools')).location
+         ),
+    ) == 0
+
+ws.add_entry(tmpeggs)
+ws.require('zc.buildout')
+import zc.buildout.buildout
+zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap'])
+shutil.rmtree(tmpeggs)
+

Added: grokapps/SimpleViewletDemo/buildout.cfg
===================================================================
--- grokapps/SimpleViewletDemo/buildout.cfg	                        (rev 0)
+++ grokapps/SimpleViewletDemo/buildout.cfg	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,69 @@
+[buildout]
+develop = .
+parts = app data zopectl i18n test
+find-links = http://download.zope.org/distribution/
+newest = false
+extends = versions.cfg
+# eggs will be installed in the default buildout location
+# (see .buildout/default.cfg in your home directory)
+# unless you specify an eggs_directory option here.
+
+versions = versions
+
+[app]
+recipe = zc.zope3recipes>=0.5.3:application
+eggs = simpleviewletdemo
+site.zcml = <include package="simpleviewletdemo" />
+            <include package="zope.app.twisted" />
+
+            <configure i18n_domain="simpleviewletdemo">
+              <unauthenticatedPrincipal id="zope.anybody"
+                                        title="Unauthenticated User" />
+              <unauthenticatedGroup id="zope.Anybody"
+                                    title="Unauthenticated Users" />
+              <authenticatedGroup id="zope.Authenticated"
+                                title="Authenticated Users" />
+              <everybodyGroup id="zope.Everybody"
+                              title="All Users" />
+              <principal id="zope.manager"
+                         title="Manager"
+                         login="a"
+                         password_manager="Plain Text"
+                         password="b"
+                         />
+
+              <!-- Replace the following directive if you do not want
+                   public access -->
+              <grant permission="zope.View"
+                     principal="zope.Anybody" />
+              <grant permission="zope.app.dublincore.view"
+                     principal="zope.Anybody" />
+
+              <role id="zope.Manager" title="Site Manager" />
+              <role id="zope.Member" title="Site Member" />
+              <grantAll role="zope.Manager" />
+              <grant role="zope.Manager"
+                     principal="zope.manager" />
+           </configure>
+
+[data]
+recipe = zc.recipe.filestorage
+
+# this section named so that the start/stop script is called bin/zopectl
+[zopectl]
+recipe = zc.zope3recipes:instance
+application = app
+zope.conf = ${data:zconfig}
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = simpleviewletdemo
+defaults = ['--tests-pattern', '^f?tests$', '-v']
+
+# this section named so that the i18n scripts are called bin/i18n...
+[i18n]
+recipe = lovely.recipe:i18n
+package = simpleviewletdemo
+domain = simpleviewletdemo
+location = src/simpleviewletdemo
+output = locales

Added: grokapps/SimpleViewletDemo/setup.py
===================================================================
--- grokapps/SimpleViewletDemo/setup.py	                        (rev 0)
+++ grokapps/SimpleViewletDemo/setup.py	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,28 @@
+from setuptools import setup, find_packages
+
+version = '0.0'
+
+setup(name='simpleviewletdemo',
+      version=version,
+      description="",
+      long_description="""\
+""",
+      # Get strings from http://www.python.org/pypi?%3Aaction=list_classifiers
+      classifiers=[], 
+      keywords="",
+      author="",
+      author_email="",
+      url="",
+      license="",
+      package_dir={'': 'src'},
+      packages=find_packages('src'),
+      include_package_data=True,
+      zip_safe=False,
+      install_requires=['setuptools',
+                        'grok',
+                        # Add extra requirements here
+                        ],
+      entry_points="""
+      # Add entry points here
+      """,
+      )

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/__init__.py
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/__init__.py	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/__init__.py	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1 @@
+# this directory is a package

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/app.py
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/app.py	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/app.py	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,124 @@
+import grok
+from zope.component import getMultiAdapter
+from zope.interface import Interface
+from zope.schema import TextLine
+
+grok.context(Interface)
+
+def get_application(context):
+    obj = context
+    while not isinstance(obj, App):
+        obj = obj.__parent__
+    return obj
+
+class App(grok.Application, grok.Container):
+    pass
+
+class IFruit(Interface):
+    name = TextLine(title=u"Name")
+
+class Fruit(grok.Model):
+    grok.implements(IFruit)
+
+    def __init__(self, name):
+        self.name = name
+
+class Index(grok.View):
+    grok.template('master')
+
+class Head(grok.ViewletManager):
+    grok.name('head')
+
+class Title(grok.Viewlet):
+    grok.viewletmanager(Head)
+
+class AppCSS(grok.Viewlet):
+    grok.viewletmanager(Head)
+    grok.context(App)
+
+class FruitCSS(grok.Viewlet):
+    grok.viewletmanager(Head)
+    grok.context(Fruit)
+
+class Header(grok.ViewletManager):
+    grok.name('header')
+
+class Logo(grok.Viewlet):
+    grok.viewletmanager(Header)
+    grok.order(1)
+
+class AdminBar(grok.Viewlet):
+    grok.viewletmanager(Header)
+    grok.order(2)
+
+class Admin(grok.View):
+    grok.template('master')
+
+class LeftSidebar(grok.ViewletManager):
+    grok.name('left')
+
+class Navigation(grok.Viewlet):
+    grok.viewletmanager(LeftSidebar)
+    grok.order(1)
+
+    def update(self):
+        self.items = []
+
+        rootfolder = get_application(self.context)
+        for navitem in rootfolder.values():
+            item = {'title': navitem.name,
+                    'url': self.__parent__.url(obj=navitem) }
+            self.items.append(item)
+
+class Login(grok.Viewlet):
+    grok.viewletmanager(LeftSidebar)
+    grok.order(2)
+
+class MainArea(grok.ViewletManager):
+    grok.name('main')
+
+class Content(grok.Viewlet):
+    grok.viewletmanager(MainArea)
+    grok.context(App)
+    grok.view(Index)
+
+    def render(self):
+        return '<div>Application object content area</div>'
+
+class AddFruit(grok.Viewlet):
+    grok.viewletmanager(MainArea)
+    grok.context(App)
+    grok.view(Admin)
+
+    def update(self):
+        self.form = getMultiAdapter((self.context, self.request), name='addfruitform')
+        form = self.form.update_form()
+        if self.request.method == 'POST':
+            app = get_application(self.context)
+            self.__parent__.redirect(self.__parent__.url(obj=app))
+
+    def render(self):
+        return self.form.render()
+
+class AddFruitForm(grok.AddForm):
+    form_fields = grok.AutoFields(Fruit)
+
+    @grok.action('Add fruit')
+    def add(self, **data):
+        obj = Fruit(**data)
+        name = data['name'].lower().replace(' ', '_')
+        self.context[name] = obj
+
+class FruitContent(grok.Viewlet):
+    grok.viewletmanager(MainArea)
+    grok.context(Fruit)
+    grok.template('fruit')
+
+    def update(self):
+        self.name = self.context.name
+
+class Footer(grok.ViewletManager):
+    grok.name('footer')
+
+class Copyright(grok.Viewlet):
+    grok.viewletmanager(Footer)

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/adminbar.pt
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/adminbar.pt	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/adminbar.pt	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,5 @@
+<div id="adminbar">
+    <a href="#" tal:attributes="href string:${view/__parent__/application_url}/admin">
+        Add content
+    </a>
+</div>

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/appcss.pt
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/appcss.pt	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/appcss.pt	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,2 @@
+<link rel="stylesheet" type="text/css"
+    tal:attributes="href static/app.css" />

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/copyright.pt
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/copyright.pt	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/copyright.pt	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1 @@
+<p>Copyright 2000 @Me</p>

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/fruit.pt
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/fruit.pt	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/fruit.pt	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,2 @@
+<p>Fruit object content area</p>
+<p>Current fruit is <span tal:replace="view/name" /></p>

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/fruitcss.pt
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/fruitcss.pt	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/fruitcss.pt	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,2 @@
+<link rel="stylesheet" type="text/css"
+    tal:attributes="href static/fruit.css" />

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/login.pt
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/login.pt	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/login.pt	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,5 @@
+<div class="portlet">
+    <p>Login<p>
+    User<br /><input type="text" size="20" /><br />
+    Password<br /><input type="text" size="20" />
+</div>

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/logo.pt
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/logo.pt	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/logo.pt	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,3 @@
+<div>
+    Placeholder for logo
+</div>

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/master.pt
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/master.pt	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/master.pt	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,22 @@
+<html>
+<head>
+    <tal:head content="structure provider:head" />
+</head>
+<body>
+
+<div id="header">
+    <tal:header content="structure provider:header" />
+</div>
+<div id="left">
+    <tal:left content="structure provider:left" />
+</div>
+<div id="main">
+    <tal:main content="structure provider:main" />
+</div>
+<div style="clear:both" />
+<div id="footer">
+    <tal:footer content="structure provider:footer" />
+</div>
+
+</body>
+</html>

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/navigation.pt
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/navigation.pt	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/navigation.pt	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,14 @@
+<div class="portlet">
+    <p>
+        <a href="#" tal:attributes="href view/__parent__/application_url">
+            Navigation
+        </a>
+    </p>
+    <ul>
+        <li tal:repeat="item view/items">
+            <a href="#"
+                tal:content="item/title"
+                tal:attributes="href item/url" />
+        </li>
+    </ul>
+</div>

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/title.pt
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/title.pt	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/app_templates/title.pt	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1 @@
+<title>Cool application</title>

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/configure.zcml
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/configure.zcml	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/configure.zcml	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,6 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+           xmlns:grok="http://namespaces.zope.org/grok">
+  <include package="grok" />
+  <includeDependencies package="." />
+  <grok:grok package="." />
+</configure>

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/ftesting.zcml
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/ftesting.zcml	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/ftesting.zcml	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,35 @@
+<configure
+   xmlns="http://namespaces.zope.org/zope"
+   i18n_domain="simpleviewletdemo"
+   package="simpleviewletdemo"
+   >
+
+  <include package="grok" />
+  <include package="simpleviewletdemo" />
+
+  <!-- Typical functional testing security setup -->
+  <securityPolicy
+      component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"
+      />
+
+  <unauthenticatedPrincipal
+      id="zope.anybody"
+      title="Unauthenticated User"
+      />
+  <grant
+      permission="zope.View"
+      principal="zope.anybody"
+      />
+
+  <principal
+      id="zope.mgr"
+      title="Manager"
+      login="mgr"
+      password="mgrpw"
+      />
+
+  <role id="zope.Manager" title="Site Manager" />
+  <grantAll role="zope.Manager" />
+  <grant role="zope.Manager" principal="zope.mgr" />
+
+</configure>

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/README.txt
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/README.txt	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/README.txt	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,2 @@
+Put static files here, like javascript and css.  They will be
+available as static/<filename> in views.

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/app.css
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/app.css	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/app.css	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,8 @@
+#header { background-color: #888; height: 70px; padding: 2em; }
+#left { background-color: #f00; height: 400px; width: 20%;
+        float: left; padding: 1em; }
+#main { background-color: #0f0; height: 400px; width: 70%;
+        float: left; padding: 1em; }
+#footer { background-color: #0ff; height: 50px; padding: 1em; }
+#adminbar { padding-left: 22%; margin-top: 60px; }
+.portlet { border-style: solid; margin-bottom: 2em; padding: 1em; }

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/fruit.css
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/fruit.css	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/static/fruit.css	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,8 @@
+#header { background-color: #aaa; height: 70px; padding: 2em; }
+#left { background-color: #a44; height: 400px; width: 20%;
+        float: left; padding: 1em; }
+#main { background-color: #dd0; height: 400px; width: 70%;
+        float: left; padding: 1em; }
+#footer { background-color: #0aa; height: 50px; padding: 1em; }
+#adminbar { padding-left: 22%; margin-top: 60px; }
+.portlet { border-style: solid; margin-bottom: 2em; padding: 1em; }

Added: grokapps/SimpleViewletDemo/src/simpleviewletdemo/testing.py
===================================================================
--- grokapps/SimpleViewletDemo/src/simpleviewletdemo/testing.py	                        (rev 0)
+++ grokapps/SimpleViewletDemo/src/simpleviewletdemo/testing.py	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,7 @@
+import os.path
+import simpleviewletdemo
+from zope.app.testing.functional import ZCMLLayer
+
+ftesting_zcml = os.path.join(
+    os.path.dirname(simpleviewletdemo.__file__), 'ftesting.zcml')
+FunctionalLayer = ZCMLLayer(ftesting_zcml, __name__, 'FunctionalLayer')

Added: grokapps/SimpleViewletDemo/versions.cfg
===================================================================
--- grokapps/SimpleViewletDemo/versions.cfg	                        (rev 0)
+++ grokapps/SimpleViewletDemo/versions.cfg	2008-05-09 13:14:44 UTC (rev 86566)
@@ -0,0 +1,110 @@
+# This file contains a list of versions of the various grok modules that
+# belong together.
+# It was downloaded from http://grok.zope.org/releaseinfo/grok-0.12.cfg
+# when this project was created.
+
+[versions]
+grok = 0.12
+ClientForm = 0.2.7
+docutils = 0.4
+martian = 0.9.3
+mechanize = 0.1.7b
+Pygments = 0.8.1
+pytz = 2007g
+RestrictedPython = 3.4.2
+simplejson = 1.7.1
+z3c.autoinclude = 0.2.2
+z3c.flashmessage = 1.0b2
+zc.catalog = 1.2b
+ZConfig = 2.5
+zdaemon = 2.0.0
+ZODB3 = 3.8.0b2
+zodbcode = 3.4.0b1dev-r75670
+zope.annotation = 3.4.0
+zope.app.apidoc = 3.4.0
+zope.app.applicationcontrol = 3.4.1
+zope.app.appsetup = 3.4.1
+zope.app.authentication = 3.4.0a1
+zope.app.basicskin = 3.4.0a1
+zope.app.broken = 3.4.0a1
+zope.app.catalog = 3.4.0a2
+zope.app.component = 3.4.0b3
+zope.app.container = 3.5.0a1
+zope.app.content = 3.4.0a1
+zope.app.debug = 3.4.0a1
+zope.app.dependable = 3.4.0a1
+zope.app.error = 3.5.1
+zope.app.exception = 3.4.0a1
+zope.app.file = 3.4.0a1
+zope.app.folder = 3.4.0a1
+zope.app.form = 3.4.0b2
+zope.app.generations = 3.4.0a1
+zope.app.http = 3.4.0a1
+zope.app.i18n = 3.4.0a1
+zope.app.interface = 3.4.0a1
+zope.app.intid = 3.4.0a2
+zope.app.keyreference = 3.4.0a1
+zope.app.locales = 3.4.0a1
+zope.app.onlinehelp = 3.4.0a1
+zope.app.pagetemplate = 3.4.0
+zope.app.preference = 3.4.0a1
+zope.app.principalannotation = 3.4.0a1
+zope.app.publication = 3.4.2
+zope.app.publisher = 3.5.0a2
+zope.app.renderer = 3.4.0a1
+zope.app.rotterdam = 3.4.0a1
+zope.app.schema = 3.4.0a1
+zope.app.security = 3.4.0a1-1
+zope.app.server = 3.4.0a1-4
+zope.app.session = 3.4.0a1
+zope.app.skins = 3.4.0a1
+zope.app.testing = 3.4.0a1
+zope.app.tree = 3.4.0a1
+zope.app.twisted = 3.4.0a1
+zope.app.wsgi = 3.4.0
+zope.app.zapi = 3.4.0a1
+zope.app.zcmlfiles = 3.4.0a1
+zope.app.zopeappgenerations = 3.4.0a1
+zope.cachedescriptors = 3.4.0
+zope.component = 3.4.0
+zope.configuration = 3.4.0
+zope.contentprovider = 3.4.0
+zope.contenttype = 3.4.0
+zope.copypastemove = 3.4.0
+zope.datetime = 3.4.0
+zope.deferredimport = 3.4.0
+zope.deprecation = 3.4.0
+zope.dottedname = 3.4.2
+zope.dublincore = 3.4.0
+zope.error = 3.5.1
+zope.event = 3.4.0
+zope.exceptions = 3.4.0
+zope.filerepresentation = 3.4.0
+zope.formlib = 3.4.0
+zope.hookable = 3.4.0
+zope.i18n = 3.4.0
+zope.i18nmessageid = 3.4.3
+zope.index = 3.4.1
+zope.interface = 3.4.0
+zope.lifecycleevent = 3.4.0
+zope.location = 3.4.0b2
+zope.minmax = 1.0
+zope.modulealias = 3.4.0a1
+zope.pagetemplate = 3.4.0a1
+zope.proxy = 3.4.0
+zope.publisher = 3.5.0a1.dev-r78838
+zope.schema = 3.4.0
+zope.security = 3.4.0b5
+zope.securitypolicy = 3.4.0
+zope.server = 3.5.0a2
+zope.session = 3.4.1
+zope.size = 3.4.0
+zope.structuredtext = 3.4.0
+zope.tal = 3.4.0b1
+zope.tales = 3.4.0a1
+zope.testbrowser = 3.4.1
+zope.testing = 3.5.1
+zope.thread = 3.4
+zope.traversing = 3.5.0a1.dev-r78730
+zope.viewlet = 3.4.1
+



More information about the Checkins mailing list