[Checkins] SVN: Sandbox/philikon/five.publication/trunk/ Initial
import of five.publication (Zope 2 on zope.publisher). Highly
experimental.
Philipp von Weitershausen
philikon at philikon.de
Wed Aug 1 21:22:24 EDT 2007
Log message for revision 78542:
Initial import of five.publication (Zope 2 on zope.publisher). Highly experimental.
It's just a prototype. You've been warned.
Changed:
A Sandbox/philikon/five.publication/trunk/
A Sandbox/philikon/five.publication/trunk/Products/
A Sandbox/philikon/five.publication/trunk/buildout.cfg
A Sandbox/philikon/five.publication/trunk/deploy.ini
A Sandbox/philikon/five.publication/trunk/etc/
A Sandbox/philikon/five.publication/trunk/etc/site.zcml
A Sandbox/philikon/five.publication/trunk/etc/zope.conf
A Sandbox/philikon/five.publication/trunk/five/
A Sandbox/philikon/five.publication/trunk/five/__init__.py
A Sandbox/philikon/five.publication/trunk/five/publication/
A Sandbox/philikon/five.publication/trunk/five/publication/__init__.py
A Sandbox/philikon/five.publication/trunk/five/publication/configure.zcml
A Sandbox/philikon/five.publication/trunk/five/publication/publication.py
A Sandbox/philikon/five.publication/trunk/five/publicationdemo/
A Sandbox/philikon/five.publication/trunk/five/publicationdemo/__init__.py
A Sandbox/philikon/five.publication/trunk/five/publicationdemo/application.py
A Sandbox/philikon/five.publication/trunk/log/
A Sandbox/philikon/five.publication/trunk/setup.py
A Sandbox/philikon/five.publication/trunk/var/
-=-
Property changes on: Sandbox/philikon/five.publication/trunk
___________________________________________________________________
Name: svn:ignore
+ five.publication.egg-info
bin
parts
eggs
develop-eggs
build
dist
.installed.cfg
Added: Sandbox/philikon/five.publication/trunk/buildout.cfg
===================================================================
--- Sandbox/philikon/five.publication/trunk/buildout.cfg (rev 0)
+++ Sandbox/philikon/five.publication/trunk/buildout.cfg 2007-08-02 01:22:24 UTC (rev 78542)
@@ -0,0 +1,28 @@
+[buildout]
+develop = .
+parts = interpreter app runzope test
+
+[interpreter]
+recipe = zc.recipe.egg
+interpreter = python
+eggs = five.publication
+
+[app]
+#
+recipe = zc.recipe.egg
+eggs = five.publication
+ Paste
+ PasteScript
+ PasteDeploy
+ z3c.evalexception
+
+[runzope]
+# old fashioned ZServer + ZPublisher
+recipe = zc.recipe.egg:script
+eggs = five.publication
+entry-points = runzope=Zope2.Startup.run:run
+initialization = sys.argv.extend(['-C', '${buildout:directory}/etc/zope.conf'])
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = five.publication
Added: Sandbox/philikon/five.publication/trunk/deploy.ini
===================================================================
--- Sandbox/philikon/five.publication/trunk/deploy.ini (rev 0)
+++ Sandbox/philikon/five.publication/trunk/deploy.ini 2007-08-02 01:22:24 UTC (rev 78542)
@@ -0,0 +1,12 @@
+[filter-app:main]
+use = egg:z3c.evalexception
+next = zope
+
+[app:zope]
+use = egg:five.publication#demo
+conf = etc/zope.conf
+
+[server:main]
+use = egg:Paste#http
+host = 127.0.0.1
+port = 8080
Added: Sandbox/philikon/five.publication/trunk/etc/site.zcml
===================================================================
--- Sandbox/philikon/five.publication/trunk/etc/site.zcml (rev 0)
+++ Sandbox/philikon/five.publication/trunk/etc/site.zcml 2007-08-02 01:22:24 UTC (rev 78542)
@@ -0,0 +1,19 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:meta="http://namespaces.zope.org/meta"
+ xmlns:five="http://namespaces.zope.org/five">
+
+ <include package="Products.Five" file="meta.zcml" />
+ <five:loadProducts file="meta.zcml"/>
+
+ <meta:redefinePermission from="zope2.Public" to="zope.Public" />
+
+ <include package="five.publication" />
+ <include package="Products.Five" />
+ <five:loadProducts />
+ <five:loadProductsOverrides />
+
+ <securityPolicy
+ component="Products.Five.security.FiveSecurityPolicy" />
+
+</configure>
Property changes on: Sandbox/philikon/five.publication/trunk/etc/site.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/five.publication/trunk/etc/zope.conf
===================================================================
--- Sandbox/philikon/five.publication/trunk/etc/zope.conf (rev 0)
+++ Sandbox/philikon/five.publication/trunk/etc/zope.conf 2007-08-02 01:22:24 UTC (rev 78542)
@@ -0,0 +1,1125 @@
+###############################################################################
+# Welcome to Zope 2.
+###############################################################################
+#
+# This is the Zope configuration file. The Zope configuration file
+# shows what the default configuration directives are, and show
+# examples for each directive. To declare a directive, make sure that
+# you add it to a line that does not begin with '#'. Note that comments
+# are only allowed at the beginning of a line: you may not add comments
+# after directive text on the same line.
+#
+# Note for Developers
+# ===================
+#
+# This file is *not* auto-generated. If you create a new directive you
+# very likely want to include an example of how to use the new
+# directive in this file.
+#
+# You shouldn't modify 'zope.conf.in' to change
+# configuration. Instead, you should make a copy into 'zope.conf' and
+# modify that to avoid checking in changes to this file by mistake.
+
+# ZConfig "defines" used for later textual substitution
+
+# XXX ack, have to hard-code this path?
+%define INSTANCE /Users/philipp/dev/five.publication
+
+# Directive: instancehome
+#
+# Description:
+# The path to the data files, local product files, import directory,
+# and Extensions directory used by Zope.
+#
+# Required (no default)
+#
+# Example:
+#
+# instancehome /home/chrism/projects/sessions
+
+instancehome $INSTANCE
+
+# Directive: clienthome
+#
+# Description:
+# The directory in which a running Zope's process identifier files are
+# placed.
+#
+# Default: $INSTANCE/var
+#
+# Example:
+#
+# clienthome /home/chrism/projects/sessions/var
+
+
+# Directive: path
+#
+# Description:
+# Name of a directory which should be inserted into the
+# the beginning of Python's module search path. This directive
+# may be specified as many times as needed to insert additional
+# directories. The set of directories specified is inserted into the
+# beginning of the module search path in the order which they are specified
+# here. Note that the processing of this directive may happen too late
+# under some circumstances; it is recommended that you use the PYTHONPATH
+# environment variable if using this directive doesn't work for you.
+#
+# Default: $INSTANCE/lib/python
+#
+# Example:
+#
+# path $INSTANCE/mypymodules
+
+
+# Directive: products
+#
+# Description:
+# Name of a directory that contains additional Product packages. This
+# directive may be used as many times as needed to add additional
+# collections of products. Each directory identified will be
+# added to the __path__ of the Products package. All Products are
+# initialized in ascending alphabetical order by product name. If
+# two products with the same name exist in two Products directories,
+# the order in which the packages appear here defines the load
+# order. The master Products directory exists in Zope's software home,
+# and cannot be removed from the products path (and should not be added
+# to it here).
+#
+# Default: $INSTANCE/Products
+#
+# Example:
+#
+# products /home/chrism/projects/myproducts
+
+
+# Directive: environment
+#
+# Description:
+# A section which can be used to define arbitrary key-value pairs
+# for use as environment variables during Zope's run cycle. It
+# is not recommended to set system-related environment variables such as
+# PYTHONPATH within this section.
+#
+# Default: unset
+#
+# Example:
+#
+# <environment>
+# MY_PRODUCT_ENVVAR foobar
+# </environment>
+
+# Directive: debug-mode
+#
+# Description:
+# A switch which controls several aspects of Zope operation useful for
+# developing under Zope. When debug mode is on:
+#
+# - The process will not detach from the controlling terminal
+#
+# - Errors in product initialization will cause startup to fail
+# (instead of writing error messages to the event log file).
+#
+# - Filesystem-based scripts such as skins, PageTemplateFiles, and
+# DTMLFiles can be edited while the server is running and the server
+# will detect these changes in real time. When this switch is
+# off, you must restart the server to see the changes.
+#
+# Setting this to 'off' when Zope is in a production environment is
+# encouraged, as it speeds execution (sometimes dramatically).
+#
+# Default: off
+#
+# Example:
+#
+ debug-mode on
+
+
+# Directive: effective-user
+#
+# Description:
+# If you intend to run Zope as the "root" user, you must supply this
+# directive with an effective username or userid number to which Zope
+# will 'suid' after the server ports are bound. This directive only
+# has effect under UNIX and if Zope is started as the root user.
+#
+# Default: unset
+#
+# Example:
+#
+# effective-user chrism
+
+
+# Directive: enable-product-installation
+#
+# Description:
+# If this directive is turned on, Zope performs 'product installation'
+# (the registration of Python modules in various Products directories)
+# at startup. Turning this off can speed Zope/ZEO startup time,
+# but it can also cause your Control_Panel Product list to become
+# desynchronized with the contents of your Products
+# directories. NOTE: Zope *must* be started at least once with
+# this directive set to "on" or you will receive an error. If using ZEO,
+# at least one ZEO client must be run with this directive set to "on"
+# once, the others can have it turned off.
+# NOTE: If your main storage is mounted read-only,
+# you must set this directive to "off".
+#
+# Default: on
+#
+# Example:
+#
+# enable-product-installation off
+
+# Directive: locale
+#
+# Description:
+# Enable locale (internationalization) support by supplying a locale
+# name to be used. See your operating system documentation for locale
+# information specific to your system. If your Python module does not
+# support the locale module, or if the requested locale is not
+# supported by your system, an error will be raised and Zope will not
+# start.
+#
+# Default: unset
+#
+# Example:
+#
+# locale fr_FR
+
+
+# Directive: datetime-format
+#
+# Description:
+# Set this variable either to "us" or "international" to force the
+# DateTime module to parse date strings either with
+# month-before-days-before-year ("us") or
+# days-before-month-before-year ("international"). The default
+# behaviour of DateTime (when this setting is left unset) is to
+# parse dates as US dates.
+#
+# Default: us
+#
+# Example:
+#
+# datetime-format international
+
+
+# Directive: zserver-threads
+#
+# Description:
+# Specify the number of threads that Zope's ZServer web server will use
+# to service requests. The default is 4.
+#
+# Default: 4
+#
+# Example:
+#
+# zserver-threads 10
+
+
+# Directive: python-check-interval
+#
+# Description:
+# Specify an integer representing the Python interpreter "check
+# interval" This interval determines how often the interpreter checks
+# for periodic things such as thread switches and signal handlers. The
+# Zope default is 500, but you may want to experiment with other values
+# in order to attempt to increae performance in your particular
+# environment.
+#
+# Default: 500
+#
+# Example:
+#
+# python-check-interval 1000
+
+
+# Directive: zserver-read-only-mode
+#
+# Description:
+# If this directive is set to 'on', it will cause Zope to inhibit the
+# creation of log files and pid files. Access and event log files will
+# be presented on standard output. Setting this directive 'on' causes
+# pcgi, fastcgi, and daemon-related directives to have no effect.
+#
+# Default: off
+#
+# Example:
+#
+# zserver-read-only-mode on
+
+
+# Directive: pid-filename
+#
+# Description:
+# The path to the file in which the Zope process id(s) will be written.
+# This defaults to client-home/Z2.pid.
+#
+# Default: CLIENT_HOME/Z2.pid
+#
+# Example:
+#
+# pid-filename /home/chrism/projects/sessions/var/Z2.pid
+
+
+# Directive: lock-filename
+#
+# Description:
+# The path to a "lock file" which will be locked by Zope while it's
+# running. This file is used by zopectl.py to determine if Zope is
+# currently running. This defaults to CLIENT_HOME/Z2.lock.
+#
+# Default: CLIENT_HOME/Z2.lock
+#
+# Example:
+#
+# lock-filename /home/chrism/projects/sessions/var/Z2.lock
+
+
+# Directive: mime-types
+#
+# Description:
+# Tells Zope about additional mime.types files that should be
+# loaded. The files have the same format as the mime.types file
+# distributed with Apache. The "mime-types" setting may be given
+# more than once in the configuration file.
+#
+# Example:
+#
+# mime-types $INSTANCE/etc/mime.types
+
+
+# Directive: structured-text-header-level
+#
+# Description:
+# Set the default starting HTML header level for structured text
+# documents. The default is 3, which implies that top-level headers
+# will be created with an <H3> tag.
+#
+# Default: 3
+#
+# Example:
+#
+# structured-text-header-level 1
+
+# Directive: rest-input-encoding
+#
+# Description:
+# Specifies the input encoding of re-StructuredText documents
+# (e.g. 'utf-8', 'iso-8859-15' or any other valid encoding recognized
+# by Python). The default is your Python's default encoding.
+#
+# Default: unset (uses system default)
+#
+# Example:
+#
+# rest-input-encoding iso-8859-15
+
+# Directive: rest-output-encoding
+#
+# Description:
+# Specifies the output encoding of re-StructuredText documents
+# (e.g. 'utf-8', 'iso-8859-15' or any other valid encoding recognized
+# by Python). The default is your Python's default encoding.
+#
+# Default: unset (uses system default)
+#
+# Example:
+#
+# rest-output-encoding iso-8859-15
+
+# Directive: rest-header-level
+#
+# Description:
+# Set the default starting HTML header level for restructured text
+# documents. The default is 3, which implies that top-level headers
+# will be created with an <H3> tag.
+#
+# Default: 3
+#
+# Example:
+#
+# rest-header-level 2
+
+# Directive: rest-language-code
+#
+# Description:
+# Language code used for some internal translations inside of the docutils
+# package and for DTD bibliographic elements mapping. See
+# lib/python/docutils/languages/ for a list of supported language codes.
+#
+# Default: en
+#
+# Example:
+#
+# rest-language-code de
+
+# Directive: cgi-environment
+#
+# Description:
+# A section which allows a user to define arbitrary key-value pairs for
+# use as the initial CGI environment variables. This is useful
+# when you want to proxy requests from another web server to Zserver,
+# and would like Zserver's CGI environment to reflect the CGI
+# environment of the other web server.
+#
+# Default: unset
+#
+# Example:
+#
+# <cgi-environment>
+# HTTPS_SERVER Foobar Server 1.0
+# HTTPS_PORT 443
+# </cgi-environment>
+
+
+
+# Directive: dns-server
+#
+# Description:
+# Specify the IP address of your DNS server in order to cause resolved
+# hostnames to be written to Zope's access log. By default, Zope will
+# not resolve hostnames unless this is set.
+#
+# Default: unset
+#
+# Example:
+#
+# dns-server 127.0.0.1
+
+
+# Directive: ip-address
+#
+# Description:
+# The default IP address on which Zope's various server protocol
+# implementations will listen for requests. If this is unset, Zope
+# will listen on all IP addresses supported by the machine. This
+# directive can be overridden on a per-server basis in the servers
+# section.
+#
+# Default: unset
+#
+# Example:
+#
+# ip-address 127.0.0.1
+
+
+# Directive: http-realm
+#
+# Description:
+# The HTTP "Realm" header value sent by this Zope instance. This value
+# often shows up in basic authentication dialogs.
+#
+# Default: Zope
+#
+# Example:
+#
+# http-realm Slipknot
+
+
+# Directive: cgi-maxlen
+#
+# Description:
+# Set this value to limit the amount of form data being processed
+# by Zope to prevent DoS attacks.
+#
+# Default: 0 (= no restrictions)
+#
+# Example:
+#
+# cgi-maxlen 10000
+
+
+# Directive: http-header-max-length
+#
+# Description:
+# Maximum number of bytes allowed within a HTTP request header. The request
+# is discarded and considered as a DoS attack if the header size exceeds
+# this limit.
+#
+# Default: 8192
+#
+# Example:
+#
+# http-header-max-length 16384
+
+# Directive: enable-ms-author-via
+#
+# Description:
+# Set this directive to 'true' to enable the "MS-Author-Via" header
+# in response to an OPTIONS WebDAV request. Early versions of
+# Microsoft Web Folders and Microsoft Office require this header to
+# be present to be able to connect to Zope via WebDAV.
+#
+# This is disabled by default since it makes a lot of standards-compliant
+# things unhappy AND it tricks Microsoft Office into trying to edit Office
+# files stored in Zope via WebDAV even when the user isn't allowed to edit
+# them and is only trying to download them.
+#
+# Check this collector entry for more information:
+# http://www.zope.org/Collectors/Zope/1441
+#
+# Recent versions of Microsoft Web Folders, updated after January
+# 2005, do not require this header anymore, and instead require a
+# "Public" header to be present in reply to the OPTIONS WebDAV
+# request.
+# (http://www.redmountainsw.com/wordpress/archives/webfolders-zope)
+#
+# To get a recent Microsoft Web Folders implementation, refer to
+# Microsoft KB Article 907306.
+# (Software Update for Web Folders: May 18, 2007).
+#
+# Default: off
+#
+# Example:
+#
+# enable-ms-author-via on
+
+# Directive: enable-ms-public-header
+#
+# Description:
+# Set this directive to 'on' to enable sending the "Public" header
+# in response to an WebDAV OPTIONS request.
+#
+# Though recent WebDAV drafts mention this header, the original
+# WebDAV RFC did not mention it as part of the standard. Very few
+# web servers out there include this header in their replies, most
+# notably IIS and Netscape Enterprise 3.6.
+#
+# Since many best practices documents out in the web mention
+# turning off this header with the subject of "Mask Your Web Server
+# For Enhanced Security", this setting is off by
+# default. Presumably malicious people might take the presence of
+# this header as indication of an IIS Web Server and try to attack
+# your site, so be careful when turning it on.
+#
+# Recent versions of Microsoft Web Folders, updated after January
+# 2005, *do* require this header to be present in reply to the
+# OPTIONS WebDAV request.
+# (http://www.redmountainsw.com/wordpress/archives/webfolders-zope)
+#
+# To get a recent Microsoft Web Folders implementation, refer to
+# Microsoft KB Article 907306.
+# (Software Update for Web Folders: May 18, 2007).
+#
+# Default: off
+#
+# Example:
+#
+# enable-ms-public-header on
+
+# Directive: automatically-quote-dtml-request-data
+#
+# Description:
+# Set this directive to 'off' in order to disable the autoquoting of
+# implicitly retrieved REQUEST data by DTML code which contains a '<'
+# when used in <dtml-var> construction. When this directive is 'on',
+# all data implicitly retrieved from the REQUEST in DTML (as opposed to
+# addressing REQUEST.somevarname directly) that contains a '<' will be
+# HTML-quoted when interpolated via a <dtml-var> or &dtml- construct. This
+# mitigates the possibility that DTML programmers will leave their
+# sites open to a "client-side trojan" attack.
+#
+# Default: on
+#
+# Example:
+#
+# automatically-quote-dtml-request-data on
+
+# Directive: trusted-proxy
+#
+# Description:
+# Define one or more 'trusted-proxies' directives, each of which is a
+# hostname or an IP address. The set of definitions comprises a list
+# of front-end proxies that are trusted to supply an accurate
+# X-Forwarded-For header to Zope. If a connection comes from
+# a trusted proxy, Zope will trust any X-Forwarded header to contain
+# the user's real IP address for the purposes of address-based
+# authentication restriction.
+#
+# Default: unset
+#
+# Example:
+#
+# trusted-proxy www.example.com
+# trusted-proxy 192.168.1.1
+
+# Directive: publisher-profile-file
+#
+# Description:
+# Names a file on the filesystem which causes Zope's Python
+# profiling capabilities to be enabled. For more information, see
+# the Debug Information - > Profiling tab of Zope's Control_Panel
+# via the Zope Management Interface. IMPORTANT: setting this
+# filename will cause Zope code to be executed much more slowly
+# than normal. This should not be enabled in production.
+#
+# Default: unset
+#
+# Example:
+#
+# publisher-profile-file $INSTANCE/var/profile.dat
+
+
+# Directive: security-policy-implementation
+#
+# Description:
+# The default Zope security machinery is implemented in C. Change
+# this to "python" to use the Python version of the Zope security
+# machinery. This setting may impact performance but is useful
+# for debugging purposes. See also the "verbose-security" option
+# below.
+#
+# Default: C
+#
+# Example:
+#
+# security-policy-implementation python
+
+# Directive: skip-authentication-checking
+#
+# Description:
+# Set this directive to 'on' to cause Zope to skip checks related
+# to authentication, for servers which serve only anonymous content.
+# Only works if security-policy-implementation is 'C'.
+#
+# Default: off
+#
+# Example:
+#
+# skip-authentication-checking on
+
+
+# Directive: skip-ownership-checking
+#
+# Description:
+# Set this directive to 'on' to cause Zope to ignore ownership checking
+# when attempting to execute "through the web" code. By default, this
+# directive is on in order to prevent 'trojan horse' security problems
+# whereby a user with less privilege can cause a user with more
+# privilege to execute dangerous code.
+#
+# Default: off
+#
+# Example:
+#
+# skip-ownership-checking on
+
+
+# Directive: verbose-security
+#
+# Description:
+# By default, Zope reports authorization failures in a terse manner in
+# order to avoid revealing unnecessary information. This option
+# modifies the Zope security policy to report more information about
+# the reason for authorization failures. It's designed for debugging.
+# If you enable this option, you must also set the
+# 'security-policy-implementation' to 'python'.
+#
+# Default: off
+#
+# Example:
+#
+# security-policy-implementation python
+# verbose-security on
+
+
+# Directive: maximum-number-of-session-objects
+#
+# Description:
+# An integer value representing the number of items to use as a
+# "maximum number of subobjects" value of the
+# '/temp_folder/session_data' transient object container.
+#
+# Default: 1000
+#
+# Example:
+#
+# maximum-number-of-session-objects 10000
+
+
+# Directive: session-add-notify-script-path
+#
+# Description:
+# An optional fill Zope path name of a callable object to be set as the
+# "script to call on object addition" of the sessioN_data transient
+# object container created in the /temp_folder folder at startup.
+#
+# Default: unset
+#
+# Example:
+#
+# session-add-notify-script-path /scripts/add_notifier
+
+
+# Directive: session-delete-notify-script-path
+#
+# Description:
+# An optional fill Zope path name of a callable object to be set as the
+# "script to call on object deletion" of the sessioN_data transient
+# object container created in the /temp_folder folder at startup.
+#
+# Default: unset
+#
+# Example:
+#
+# session-delete-notify-script-path /scripts/del_notifier
+
+
+# Directive: session-timeout-minutes
+#
+# Description:
+# An integer value representing the number of minutes to be used as the
+# "data object timeout" of the '/temp_folder/session_data' transient
+# object container.
+#
+# Default: 20
+#
+# Example:
+#
+# session-timeout-minutes 30
+
+
+# Directive: session-resolution-seconds
+#
+# Description:
+# An integer value representing the number of seconds to be used as the
+# "timeout resolution" of the '/temp_folder/session_data' transient
+# object container.
+#
+# Default: 20
+#
+# Example:
+#
+# session-resolution-seconds 60
+
+
+# Directive: suppress-all-access-rules
+#
+# Description:
+# If this directive is set to on, no access rules in your Zope site
+# will be executed. This is useful if you "lock yourself out" of a
+# particular part of your site by setting an improper access rule.
+#
+# Default: off
+#
+# Example:
+#
+# suppress-all-access-rules on
+
+
+# Directive: suppress-all-site-roots
+#
+# Description:
+# If this directive is set to on, no site roots in your Zope site will
+# be effective. This is useful if you "lock yourself out" of a
+# particular part of your site by setting an improper site root.
+#
+# Default: off
+#
+# Example:
+#
+# suppress-all-site-roots on
+
+
+# Directive: database-quota-size
+#
+# Description:
+# Set this directive to an integer in bytes in order to place a hard
+# limit on the size which the default FileStorage-backed Zope database
+# can grow. Additions to the database will not be permitted once this
+# filesize is exceeded.
+#
+# Default: unset
+#
+# Example:
+#
+# database-quota-size 1000000
+
+
+# Directive: read-only-database
+#
+# Description:
+# This causes the main Zope FileStorage-backed ZODB to be opened in
+# read-only mode.
+#
+# Default: off
+#
+# Example:
+#
+# read-only-database on
+
+
+# Directive: zeo-client-name
+#
+# Description:
+# If you want a persistent ZEO client cache which retains cache
+# contents across ClientStorage restarts, you need to define a
+# zeo-client-name. If you use ZEO and you don't set a
+# zeo-client-name, the client cache is stored in temporary files
+# which are removed when the ClientStorage shuts down. The value
+# of zeo-client-name is used to uniquely identify the local cache
+# files created if this Zope is a ZEO client.
+#
+# Default: unset
+#
+# Example:
+#
+# zeo-client-name zeo1
+
+
+# Directives: logger
+#
+# Description:
+# This area should define one or more "logger" sections of the
+# names "access", "event", and "trace". The "access" logger logs
+# Zope server access. The "event" logger logs Zope event
+# information. The "trace" logger logs detailed server request
+# information (for debugging purposes only). Each logger section
+# may contain a "level" name/value pair which indicates the level
+# of logging detail to capture for this logger. The default level
+# is INFO. Level may be any of "CRITICAL", 'ERROR", WARN", "INFO",
+# "DEBUG", and "ALL". Each logger section may additionally contain
+# one or more "handler" sections which indicates a types of log
+# "handlers" (file, syslog, NT event log, etc) to be used for the
+# logger being defined. There are 5 types of handlers: logfile,
+# syslog, win32-eventlog, http-handler, email-notifier. Each
+# handler type has its own set of allowable subkeys which define
+# aspects of the handler. All handler sections also allow for the
+# specification of a "format" (the log message format string), a
+# "dateformat" (the log message format for date strings), and a
+# "level", which has the same semantics of the overall logger
+# level but overrides the logger's level for the handler it's
+# defined upon. XXXX much more detail necessary here
+#
+# Default:
+#
+# The access log will log to the file <instancehome>/log/Z2.log at
+# level INFO, the event log will log to the file
+# <instancehome>/log/event.log at level INFO, and the trace log
+# will not be written anywhere.
+
+<eventlog>
+ level info
+ <logfile>
+ path $INSTANCE/log/event.log
+ level info
+ </logfile>
+</eventlog>
+
+<logger access>
+ level WARN
+ <logfile>
+ path $INSTANCE/log/Z2.log
+ format %(message)s
+ </logfile>
+</logger>
+
+# <logger trace>
+# level WARN
+# <logfile>
+# path $INSTANCE/log/trace.log
+# format %(message)s
+# </logfile>
+# </logger>
+
+
+# Directive: conflict-error-log-level
+#
+# Description:
+# Specifies at which level conflict errors are logged. Conflict
+# errors, when occuring in small numbers, are a normal part of the
+# Zope optimistic transaction conflict resolution algorithms. They
+# are retried automatically a few times, and are therefore usually
+# not visible by the user. You can specify 'notset' if you don't
+# want them logged, or use any other logger level (see above).
+#
+# Default: info
+#
+# Example:
+#
+# conflict-error-log-level blather
+
+
+# Directive: warnfilter
+#
+# Description:
+# A section that allows you to define a warning filter.
+# The following keys are valid within a warnfilter section:
+#
+# action: one of the following strings:
+#
+# "error" turn matching warnings into exceptions
+# "ignore" never print matching warnings
+# "always" always print matching warnings
+# "default" print the first occurrence of matching warnings
+# for each location where the warning is issued
+# "module" print the first occurrence of matching warnings
+# for each module where the warning is issued
+# "once" print only the first occurrence of matching
+# warnings, regardless of location
+#
+# message: a string containing a regular expression that the
+# warning message must match (the match is compiled to
+# always be case-insensitive)
+#
+# category: a Python dotted-path classname (must be a subclass of
+# Warning) of which the warning category must be a subclass in
+# order to match
+#
+# module: a string containing a regular expression that the
+# module name must match (the match is compiled to be
+# case-sensitive)
+#
+# lineno: an integer that the line number where the warning
+# occurred must match, or 0 to match all line numbers
+#
+# All keys within a warnfilter section are optional. More than
+# one warnfilter section may be specified.
+#
+# Default: unset
+#
+# Example:
+#
+# <warnfilter>
+# action ignore
+# category exceptions.DeprecationWarning
+# </warnfilter>
+
+
+# Directive: max-listen-sockets
+#
+# Description:
+# The maximum number of sockets that ZServer will attempt to open
+# in order to service incoming connections.
+#
+# Default: 1000
+#
+# Example:
+#
+# max-listen-sockets 500
+
+
+# Directives: port-base
+#
+# Description:
+# Offset applied to the port numbers used for ZServer
+# configurations. For example, if the http-server port is 8080 and
+# the port-base is 1000, the HTTP server will listen on port 9080.
+# This makes it easy to change the complete set of ports used by a
+# Zope server process
+#
+# Default:
+#
+# 0
+#
+# Example:
+#
+# port-base 1000
+
+
+# Directive: large-file-threshold
+#
+# Description:
+# Requests bigger than this size get saved into a temporary file
+# instead of being read completely into memory.
+#
+# Default: 512K
+#
+# Example:
+#
+# large-file-threshold 1Mb
+
+# Directive: default-zpublisher-encoding
+#
+# Description:
+# This controls what character set is used to encode unicode
+# data that reaches ZPublisher without any other specified encoding.
+#
+# Default: iso-8859-15
+#
+# Example:
+#
+# default-zpublisher-encoding utf-8
+
+# Directives: servers
+#
+# Description:
+# A set of sections which allow the specification of Zope's various
+# ZServer servers. 8 different server types may be defined:
+# http-server, ftp-server, webdav-source-server, persistent-cgi,
+# fast-cgi, monitor-server, icp-server, and clock-server. If no servers
+# are defined, the default servers are used.
+#
+# Ports may be specified using the 'address' directive either in simple
+# form (80) or in complex form including hostname 127.0.0.1:80. If the
+# hostname is "left off", the default-ip-address is used as the hostname.
+#
+# Port numbers are offset by the setting of port-base.
+#
+# To run the monitor-server an emergency user must be defined
+# (through an 'access' file).
+#
+# Default:
+#
+# An HTTP server starts on port 8080.
+
+<http-server>
+ # valid keys are "address" and "force-connection-close"
+ address 8080
+
+ # force-connection-close on
+ #
+ # You can also use the WSGI interface between ZServer and ZPublisher:
+ # use-wsgi on
+ #
+ # To defer the opening of the HTTP socket until the end of the
+ # startup phase:
+ # fast_listen false
+ #
+</http-server>
+
+# Examples:
+#
+# <ftp-server>
+# # valid key is "address"
+# address 8021
+# </ftp-server>
+#
+# <webdav-source-server>
+# # valid keys are "address" and "force-connection-close"
+# address 1980
+# force-connection-close off
+# </webdav-source-server>
+#
+# <persistent-cgi>
+# # valid key is "path"
+# path somefile
+# </persistent-cgi>
+#
+# <fast-cgi>
+# # valid key is "address"; the address may be hostname:port, port,
+# # or a path for a Unix-domain socket
+# address somefile
+# </fast-cgi>
+#
+# <monitor-server>
+# # valid keys are "address"
+# address 8099
+# </monitor-server>
+#
+# <icp-server>
+# # valid key is "address"
+# address 888
+# </icp-server>
+#
+# <clock-server>
+# # starts a clock which calls /foo/bar every 30 seconds
+# method /foo/bar
+# period 30
+# user admin
+# password 123
+# </clock-server>
+#
+# <server>
+# # This uses Twisted as the web-server. You must install Twisted
+# # separately. You can't run Twisted and ZServer at same time.
+# address 8080
+# type Zope2-HTTP
+# </server>
+
+
+# Database (zodb_db) section
+#
+# Description:
+# A database section allows the definition of custom database and
+# storage types. More than one zodb_db section can be defined.
+#
+# Default: unset.
+# IMPORTANT: At least one database with a mount-point of "/"
+# must be specified for Zope to start properly.
+
+<zodb_db main>
+ # Main FileStorage database
+ <filestorage>
+ path $INSTANCE/var/Data.fs
+ </filestorage>
+ mount-point /
+</zodb_db>
+
+<zodb_db temporary>
+ # Temporary storage database (for sessions)
+ <temporarystorage>
+ name temporary storage for sessioning
+ </temporarystorage>
+ mount-point /temp_folder
+ container-class Products.TemporaryFolder.TemporaryContainer
+</zodb_db>
+
+# Other storage examples
+#
+# ZEO client storage:
+#
+# <zodb_db main>
+# mount-point /
+# # ZODB cache, in number of objects
+# cache-size 5000
+# <zeoclient>
+# server localhost:8100
+# storage 1
+# name zeostorage
+# var $INSTANCE/var
+# # ZEO client cache, in bytes
+# cache-size 20MB
+# # Uncomment to have a persistent disk cache
+# #client zeo1
+# </zeoclient>
+# </zodb_db>
+
+# Product configuration (product-config) section(s)
+#
+# Description:
+# Add-on products may need to allow the user to specify policy /
+# configuration. Such policies may be expressed as a set of
+# name-value pairs, grouped into a named section (there may
+# be many such sections, typically one per product).
+# These sections will be captured in an attribute, 'product_config'
+# of the top-level config object, under the key corresponding to
+# the section name. E.g., the sample section below would be
+# parsed into a dict, {'bar': 'baz'}, available as
+# config.product_config['foo']
+#
+# Products may also register their own section types, extending
+#
+#
+# Example:
+#
+# 1. Simple "bag of strings" section:
+#
+# <product-config foo>
+# bar baz
+# </product-config>
+#
+# 2. Custom section type
+#
+# Products/Foo/component.xml:
+#
+# <component>
+# <description>
+# Some product-specific hackery.
+# </description>
+# <sectiontype name="myproduct" implements="zope.product.base">
+# <description>
+# Product-specific configuration.
+# </description>
+# <key name="foo" />
+# </sectiontype>
+# </component>
+#
+# In zope.conf:
+#
+# %import Products.Foo
+#
+# <myproduct bar>
+# foo qux
+# </myproduct>
Added: Sandbox/philikon/five.publication/trunk/five/__init__.py
===================================================================
--- Sandbox/philikon/five.publication/trunk/five/__init__.py (rev 0)
+++ Sandbox/philikon/five.publication/trunk/five/__init__.py 2007-08-02 01:22:24 UTC (rev 78542)
@@ -0,0 +1,17 @@
+##############################################################################
+#
+# Copyright (c) 2007 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.
+#
+##############################################################################
+"""This is a namespace package
+"""
+import pkg_resources
+pkg_resources.declare_namespace('zope')
Property changes on: Sandbox/philikon/five.publication/trunk/five/__init__.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/five.publication/trunk/five/publication/__init__.py
===================================================================
--- Sandbox/philikon/five.publication/trunk/five/publication/__init__.py (rev 0)
+++ Sandbox/philikon/five.publication/trunk/five/publication/__init__.py 2007-08-02 01:22:24 UTC (rev 78542)
@@ -0,0 +1 @@
+# make this directory a package
Property changes on: Sandbox/philikon/five.publication/trunk/five/publication/__init__.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/five.publication/trunk/five/publication/configure.zcml
===================================================================
--- Sandbox/philikon/five.publication/trunk/five/publication/configure.zcml (rev 0)
+++ Sandbox/philikon/five.publication/trunk/five/publication/configure.zcml 2007-08-02 01:22:24 UTC (rev 78542)
@@ -0,0 +1,15 @@
+<configure xmlns="http://namespaces.zope.org/zope">
+
+ <include package="zope.app.publication" file="meta.zcml" />
+
+ <publisher
+ name="Browser"
+ factory=".publication.RequestPublicationFactory"
+ methods="*"
+ mimetypes="*"
+ priority="0"
+ />
+
+ <adapter factory=".publication.BrowserPublisher" />
+
+</configure>
Property changes on: Sandbox/philikon/five.publication/trunk/five/publication/configure.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/five.publication/trunk/five/publication/publication.py
===================================================================
--- Sandbox/philikon/five.publication/trunk/five/publication/publication.py (rev 0)
+++ Sandbox/philikon/five.publication/trunk/five/publication/publication.py 2007-08-02 01:22:24 UTC (rev 78542)
@@ -0,0 +1,196 @@
+import transaction
+import zope.interface
+import zope.component
+import zope.event
+import zope.publisher.browser
+
+from zope.component import queryMultiAdapter
+from zope.security.management import newInteraction, endInteraction
+from zope.traversing.namespace import namespaceLookup
+from zope.traversing.namespace import nsParse
+from zope.traversing.interfaces import TraversalError
+from zope.publisher.interfaces import IPublishTraverse, IPublication, NotFound
+from zope.publisher.interfaces.browser import IBrowserPublisher, IBrowserRequest
+
+from zope.app.publisher.browser import queryDefaultViewName
+from zope.app.publication.interfaces import IRequestPublicationFactory
+from zope.app.publication.interfaces import BeforeTraverseEvent
+from zope.app.publication.interfaces import EndRequestEvent
+from zope.app.publication.zopepublication import Cleanup
+
+import ZPublisher.BaseRequest
+from ZPublisher.mapply import mapply
+from ZPublisher.BaseRequest import RequestContainer
+
+class BrowserRequest(zope.publisher.browser.BrowserRequest):
+
+ def __init__(self, *args, **kw):
+ super(BrowserRequest, self).__init__(*args, **kw)
+ self.__setupLegacy()
+
+ def __setupLegacy(self):
+ self._environ['URL'] = str(self.URL)
+ self._environ['REQUEST'] = self
+
+ # TODO need to support PATHn, BASEn, BASEPATHn, etc.
+ self._environ['BASEPATH1'] = self.getURL()
+ self._environ['BASE0'] = self.getURL()
+ self._environ['URL1'] = self.getURL()
+
+ # TODO need to remember PARENTS during traversal
+ self._environ['PARENTS'] = []
+
+class BrowserPublication(object):
+ zope.interface.implements(IPublication)
+
+ root_name = 'Application'
+
+ def __init__(self, db):
+ self.db = db
+
+ def beforeTraversal(self, request):
+ newInteraction(request)
+ transaction.begin()
+
+ def getApplication(self, request):
+ # Open the database.
+ conn = self.db.open()
+ cleanup = Cleanup(conn.close)
+ request.hold(cleanup) # Close the connection on request.close()
+
+ # Get the application object.
+ root = conn.root()
+ app = root.get(self.root_name, None)
+
+ app = app.__of__(RequestContainer(REQUEST=request))
+ request['PARENTS'].append(app)
+
+ return app
+
+ def callTraversalHooks(self, request, ob):
+ zope.event.notify(BeforeTraverseEvent(ob, request))
+
+ def traverseName(self, request, ob, name):
+ bpth = getattr(object, '__before_publishing_traverse__', None)
+ if bpth is not None:
+ bpth(object, self)
+
+ # mostly lifted from zope.app.publication.publicationtraverse
+ lookup_name = name
+
+ if name and name[:1] in '@+':
+ # Process URI segment parameters.
+ ns, lookup_name = nsParse(name)
+ if ns:
+ try:
+ subobject = namespaceLookup(ns, lookup_name, ob, request)
+ except TraversalError:
+ raise NotFound(ob, name)
+
+ return subobject
+
+ if lookup_name == '.':
+ return ob
+
+ if IPublishTraverse.providedBy(ob):
+ subobject = ob.publishTraverse(request, lookup_name)
+ else:
+ # self is marker
+ adapter = queryMultiAdapter((ob, request), IPublishTraverse,
+ default=self)
+ if adapter is not self:
+ subobject = adapter.publishTraverse(request, lookup_name)
+ else:
+ raise NotFound(ob, name, request)
+
+ request['PARENTS'].append(subobject)
+ return subobject
+
+ def getDefaultTraversal(self, request, ob):
+ if IBrowserPublisher.providedBy(ob):
+ return ob.browserDefault(request)
+ else:
+ adapter = queryMultiAdapter((ob, request), IBrowserPublisher)
+ if adapter is not None:
+ ob, path = adapter.browserDefault(request)
+ return ob, path
+ else:
+ return ob, None
+
+ def afterTraversal(self, request, ob):
+ pass #XXX
+
+ def callObject(self, request, ob):
+ def missing_name(name, context):
+ if name == 'self':
+ return ob
+ #XXX what to do here?
+ #raise TypeError('XXX')
+
+ return mapply(ob, request.getPositionalArguments(), request,
+ missing_name=missing_name, context=request)
+
+ def afterCall(self, request, ob):
+ if request.method == 'HEAD':
+ request.response.setResult('')
+
+ def handleException(self, object, request, exc_info, retry_allowed=1):
+ transaction.abort()
+
+ def endRequest(self, request, ob):
+ endInteraction()
+ zope.event.notify(EndRequestEvent(ob, request))
+
+class RequestPublicationFactory(object):
+ zope.interface.implements(IRequestPublicationFactory)
+
+ def canHandle(self, environment):
+ return True
+
+ def __call__(self):
+ return BrowserRequest, BrowserPublication
+
+class BrowserPublisher(ZPublisher.BaseRequest.DefaultPublishTraverse):
+ zope.component.adapts(None, IBrowserRequest)
+ zope.interface.implements(IBrowserPublisher)
+
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+
+ def browserDefault(self, request):
+ # Support for old __browser_default__
+ if hasattr(self.context, '__browser_default__'):
+ return self.context.__browser_default__(request)
+
+ # If there's a default view name set and the view for this
+ # default view exists, we'll use that.
+ default_name = queryDefaultViewName(self.context, request)
+ if (default_name is not None and
+ queryMultiAdapter((self.context, request), name=default_name)
+ is not None):
+ # Adding '@@' here forces this to be a view.
+ # A neater solution might be desireable.
+ return self.context, ('@@' + default_name,)
+
+ # Otherwise it's index_html...
+ if getattr(self.context, 'index_html', None) is not None:
+ return self.context, ('index_html',)
+
+ # ... before __call__.
+ return self.context, ()
+
+
+ # XXX ZPublisher's DefaultPublishTraverse.publishTraverse seems to
+ # do all the right things already.
+ def XXXpublishTraverse(self, request, name):
+ marker = object()
+ subobj = getattr(self.context, name, marker)
+ if subobj is not marker:
+ return subobj
+
+ view = queryMultiAdapter((self.context, request), name=name)
+ if view is not None:
+ return view
+
+ raise NotFound(self.context, name)
Property changes on: Sandbox/philikon/five.publication/trunk/five/publication/publication.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/five.publication/trunk/five/publicationdemo/__init__.py
===================================================================
--- Sandbox/philikon/five.publication/trunk/five/publicationdemo/__init__.py (rev 0)
+++ Sandbox/philikon/five.publication/trunk/five/publicationdemo/__init__.py 2007-08-02 01:22:24 UTC (rev 78542)
@@ -0,0 +1 @@
+# make this directory a package
Property changes on: Sandbox/philikon/five.publication/trunk/five/publicationdemo/__init__.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/five.publication/trunk/five/publicationdemo/application.py
===================================================================
--- Sandbox/philikon/five.publication/trunk/five/publicationdemo/application.py (rev 0)
+++ Sandbox/philikon/five.publication/trunk/five/publicationdemo/application.py 2007-08-02 01:22:24 UTC (rev 78542)
@@ -0,0 +1,32 @@
+import sys, os
+import ZConfig
+import zope.event
+import App.config
+import Zope2.Startup
+from zope.app.wsgi import WSGIPublisherApplication
+from zope.app.appsetup.interfaces import DatabaseOpened, ProcessStarting
+
+def application_factory(global_conf, conf='zope.conf'):
+ # load 'zope.conf' configuration
+ schema_xml = os.path.join(
+ os.path.dirname(Zope2.Startup.__file__), 'zopeschema.xml')
+ schema = ZConfig.loadSchema(schema_xml)
+ options, handlers = ZConfig.loadConfig(
+ schema, os.path.join(global_conf['here'], conf))
+
+ # read global settings from configuration file
+ App.config.setConfiguration(options)
+
+ starter = Zope2.Startup.get_starter()
+ starter.setConfiguration(options)
+
+ starter.setupInitialLogging()
+ starter.setupLocale()
+ starter.setupSecurityOptions()
+ starter.setupInterpreter()
+ Zope2.startup() # open ZODB, initialize Products, etc.
+ starter.setupFinalLogging()
+
+ db = Zope2.DB # XXX ick
+ zope.event.notify(ProcessStarting())
+ return WSGIPublisherApplication(db)
Property changes on: Sandbox/philikon/five.publication/trunk/five/publicationdemo/application.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/five.publication/trunk/setup.py
===================================================================
--- Sandbox/philikon/five.publication/trunk/setup.py (rev 0)
+++ Sandbox/philikon/five.publication/trunk/setup.py 2007-08-02 01:22:24 UTC (rev 78542)
@@ -0,0 +1,48 @@
+##############################################################################
+#
+# Copyright (c) 2007 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.
+#
+##############################################################################
+"""Setup for the five.publisher package
+"""
+import os
+from setuptools import setup, find_packages
+
+setup(name='five.publication',
+ version = '0.1',
+ url='http://cheeseshop.python.org/pypi/five.publication',
+ license='ZPL 2.1',
+ author='Zope Corporation and Contributors',
+ author_email='zope-dev at zope.org',
+ description="Run Zope 2 web applications on the WSGI-enabled object "
+ "object publishing framework of zope.publisher",
+ long_description="",
+
+ packages=find_packages(),
+
+ install_requires=['setuptools',
+ 'Zope2',
+ 'ZODB3', # for the transaction package
+ 'zope.publisher',
+ 'zope.event',
+ 'zope.interface',
+ 'zope.component',
+ 'zope.traversing',
+ 'zope.security',
+ 'zope.app.publication',
+ ],
+ include_package_data=True,
+ zip_safe=False,
+ entry_points = """
+ [paste.app_factory]
+ demo = five.publicationdemo.application:application_factory
+ """
+ )
Property changes on: Sandbox/philikon/five.publication/trunk/setup.py
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list