Zope History
This file contains change information for previous versions of
Zope. Change information for the current release can be found
in the file CHANGES.txt.
Zope 2.4.0
Bugs fixed
- Fixed the documentation of dtml-in orphan attribute. Thanks
to Andreas Jung for pointing out the problem.
- Collector #2380: fixed regular expression in Converters.py
producing trash Control-M characters
- Collector #2379-2381: usage of map() inside PythonScripts
has been broken
- FTP download of large files was been broken. Fixed.
Zope 2.4.0 beta 3
Bugs fixed
- Collector #2219: no default for transaction_info in manage_
undo_transactions caused an error message if the undo button
was clicked without selecting any transactions to undo.
- Fixed breakage in the Zope tutorial cased by recent
Structured Text changes. Also made the tutorial better at
detecting if the tutorial examples have already been
installed or not.
- Fixed bug in bugfix for collector Structured Text doc_href bug.
- Fixed bug in z2.log username logging. Previous revisions
could result in a Zope which restarted unexpectedly.
Thanks to Richard Waid.
- Collector #2357: New attributes of string objects break some
existing dtml-in constructs. Now strings are not placed on
the namespace.
- Collector #2257: Renaming objects in the ZMI depended on
creating a new object and deleting the old object. Some user
code depended on this happening in such a way that the old
object remained around until after the new object was created.
The implementation now supports this. Thanks to stefan13.
- Collector #2256: Handling of broken objects / classes was
broken. Thanks Toby Dickenson!
- Collector #2334: Scripts (Python) that ended with an indented
line failed to compile. Thanks Butch Landingin!
- Collector #2266: Structured Text named link bug fixed.
- Collector #2251: Fixed bug with version numbers in distribution
tab.
- Fixed handling of invalid HTTP requests.
- Fixed several WebDAV locking problems (most related to Windows
webfolders and MS Office 2000)
- Collector # 2375: fixed broken 'Find' tab functionality
- Collector # 2363: The left menu of the ZMI is now updated when
using the import function.
- Collector # 2375: DateTime constructor was unable to handle unicode
strings.
Zope 2.4 beta 2
Bugs fixed
- Some of the import shenanigans in ZService.py were still
trying to load Python 1.5 versions of support dlls for running
as a service under win32 (meaning you effectively couldn't).
- Collector entries 2342 & 2348 - StructuredTextNG fixes.
Table-detection code used multi-arg appends and failed.
doc_href() method did not pick up on URLs with query strings.
Thanks to "datagrok"
- Collector #2335: older products like GadflyDA that did not
use registerClass() were registered but their visibility
flag has not been set to Global. So these products did not
appear in the ZMI.
- Corrected handling of nested scopes in restricted code.
The compiler did not correctly handle nested variables
used in multiple child scopes.
- added WebDAV workaround for MSIE 6 beta unable to handle accented
characters inside the CDATA section for the object properties
- fixed broken WebDAV support for GoLIVE unable to handle some
object properties placed inside CDATA sections
Zope 2.4 beta 1
Features Added
- Added a new lesson to the Zope tutorial which shows how to
insert data into a relational database.
- Made the meta-type in the upper-left corner of ZClass instances'
management interface into a link to the ZClass definition.
- Collector #2316: introduced new environment variable ZSYSLOG_FACILITY
to override the default syslog facility 'user'
Bugs fixed
- Updated the Zope tutorial a bit. Now it references the Zope
Book and the online help's DTML reference. Replaced ZopeTime
examples with DateTime in lesson 9.
- The manage_afterClone hook was called too early for copied objects,
before the cloned object was reattached to its context. This
caused problems with CatalogAware objects reindexing themselves
on copy.
- Fixed a situation that could slow down lazy processing of sorted
search results.
- Product import ordering has been changed. Now, the total set of
all Products are initialized in ascending alphabetical order by
product name, regardless of whether an INSTANCE_HOME exists.
If two products with the same name exist in both SOFTWARE_HOME
and INSTANCE_HOME, the order in which they appear in
Application.Products.__path__ determines whether they
are loaded first or second.
- Collector #2318: html_quote function re-aliased into
DT_Util so as not to break existing user code.
- Corrections to the code that adds interface information to the
meta type registry.
- Collector #2274: fixed typo in Transaction.py. Made Connection.py
a bit more noisy in case of failure
- Collector #2273: fixed bug in STXNG (unable to handle :img:
commands with absolute URLs)
- Collector #2272: fixed problem in Transaction.py (Objects
with id==None could not print themselves)
- fixed Python module import problems causing XML export/import
too be completely broken
- Collector #2270: fixed import problem when $INSTANCE_HOME
was set
- Collector #2269: default script for PythonScript is no longer
compiled during installation
- Updated to zlib 1.1.3.
- fixed parenthesis handling for TextIndex queries
- Collector #2283: PersistentMapping class keys() method now returns
a *copy* of the cached keys list instead of the cached list of
keys itself. This prevents mutation of the list.
- DateTime constructor now accepts ISO 8601 compliant dates
- Collector #2254: added hook for webdav/ftp MKCOL
- Collector #2247: put values of properties into CDATA section to
prevent non XML compliant documents to be sent to a webdav client.
- Collector #2287: fixed missing import of 'render_blocks' in
SendMailTag.py
- Collector #2289: leading \n\r inside messageText broke
mail headers
- Collector #2290: better handling of subject header in Mailhost.py
- Collector #2291: fixed cookie path in Zope Version Control
- Collector #2286: Could not create ZClasses. coptimizations.c
had been corrected erroneously. Fixed.
- It was discovered that the implicit names of certain DTMLMethods
were ambiguous, making security assertions for them unpredictable.
Code was added to detect the condition and correct it in the
Zope core. The affected DTML methods did not pose a security risk.
Instead, most were overprotective.
- "print" with a trailing comma (to avoid a newline) caused
spurious errors in Python Scripts. It turned out the compiler
module was in error. Fixed.
- Collector #2306: Fixed broken glossary of Zope Tutorial
- Collector #2305: A comma inside an optional parameter of the
parameter string broke the ZScriptHTML_tryParams function of
PythonScripts.
- Restored performance of security checks in DTML and
Scripts (Python) by replacing read guards with function calls to
guarded_getattr() and guarded_getitem() of ZopeGuards.
- Restricted the target of PythonScript print statements.
- Python 2.1 reopened the old "AttributeError: __call__" bug.
Checked in a fix that should finally solve it correctly.
Zope 2.4 alpha 1
Features Added
- Zope now requires Python 2.1. See the Zope 2.4 migration
document for details:
http://www.zope.org/Products/Zope/2.4.0/Zope24MigrationGuide.html
- The 'Authenticated' role has been added as one of Zope's
standard roles. A user's possession of this role indicates
that he or she has been authenticated by the Zope security
machinery. It is an implicit role, and cannot be provided to
users within the user management screens or the local roles
management screens. It is provided to all authenticated users.
Another way to think of the 'Authenticated' role is that
it is possessed by all users *except* the Anonymous User.
- A module 'requestprofiler.py' is now part of the utilities
directory. When run from the command line, this utility
allows you to generate profiling information from Zope's
detailed request log (the "-M" log).
- Restricted code can import AccessControl.getSecurityManager,
and use 'validate', 'validateValue', 'checkPermission',
'getUser', and 'calledByExecutable'.
- Zope's WebDAV support now includes exclusive write locking.
- Data.fs.in index_html now shows zope_quick_start instead
of old, inaccurate content.
- Changed index_html, standard_html_header, standard_html_footer,
and standard_error_message in Data.fs.in to use "new" DTML syntax
(as opposed to SSI-style syntax).
- Added check for 'FORCE_PRODUCT_LOAD' environ var to bits which
try to detect whether we're a ZEO client or not in order not to
skip product-loading tasks. This has the consequence that a ZEO
client with the "ZEO_CLIENT" env var set will cause product
loading tasks to occur iff his "FORCE_PRODUCT_LOAD" environment
var is set as well.
- Further optimizations in the lexicon of the Catalog as well
as the final merge code integration for Text indexes. This
should reduce the bloat when things are reindexed.
- StructuredText: old StructuredText replaces by StructuredTextNG.
Added support for locale settings. Several bugfixes and code
cleanup.
- Image and File objects now support the HTTP Range and If-Range
headers, enabeling partial downloads of such objects. This can be
used by clients to restart a broken download. Downloads of these
objects through FTP can also be restarted.
- Update of Medusa tree to latest version
- If an INSTANCE_HOME is defined and has a 'lib/python'
subdirectory, it will be added to the front of the Python path.
- DTML-In and DTML-Tree now have optional "prefix" attributes
that can be used to make friendlier tag variable names.
- Added product reloading capability, formerly provided by
the "Refresh" product. This enables developers to see the
effect of changes to their products without restarting Zope.
- Added new 'sequence' module for underscore namespace to provide
extended sorting functionality for sequence (implements
ExtendedDTMLSorting proposal)
- Fixed a long-standing bug in FileStorage that made it so
versions were only partially committed.
- Rewrote the complete indexing infrastructure according
to the DropinIndex proposal
(see lib/python/Products/PlugginIndexes/README.txt for
detailed informations).
- Adopted ZCatalog to new indexing infrastructure.
- added text() method to HTTPRequest object to provide a plain
text representation of the request (Collector #2264)
Bugs Fixed
- TextIndexes which called methods expecting an argument failed
with a TypeError. This was fixed by extending an exception
handler.
- A security issue having to do with setting permission mappings
on ZClass methods was fixed (this supersedes Hotfix-2001-05-01)
- Automatic reloading of Help topics while running in debug mode
was fixed.
- Fixed problem adding propertynames with spaces (Collector #2206)
- Plugged a memory leak in extensions. There are often circular
references in code generated by Python's "exec" statement but
with a small change extensions now break those references.
- Hardened ZMI contents view against subobjects w/ flaky
'get_size' (Collector #1900).
- Fixed OFS.CopySupport's _verifyObjectPaste to utilize the
permission stored in the metatype registry, if available
(Collector #1975)
- Fixed a long-standing bug in FileStorage that made it so
versions were only partially committed.
Zope 2.3.2
Bugs accidentally fixed :)
- Fixed missing html_quote attribute inside some DTML methods
(Collector #2170)
- Fixed logging output to the compatible with the Common Logfile
Format specs (Collector #2188)
Zope 2.3.2 beta 2
Bugs fixed
- Fixed Catalog "object does not support item deletion" bug.
Zope 2.3.2 beta 1
Bugs Fixed
- Catalog field index bug fixed.
- Fixed several places where filesystem paths were assembled
in a non-portable way.
- Fixed some places in SimpleItem that assumed that the object
was an Acquirer.
- Fixed layout problem in StandardCacheManagers/dtml/propsRCM.dtml
(Collector #2152)
- Fix bug in AcceleratedHTTPCacheManager. Sended HTTP headers
were depending on locale settings (Collector #2142)
- GoLIVE is unable to handle some empty properties send from
the Zope's WebDAV server. (getlastmodified is no more send
when they are not available for an object)
(Collector #2150)
- added globbing support for the FTP server
- added support for fetching recursive listings from the FTP server
(needed by ncftp)
- fixed handling of broken objects in the WebDAV server
- An ambiguous timezone alias (CDT) was removed from DateTime.
- It was not possible to pass 'class=...' to the tag() method
of Image objects because 'class' is a Python reserved word.
Image.tag() now accepts an optional 'css_class' argument
that is turned into a 'class' attribute on the resulting tag
to work around this.
- Fixed various places where the right tabs were not highlighted
after form submissions.
- The code that produces the data for the security settings
form included a misleading default ('Manager') that could
make it looks as though Manager had a permission in a
subobject when that permission had actually been denied
in a higher level object. This only affected the form
generated, not the actual security settings in effect.
- The textarea resizing buttons for DTML objects and scripts
were not preserving work done in the text area during the
resize.
- Some changes were made to the implemenation of User.allowed(),
which will make it less expensive to do local role matching
and also resolves an issue noted in the
UserProgrammableSecurityObjects proposal on dev.zope.org.
- A problem in the bytecode munging done by Python scripts
that could cause a core dump was fixed.
Zope 2.3.1
Bugs Fixed
- Fixed catalog length error bug.
- Fixed textindex search queries with parenthesis (which haven't
worked since at least 2.2.4).
- Added logic to use the value of 'textindex_operator' as
passed in the request to determine which query operator to
use (and, near, andnot, or). Valid values to pass in to
textindex_operator are 'and', 'or', 'near', and 'andnot'
(capitalization is ignored). This is a near-term workaround
for the inability to specify a default text index query
operator on a per-index basis. It provides the ability to
override the currently module-defined default 'Or' operator
for textindexes on a per-search basis.
An example of the utility of textindex_operator used with a
ZCatalog instance:
zcatalog.searchResults(atextindex='foo', textindex_operator='and')
- The import machinery did not correctly find import files located
in SOFTWARE_HOME/import if SOFTWARE_HOME / INSTANCE_HOME setups
were in use.
- The default view for "broken" objects was broken :)
- The FTP server now provides for more informative error handling
through a setMessage() method on the ftp response object (thanks
to Richard Jones).
- The title of HTML help files is now parsed out and used by the
help engine (thanks to Richard Jones).
- Objects wrapped with Explicit acquisition wrappers were not
correctly handling the __nonzero__ protocol (as well as other
numeric protocols).
- A bug in the sendmail tag that could cause "len of unsized object"
errors has been fixed.
- Some bits of DateTime parsing were not raising the same errors
claimed in the documentation.
- Handling of HTTP "Destination" headers for WebDAV MOVE and COPY
was not tolerant of complete URLs (including scheme, server, etc.)
- Keyword indexes generated spurious error logs when objects
without keywords were added.
- Fixed a memory error in the new BTree buckets that surfaced
during testing on ia64.
- Fixed a multi-arg append() call in the ClassicDocumentClass
in StructuredText.
Zope 2.3.1 beta 3
Bugs Fixed
- ImageFile objects were not using os.path.join to build
the local path to an image file, which caused oddities
on win32.
- Some missing casts in Splitter.c prevented the splitter
from properly working with some international characters.
- Fixed documentation of dtml-var tag. Improved discussion of
entity syntax and fmt and url attributes.
- Fixed manage_convertBTrees method of ZCatalogs (this method was
failing due to a missed copying of the length value, preventing
Catalogs from showing their "old" items once converted).
- Changed the presentation of last-modified dates in ZMI listings
to an ISO format that is a bit shorter and a better common format.
- Added a patch to load_site.py to handle entity references.
- Added a patch to load_site.py to use the new dtml syntax when
adding header and footer lines.
- Handling of the __nonzero__ protocol by Acquisition wrappers
was fixed.
Zope 2.3.1 beta 2
Bugs Fixed
- Fixed formatting bugs in the DTML reference. Also added a
note to the dtml-tree tag reference page explaining the
leaves attribute better.
- Fixed broken Image and File downloads when using an Apache server
set up to cache such data. In certain circumstances a
content-length of 0 would be sent, which made Internet Explorer
not read any more than that, resulting in broken images and
downloads.
- Fixed a doc string display bug in API help topics. Also
slightly improved the display of help topics which include
more than one class.
- Fixed inaccuracies in 'dtml-in' DTML reference help
topic. (Collector #1972)
- Merged a bug fix that was missed in the logging call when
an object that is not in a Text Index tries to unindex itself.
- Removed a duplicate list item from the copyright screen.
- Fixed a bug in the docstring of DemoStorage.py
- Added ZPL to ZPublisher/BeforeTraverse.py
- The tabs behaved oddly in the "database management" part of
the control panel.
- The icon for Python script objects has been updated. Thanks
to Chris Withers for sending it in.
- Added an entry to doc/FAQ.txt about the "checksum error" that
some vendor-supplied tar implementations (Solaris) produce due
to long pathnames in an archive produced by GNU tar.
- Using the 'scale' argument to the 'tag' method of an Image object
could produce invalid height and width values in the resulting
HTML tag (floating point values).
- The tab corner .gifs for inactive tabs were not transparent in
places where they should have been.
- Corrected mistakes in the logic that retries the request when
a ConflictError occurs. The behavior was a little erratic.
- The problems ('attribute error: commit_sub') that some people
were having with certain kinds of objects (like database
connections) not playing correctly with subtransactions have
been fixed.
- Applied changes from Hotfix_2001-02-23. Some ZClass methods
weren't protected properly and the ObjectManager,
PropertyManager, and PropertySheets classes were returning
mutable objects that could be exploited by restricted code.
- A malformed html option tag made the add list broken for
Mozilla.
- The permission declaration for 'manage_main' on ZSQLMethod
objects was missing, making editing effectively only available
to the Manager role (the Change Database Methods permission had
no effect).
- A missing '/' at the end of the contents form action url caused
some clients to behave strangely.
- A long-standing problem with traversal of object names with spaces
in them from WebDAV tools has been resolved. Part of the DAV
machinery was in some cases double-url-quoting DAV:href values.
- A long-languishing patch from Dieter Maurer to fix batching info
in dtml-in has been applied.
- z2.py failed to correctly pass an address:port specification for
the ZSYSLOG_SERVER environment variable to the medusa syslog logger.
- The value passed for the ZSYSLOG environment variable was not being
used in the same way by logging machinery in ZServer and the Zope
core. The file in doc/LOGGING.txt has been updated to reflect that
the value passed for ZSYSLOG should be the path to the UNIX domain
socket to log to (usually '/dev/log').
- Using the strftime method of DateTime objects (often via the
fmt attribute of a dtml tag) produced incorrect results for
DateTime objects outside of the range of the native C strftime
implementation. A change has been made so that an exception is
raised in those situations rather than silently return the
wrong answer.
- Corrected the aq_inContextOf() method so it always follows
containment wrappers.
- The headers attribute of FileUpload objects did not have any
security assertions, which meant that it could not be accessed
from DTML as advertised.
- A number of Collector patches to fix DateTime issues (mostly
regarding timezone handling) were applied.
- Key errors were returned from catalog searches due to bugs
in unindexing objects.
- Objects that should have been included in search results
were excluded do to bugs in indexing objects.
- The database grew too fast when objects were routinely
indexed one at a time by the catalog. This was due to
inefficiencies in the underlying BTree implementation that
caused too many objects to be changed when indexing
incrementally. In addition, the set implementation, used for
keeping track of documents in field indexes, when the number
of documents per key was large, caused large database updates
when a document was added or removed, because the entire set
was stored in a single database record.
A new BTree and set implementation has been
provided to address these problems.
- The catalog is the most common source of conflict errors due
to a number of "hot spots" in the implementation and due to
the large number of objects that are typically updated when
indexing. The hot spots have now been removed and the
number of objects modified when indexing has been
dramatically reduced. In addition, conflicts detected during
transaction commit can now usually be resolved using new
conflict-resolution protocols and conflict-resolution
support added to the catalog. These changes will not avoid
all conflicts, but will reduce conflicts significantly in
many cases.
Specific information on how to update existing Catalogs to take
advantage of the data structures available can be found at:
http://www.zope.org/Members/mcdonc/HowTos/UpgradeToNewCatalog
Zope 2.3.1 beta 1
Bugs Fixed
- PUT on NullResource is now a public method that checks
whether the user can create the type of object returned by
a PUT_Factory.
- dtml-in sorting using unhashable types (like lists) has been
fixed.
- A new environment variable "FORCE_PRODUCT_LOAD" when set on
ZEO clients (clients which also define the "ZEO_CLIENT" env
var) causes product loading to be "forced" by that ZEO
client. Formerly, if all ZEO clients had the "ZEO_CLIENT"
environment variable set, it was impossible to force
a product load without undefining the "ZEO_CLIENT" env var
on one of the ZEO clients. Now, if one of the ZEO clients has
both the ZEO_CLIENT env var and the FORCE_PRODUCT_LOAD env
var defined, that client will push products into the ZODB. It
is advisable to only set FORCE_PRODUCT_LOAD on one ZEO client
if it's set at all.
- A typo in CopySupport caused the wrong http error to be
raised in manage_renameObjects (500 Server Error instead
of Bad Request).
- A bit of PermissionMapping logic was calling manage_access
with too many arguments, causing an error when trying to
make changes on the Security tab of ZClasses.
- The Catalog no longers throws an AttributeError if you
pass it a 'sort_on' parameter that isn't useful. Instead,
it throws a ValueError with an instructional string.
- An error in the edit form for Permission objects made it
impossible to edit Permission objects in Products through
the Web.
- The script source in Python scripts was not being html
quoted on the Web edit form.
- Fixed a bug in Mount.py that made it difficult to see the
reason connections failed.
- Fixed a bug which made it impossible to cut and paste ZCatalog
instances.
- Processes spawned from a Zope process could have a bad effect
if one tried to kill the Zope process while a spawned process
was still active. Because the spawned process had inherited
the listening sockets of the servers across the fork(), it
was not possible to restart the Zope instance until the spawned
process had died and release the server sockets :(
- Added a "tempfile.py" module to lib/python. This tempfile module
is r1.27 from the Python CVS MAIN branch. It fixes two race
condition bugs that could appear under heavy load. This module
will be used by Zope instead of the tempfile.py that ships with
the Python source or with a Zope binary distribution. It is
probably unnecessary under Python 2.0+, but won't hurt.
- Removed lib/python/App/manage.dtml, which wasn't removed when
dtml files were moved to a separate directory.
- Fixed two mistakes in the RAM cache cleanup code.
- Added code to handle a failed BeforeTraverse hook gracefully.
- Added help system docs for Script (Python) instance management
screens.
- Checked in Stephen Purcell's PyUnit 1.3, replacing PyUnit 1.2.
- Hardened ZMI contents view against subobjects w/ flaky
'get_size' (Collector #1900).
- Corrected a bug that could leave a cacheable object associated
with the wrong cache manager after switching cache managers.
- Changed the html title tag in the manage frameset to use BASE0
instead of SERVER_NAME, providing more useful info for virtual
hosted sites (patch from Chris Withers).
- The highlighted active tab wasn't correct for some security
views.
- Changed undo error message wording in FileStorage, DemoStorage,
and POSException. Confusing error reports that claim a
transaction could not be undone because the transaction was
"undoable" now claim that the transaction was "non-undoable".
- Some conflict errors failed to properly quote object ids,
making the ids unreadable and introducting binary text into
output.
- Changed Product init/list code to accept all of "VERSION.TXT",
"VERSION.txt", and "version.txt" as the version.txt file for
the Product. Additionally accept any of "README.txt",
"README.TXT", or "readme.txt" as the readme filename.
- When the root index_html was missing, an inappropriate error
was displayed to a visitor when viewing an object that didn't
have its own index_html. (Collector 1954, thanks to Chris
Withers for the bugreport).
- A bug prevented unchecking the "cache anonymous connections
only" checkbox for Accelerated HTTP Cache Managers.
- Some code that tried to workaround a DAV client bug dealing
with ports in Host headers caused problems for virtual hosting
setups. That code has been disabled until we decide that we
care enough about the buggy client to work around it in a
better way.
- The isCurrent(Month|Day|Hour|Minute) methods of DateTime objects
returned incorrect answers. Thanks to Casey Duncan for the patch.
- The "help" links did not work if javascript was disabled in the
client.
- ZCatalog getobject now uses unrestrictedTraverse during
getobject instead of restrictedTraverse. This emulates Zope
2.2 behavior.
- A bug in the HelpTopic implementation for STX help topics caused
them to be inaccessible unless Anonymous Users had the View
permission.
- Structured Text did not correctly recognize CRLFs generated by
windows editors as paragraph dividers.
- A bit of code that ran after an import where ZClass objects
were added was removed. It was designed to fixup the ZClass
registry after import to resolve ZClass dependencies that
could get broken if a system were moved in separate imports.
It turned out to be expensive under ZEO, and the benefit is
not that compelling (if a failed dependency does get
introduced, it will be spotted at the next startup).
- The month name recorded in Z2.log was affected by the current
locale setting, which caused problems for various logfile
analysis tools.
- Product object in the control panel had a useless View tab
by an accident of inheritance.
- Manual restarts and shutdowns weren't logged.
- Unix: If processes were restarted too frequently, the daemon
process incorrectly inferer a startup problem and shut
itself down.
- Unix: On restart, the watcher daemon restarted as well, causing
the watchers process id to change.
- The method for enabling modules for use with Python scripts was
not documented and a bit harder than it needed to be. A helper
function has been added in a Utility.py in the PythonScripts
product to make this easier and the process is documented in
the README.txt in the PythonScripts package.
- Fixed OFS.CopySupport's _verifyObjectPaste to utilize the
permission stored in the metatype registry, if available
(Collector #1975).
- In certain situations using restrictedTraverse failed with the
wrong error if called on the application object with the name
of a nonexistent object.
- Subtransactions couldn't be used if some data managers
didn't support subtransactions. This was especially painful
when using RDBMS user authentication in combination with
large image or file uploads or catalog rebuilding, which use
subtransactions.
Now allow subtransaction commit (but not abort) even when some
participating data managers don't understand subtransactions.
New Features
- The API for cataloging objects changed slightly:
o If the object being cataloged has a 'getPhysicalPath'
method, as Zope objects typically (always) do, then it is
no longer necessary to pass a unique ID to the catalog
when catalling the 'catalog_object' method. It is
recommended to not pass a unique id and let the catalog
figure out the unique id on it's own.
o If a unique id is passed to the catalog 'catalog_object'
method, it **must** be a string.
Zope 2.3.0
Bugs Fixed
- The authentication machinery now correctly returns a 400
(Bad Request) if an invalid authentication token (bad
base64 encoding) is sent by a client.
- ZClasses with very minimal base classes could end up without
a '_setId' method, which createInObjectManager expects.
- Fixed a bug that caused the ExtensionClass __call_method__
hook to fail when used with unbound C methods.
- Fixed a bug in the management interface which caused
the "Paste" button to not show up after a copy or cut
operation on the first showing of manage_main.
- Final lexicon optimizations that provide additional
performance over previous releases. In addition, the number
of objects that have to be updated is frequently reduced.
- Merge code for Catalog Text indexes has been integrated.
This will now merge the changes in, rather than replacing
them. This should reduce the number of objects that has
to be updated. In addition, when nothing has changed, the
object's indexes won't be touched, saving enormous amounts
of space for some applications.
- Flow of the Catalog management screens cleaned up so that
pages are refreshed correctly. Buttons on the Advanced
tab refresh to the Advanced tab now.
- Further management interface cleanup of the Lexicon to
bring in line with the normal ZMI.
Zope 2.3.0 beta 3
Bugs Fixed
- The import / export button did not show up if a folder was
empty.
- A problem in acquisition wrapping of users obtained though
the SecurityManager caused certain ownership operations to
fail (this manifested itself as a report about broken DAV
MOVE operations).
- The Zope management screens no longer try to set a default
charset with the content-type.
- Certain security related operations were failing due to
argument mismatch errors (too many arguments).
- Passing unicode data to html_quote could cause problems
since html_quote was trying to screen out two characters
that many browsers are willing to accept as html special
characters (to prevent "cross-site scripting" attacks).
This has been moved out of html_quote and into the RESPONSE
object, where the chars will be quoted only if no charset
is defined for the content-type or the charset is an alias
for Latin-1.
- Rename via FTP was not supported.
- Changed index_html, standard_html_header, standard_html_footer,
and standard_error_message in Data.fs.in to use "new" DTML syntax
(as opposed to SSI-style syntax).
- meta_type of all DTML Methods in Data.fs.in object manager
"_objects" lists is now "DTML Method". It had been "Document",
which caused inaccurate superValues results if 'spec'
was used.
- Make ZClasses navigable to FTP/WebDAV; implement 'PUT_factory'
hook to create PythonScripts (for MIMEtype 'text/x-python')
and DTMLMethods (for other 'text' MIMEtypes) (Collector #998).
- Calling manage_addProperty with a list value and a type of 'lines'
caused a string representation of the list to be stored.
- Submitting the proxy roles form without selecting any roles to
be used as proxy roles caused objects with proxy role support to
silently become unexecutable (have effectively empty proxy roles)
rather than raising an error. The proxy role api now requires that
at least one role be passed in or an error will be raised.
- Mechanisms in the underbelly of the Catalog and Globbing
Lexicon (which is the default for all new Catalogs) has been
overhauled given substantial performance increases. On
simple queries, performance should double (or more) in many
situations, whereas with globbed queries it may increase by
substantially more.
- A method in SQLMethod objects had been removed but the reference
to it in __ac_permissions__ had not, which caused failure on
attempting to set permissions on SQLMethods.
- A bit of exception handing in the dtml-in tag implementation was
too general and could hide subsequent rendering exceptions (thanks
to Richard Jones for the patch).
- Cacheability was not fully enabled for DTML Documents.
Zope 2.3.0 beta 2
Bugs Fixed
- Changed management style sheet to explicitly set the http
content-type to avoid a rendering problem on resize in
NS browsers.
- Data.fs.in index_html now shows zope_quick_start instead
of old, inaccurate content.
- Changed index_html, standard_html_header, standard_html_footer,
and standard_error_message in Data.fs.in to use "new" DTML syntax
(as opposed to SSI-style syntax).
- The way that the default management tree view imposed sorting
in its tree tag dtml made it hard for custom objects to provide
a sorting that would be more appropriate for the custom object.
The management tree view now preserves whatever ordering is
returned from tpValues. The default tpValues implementation in
the ObjectManager class sorts by id by default.
- Disallowed object IDs that start with "aq_".
- Changed the default support for "domain authentication mode"
in UserFolder to be disabled by default. Domain auth mode
was implemented for a very specific case long ago and causes
a lot of overhead for anonymous accesses that are needless
for the 99% case. People who actually want domain auth mode
turned on may call a new 'setDomainAuthenticationMode' method
to enable it if they wish.
- Changed the implementation of emergency_user to be backward
compatible with the expectations of third-party user folders.
Third party user folders should now work with Zope 2.3 without
modification.
- A bug in the search interface generation for ZCatalogs was
fixed.
- An integrity check for the global product registry has been
added at startup to mitigate registry consistency problems
caused by things like missing base classes that cannot be
detected by Zope (like removing a Product that another
Product depends upon). If a problem is detected, the global
registry is automatically rebuilt and the action is logged.
- A bug in the rendering of 'record' type form variables when
rendering a request object was fixed.
- A bug that cause setting of proxy roles for Python Scripts
to fail was fixed.
Zope 2.3.0 beta 1
Features Added
- Added a hook that allows user folders to provide a logout
action.
- Added a browser preferences screen to allow people to
tweak the management UI to their liking. For the folks who
complained that they didn't like the new top frame, they
can (among other things) turn it off from the browser
preferences screen.
- Added Michel's new QuickStart material. I haven't quite
decided whether the old QuickStart should go away or
stay around as a source of examples.
- The logout function has been implemented in a fairly minimal
way. We may try to make this nicer by final if we get time.
- The ZCatalog interface is now cleaned up and matches the new
interface look and feel better. In addition some logical
reorganization was made to move things onto an Advanced tab.
- Result sets from the Catalog are now much Lazier, and will
do concatenation with eachother in a lazy fashion. This was
suggested by Casey Duncan in Collector #1712.
Bugs Fixed
- Added a deprecated alias to UnrestrictedUser, Super, for use
by user folder products that depend on the old class name.
- Fixed path for management interface files used for
CatalogPathAwareness and Aqueduct.
- Fixed a NameError in HTTPRequest.
- Made manage_page_style.css correctly available to all.
- ZCatalog objects now show up in the Add List in the same
naming convention that was used for all other Z* objects.
This does *not* affect the meta_type that is actually used
for the object itself.
- (Collector #1835, 1820, 1826) Eliminated errors in both
Field and Keyword indexes where old keys might show up in
'uniqueValuesFor()' because of the way the data structures
were kept around.
- (Collector #1823)Eliminated situation where if the Catalog
did not have a metadata record for 'meta_type' the Cataloged
Objects view would be incorrect and list everything as a
'ZCatalog'. Now it simply lists it as 'Unknown'.
- (Collector #1844) On the brains returned from ZCatalog
queries, 'getObject()' now tries to resolve URLs as well as
paths. This should catch more cases.
- Tags generated for ImageFile objects attempted to use
title_or_id(), which is not defined for those objects.
- Mounting now fails gracefully in when getId() is not
available in the mounted object.
Zope 2.3.0 alpha 2
Features Added
- The install machinery for source release has been modified
to allow Zope to build out of the box for Python 2.0. Note
however, that Python 2.0 is still not officially supported.
You may see quite a few warnings from the extension builder
when compiling for Python 2.
- A new module, AccessControl.Permissions has been added to
make it easier to use the new security assertion spelling.
The new module provides consistent symbolic constants for
the standard Zope permissions.
- Cache manager support added. This allows site administrators
to ease the burden on their site in a very configurable
way. It also provides an API for developers to follow when
experimenting with caching strategies.
- The ZPublisher 'method' form variable type has been
deprecated in favor of 'action'. The behavior is the
same, only the official (and documented in the Zope
book) name has changed. The 'method' name is still
supported for backward compatibility.
- The 'objectIds' and 'objectValues' methods of ObjectManager
derived objects are no longer directly Web-accessible. This
is a topic that has come up over and over on the lists. Some
(xml-rpc, mostly) users may depend on this behavior - applications
that need access to this information remotely should be modified
so that a Python Script or DTML Method can explicitly pass
the data.
- The Image.tag() and ZopeAttributionButton methods now return an
image tag that is XHTML compatible; a space and a slash have been
added.
- SQLMethods can now be edited via FTP and WebDAV tools. Thanks to
Anthony Baxter for his FTP support patches.
- The Catalog has been slightly overhauled to manage object
paths instead of URLs in its tables. This should not cause
any backward compatability concern, but everyone upgrading
should read the web pages on the zope.org site at:
http://dev.zope.org/Wikis/DevSite/Projects/ZCatalogVirtualHostFix/UpgradeFAQ
this will provide information about how to upgrade and new
features on the result sets, like getObject and
getPath. These are very important.
- SiteAccess 2.0 has been added, to enable virtual hosting.
- The StandardCacheManagers product has been added as a primary
product, making it easier to get started with caching.
- The class DTMLFile has been added alongside of HTMLFile.
It supports name bindings, ignores positional parameters,
and puts the container on top of the namespace by default.
Most HTMLFiles should work the same (or more securely) if
converted to a DTMLFile. Most management interface methods
should be converted by the final release of 2.3.
- Added a variable called PUBLISHED to REQUEST. From now on,
this variable should be used instead of PARENTS for user
validation.
- The inituser file is now read even when one user has been
created. This provides a way to reset the password after
a new user installs Zope but ignores the generated password.
- ZCatalogs have a reduced number of management interface tabs.
- ZCatalog keyword and field indexes have been modified to use
a merge strategy when existing indexes are updated. When an
existing object is indexed, the contents of field and
keyword indexes are merged with the changes detected between
the existing contents of the index and the new content.
- CatalogPathAware class added. This will eventually replace
CatalogAware.
- The ManagementInterfaceQuickFix project was merged in. The
Zope management interface has been tweaked in various ways
to improve productivity and consistency and is now at least
slightly less ugly :)
Bugs Fixed
- A misspelled function name which prevented the addition of
properties was corrected.
- Caused PropertySheets to restrict IDs the same way
ObjectManager does.
- (Collector #1586) Fixed situation where the Catalog would
attempt to loop over a bucket as if it were a list, which
won't work. This was reported by Steve Alexander with a
patch.
- Corrected local role computation (Hotfix 2000-12-15)
- The basic user folder implementation in User.py was changed
to use the Zope security policy machinery. see
http://dev.zope.org/Wikis/DevSite/Proposals/
ChangeUserFoldersToUseSecurityPolicyAPI for details.
- Trying to cut or copy with no items selected now returns a
nicer error message.
- A roles keyword argument was added to ZopeSecurityPolicy.validate
to enable callers to pass in roles as opposed to allowing the
machinery to figure it out for itself.
- Some product context initialization related to setting roles
was updated.
Zope 2.3.0 alpha 1
Features Added
- Python Scripts are now part of the Zope core. Big whopping
kudos to Evan Simpson for all of the work he has put into
this! Having Python Scripts in the core will allow people
to much more easily separate logic and presentation (and
get that logic out of DTML!) More information and prototype
documentation for Python Scripts can be found in the
dev.zope.org project:
http://dev.zope.org/Wikis/DevSite/Projects/PythonMethods
- Added the __replaceable__ property support to ObjectManager.
This is currently documented only in the Wiki.
- Added unit tests for the DateTime module.
- Added new BASEPATHn and URLPATHn variables in the REQUEST
object, and changed Zope core DTML files to use BASEPATH1
instead of SCRIPT_NAME.
- Added new getId() method to SimpleItem.Item. This should
now be used instead of referencing 'object.id' directly,
as it is guaranteed to always be a method and to always
return the right thing regardless of how the id of the
object is stored internally.
- Improved Ownership controls. Now you simply choose whether
or not to take ownership of sub-objects when taking
ownership. There is no need to control implicit/explicit
ownership.
- Changed the Zope installation procedure so it is only
necessary to create one user account and that user is
stored in the ZODB. The user created at startup now is
simply a normal intial "Manager", not the "superuser".
It is no longer necessary to login, create an initial
manager, logout and log back in! Woohoo!
- Implemented the "emergency user" concept, which is the new
name for what was called the superuser. The emergency user
doesnt even exist now until you explicitly create it.
- Added new "WebDAV source view" HTTP handler, enabled by new
'-W' (note uppercase) switch to z2.py. This handler is *not*
enabled by default.
- Implemented "hookable PUT creation" (allows containers to
override webdav.NullResource's guess at the type of object
to create when PUT is done to an unknown ID).
- Added testrunner.py to the utilities directory. The testrunner
is a basic utility for running PyUnit based unit tests. It can
be used to run all tests found in the Zope tree, all test suites
in a given directory or in specific files. The testrunner will
be used to ensure that all checked in tests pass before releases
are made. For more information, see the docstring of the actual
testrunner.py module.
- The Interface scarecrow package has been checked in - more work
will likely be done on it before it goes into wide use. See
Michel's "Zope Interfaces" project on dev.zope.org for details:
http://www.zope.org/Wikis/Interfaces/FrontPage
- PyUnit has been checked into the core. Along with the testrunner,
this provides enough infrastructure for us to incrementally begin
accumulating (and running!) test suites for various parts of the
Zope core.
- The new security assertion support has been checked in. For
more information and an updated version of the "Zope security
for developers" guide see the project on dev.zope.org:
http://dev.zope.org/Wikis/DevSite/Projects/DeclarativeSecurity
Bugs Fixed
- Removed some cruft in OFS/content_types.py (an old data
structure was being constructed but was going unused in
favor of a newer structure used in conjunction with the
mimetypes module).
- (Collector #1650)Where the underlying object does not define
its own '__cmp__()', comparisons of acquisition-wrapped
objects fall back to comparing the identities *of the
wrappers* . Fixed to unwrap the object (both, if needed)
before comparing identities.
- (Collector #1687 Products which register base classes
for ZClasses typically defer creating them until product
registration; the derived ZClass needs them to be available
immediately after import. Deprecated
'ProductContext.registerZClass' and
'ProductContext.registerBaseClass' in favor of a new function,
'ZClasses.createZClassForBase' (because none of the machinery
needed a ProductContext instance anyway).
- (Collector #1355) Fixed overlapping HTTP POST requests in
ZServer which could have been corrupted. Thanks to Jeff
Ragsdale.
- Undid a bug fix that caused the DateTime unit tests to fail.
- Removed the requirement that an "access" file exist.
"access" is now only needed to create an emergency user
account.
- Disabled the monitor port by default because, initially,
there is no emergency user, and thus no password that
can be used to protect the port.
- Secured the hole that was patched by Hotfix_2000-12-08.
- Disallowed object IDs that end with two underscores.
- Caused PropertyManager to restrict id's the same way
ObjectManager does.
Zope 2.2.5
Bugs fixed
- Corrected a mounted database connection leak. The reference
to the sub-connection was occasionally being garbage collected,
meaning the sub-connection never get closed and Zope eventually
used up all connections from the pool.
Zope 2.2.5 beta 1
Bugs fixed
- Secured the hole that was patched by Hotfix_2000-12-08.
- A bug in ZServer caused concurrent POST requests to overwrite
each others incoming data, leading to 'AttributeError: data'
errors.
- The ZSQLMethods code to handle query caching had a bug
that could cause a KeyError in certain cicumstances.
- A dumb algorithm in the basic user folder interface caused a
reverse dns lookup to be done for each user in a user folder
if domain-based matching was being used. This could cause a
real lag for sites with large user folders doing domain
matching.
- The "View" management page for Image objects generated an
incorrect link to the image object (though it often happened
to work thanks to acquisition).
- Import only looked for files in INSTANCE_HOME/import. Now,
if the file is not found there it looks in SOFTWARE_HOME/import.
- Fixed situation where the Catalog would attempt to loop over
a bucket as if it were a list, which won't work. This was
reported by Steve Alexander with a patch (#1586).
- It was not possible to access the 'manage_access' screen for
a custom propertysheet on an instance. Thanks to Steve
Alexander for this one as well.
- The checkboxes on the "Add ZClass" form were being reset after
every base class addition.
- A WebDAV support bug that caused authentication to fail for
MOVE and COPY (and possibly other) requests was fixed.
- The WebDAV support was setting an extra HTTP 'Connection'
header when Zope was running under ZSever, because ZServer
didn't handle that correctly back when the DAV code was written.
- Several other DAV-related fixes were made to address bugs
discovered in the course of using Zope with several DAV
clients. The DAV support now generates a faux creation
date property to make Adobe GoLive happy.
- A bug in state diffing in the Tree tag when a tuple was passed
in instead of a list was fixed.
- Corrected local role computation (Hotfix 2000-12-15).
- Fixed protection of the update_data method of File / Image
objects (Hotfix 2000-12-18).
- The content_type argument passed to manage_addImage or
manage_addFile was ineffective.
- The Image.tag() and ZopeAttributionButton methods now return an
image tag that is XHTML compatible; a space and a slash have been
added.
- Long running processes spawned via os.system() from Zope code
could hang the request that spawned them due to inheritance of
open file descriptors. Thanks to Dieter Maurer for a fix for
ZServer to set the close-on-exec flag on ZServer sockets.
- Some of ZServer's medusa underpinnings were outputting various
'WARNING' messages that should have been ignorable and caused
confusion for new Zope users. The startup messages have been
fixed to avoid spewing things that scare newbies unnecessarily.
- SQLAlias objects were leaking when a database column was
accessed via an aliased name. This was tracked down to a
subtle bug in ExtensionClass.
- A packing bug could, on rare occasions, cause corruption of
transactions committed while the database was being
packed. This corruption wouldn't show up until the database
was scanned, either on startup without an index, or on
subsequent packs. The actual data records were correct in
most cases, but contained invalid file pointers to their
transaction or other record data. The problem could be
corrected using the FileStorage recovery tool, fsrecover.py.
Zope 2.2.4
Bugs fixed
- There was a mistyped permission in HelpSys.py ("Add Documents,
Files, and Images" should be "Add Documents, Images, and Files").
- The caching code added for ImageFile objects had a dumb cut-n-paste
error (fixed for 2.2.4 final). ImageFile caching was verified
after the fix with the Cacheability Engine at:
http://www.web-caching.com/cacheability.html
- Fixed and tested a problem in the way that headers are extracted
from the message text in the dtml-sendmail tag. Windows text
editors could introduce ^M characters that threw off the rfc822
message parser if they were not cleaned off before parsing.
Zope 2.2.4 beta 1
Bugs fixed
- Zope 2.2.4 includes all of the 2.2.3 changes plus a fix
for a bug introduced while fixing another bug that caused
acquisition of permissions to fail (whew!).
- Fixed a bug in computation of object roles (from
permissions) that could cause roles to come from
non-containment context.
- ImageFile objects (e.g. icons in the mgmt interface) did
not set or recognize HTTP caching headers, which caused
some browsers to never cache them.
- The function rfc1123_date was mis-formatting http dates.
- The registerHelp() method of ProductContext objects would
blow up if a product did not have a help directory.
Zope 2.2.3
Bugs fixed
- Resolved known condition in the Catalog where objects are
not guaranteed to be unindexed before indexing happens
again. Now objects are guaranteed to be unindexed correctly
first. This should resolve all outstanding KeyErrors with
Catalog, although currently broken Catalogs will require a
reindex to resolve them.
- Fixed a race condition and a possible memory leak in mounted
databases.
- Added the DTML Reference to the online help system.
- Applied Toby Dickenson's patch that fixes aq_inContextOf.
Now it is more thorough in discerning whether an object is in
the context of another object.
- Fixed keyword args for aq_acquire.
- Plugged a memory leak that occurred when objects wrapped
through acquisition but which do not have a "__call__"
method are invoked. The arguments passed to the call
would be leaked.
- DateTime did not recognize timezone strings like '+0200'.
- Security for Images and Files could not be changed due to
an old name left in the permissions structure (__call__).
- Removed some ancient references to Principia from the ZGadflyDA
user interface.
- Fixed bug in Client.py which opened filesystem file without
using read-binary mode, which caused file corruption
when uploading binary files using ZPublisher.Client
from Windows NT.
- The '_getOb' method of ObjectManagers did not correctly
restrict access to private attributes (beginning with an
'_').
- The XML import/export machinery was fixed to properly deal
with 'long' datatypes.
- Uploading new contents for a File or Image object without a
content-type header caused the old (possibly now incorrect)
content_type attribute to be retained.
- There was an extra slash in the rewrite rule for using PCGI
in single-threaded mode in WEBSERVERS.txt
- The PARENTS list passed to the validate method of User Folders
did not include the published object, which could lead to
incorrect security handling in certain cases (this was the
2000-10-02 Hotfix).
- (Collector #1687) Products which register base classes
for ZClasses typically defer creating them until product
registration; the derived ZClass needs them to be available
immediately after import. Deprecated
'ProductContext.registerZClass' and
'ProductContext.registerBaseClass' in favor of a new function,
'ZClasses.createZClassForBase' (because none of the machinery
needed a ProductContext instance anyway). Update OFSP and
ZCatalog products to use this machinery, instead of
'registerBaseClass'.
- The manage_edit of the Connection base class used by database
connection tried to coerce the connection string to an actual
string. This was problematic because some DAs (Sybase apparently)
store the connection string as an HTTPRequest.record object.
- BASE tags generated by Zope were not XHTML compliant.
- Part of the PropertyManager interface incorrectly assumed a
wrapped object.
- HTTP date headers were generated by strftime in medusa; this
meant that using a different locale caused medusa to generate
invalide Date headers re: the RFC. The date header generation
has been changed to use english even if a different locale is
in effect.
- Dates generated by WebDAV code also used strftime and were
therefore made invalid when a non-english locale was in use.
- Headings generated in HTML by StructuredText did not generate
a closing paragraph tag.
- StructuredText did not recognize URLs with ampersands in them.
- A bit of the SecurityManagement code expected threads to be
available, which broke the "single-threaded-mode" that some
folks use with pcgi.
- DateTime arithmetic was broken if you tried to subtract a
DateTime from another DateTime where one of them was on
daylight savings time and the other was not.
- The infamous "__call__" bug that could surface in situations
where documents called other documents has been stamped out.
And there was much rejoicing.
- The redirect target after adding a ZSQLMethod had too many
path elements in it.
Zope 2.2.2
Bugs Fixed
- Applied Dieter Maurers patch to prevent log entries from
being dropped when clients disconnect prematurely.
- The manage_test method of database connection objects were
not checking for RDB-format results, which caused the test
queries to fail from the test tab of some older DAs.
- Z2.py did not allow passing numeric UIDs for the -u option.
- Fixed a bug in the dtml-var tag handling of the 'null'
attribute. Before null would only work correctly if there was
also a 'fmt' attribute. Now null correctly works with non-zero
false values when there isn't a 'fmt' option.
- Corrected a factory bug that prevented creation of ZClass
instances within objects owned by users defined in a
different user folder than the root acl_users.
- Made ZopeAttributionButton method of Application object
public.
- Factory dispatchers inappropriately acquired ownership in
certain cases, causing problems creating objects for users
not defined in the root user folder.
- The DestinationURL method of FactoryDispatchers did not work
correctly if the dispatcher was obtained through the
unrestrictedTraverse method.
- Several calls to socket.bind() were fixed for Python 1.6/2.0
compatibility in PCGI and Gadfly.
- The sqlvar tag could fail on the trailing 'L' of the string
representation of longs when coercing to int or float.
- Under some circumstances, versions were only partially
committed (or aborted) in FileStorages causing objects to be
left locked in a version with no way to unlock them.
- FileStorages opened read-only incorrectly truncated data
files when incomplete transactions were discovered.
- Read transactions were aborted due to conflict errors.
This was an attempt to catch write conflicts early, but was
far too pessimistic.
- The document_src method of DTML objects required a REQUEST
and RESPONSE argument, making it difficult to use from
Python code. They are now optional.
- The "test" tab of SQL Methods did not include the rendered
query in the error message if the test failed due to a
database-level error (such as a malformed query).
- A signed/unsigned buglet in the code for Splitter objects
caused recognition of national characters to fail on some
platforms (FreeBSD/x86).
- A bug in ZODB database objects could cause ZEO clients to
fail to start without deleting the ZEO client cache.
- The 'lock' keyword argument to RESPONSE.redirect was not
in the API documentation.
- Some missing SCRIPT_NAME variables were added to the IMG
SRC paths for the navigator pane.
Zope 2.2.1
Bugs Fixed
- Correction of ZClass-in-ZClass bugfix which prevented import of
.zexp's containing Factories.
- Made acquisition in the URL and XML-RPC work together.
- A bug in FTP downloading was fixed.
- A bug in the "views" screen for ZClasses could cause strange
IndexErrors depending upon whether help topics were created.
- Improved behavior when non-persistent objects are added to an
ObjectManager.
- Fixed an obscure bug that could cause Zope to crash when
there were errors in computed attributes that depended on
acquisition.
- Fixed very obscure bug in database invalidation when
committing from one version to another. This could cause
source version data to fail to get updated.
- Fixed a condition that prevented error messages from
being displayed when performing a redirect. This means
that standard_error_message documents that redirect now
need to add a "lock=1" argument to the redirect call.
- A bug in the stupid file logger consumed exception info
for certain types of errors (such as failed product import).
- A bug in integration with the new security machinery caused
copy / paste operations to fail in certain cases.
- Changed permission assignments for 'manage_editForm', 'manage',
'manage_main', 'manage_uploadForm', 'manage_historyCopy',
'manage_beforeHistoryCopy' and 'manage_afterHistoryCopy' to
'Change DTML Documents' (for DTML Documents) and 'Change
DTML Methods' (for DTML Methods) which is more correct and
makes view filtering work properly.
- The medusa code that produced the server log file was writing
the formatting the date in GMT but adding a local timezone
identifier (+0100, etc.) It has been fixed to format the date
using localtime.
- The DTML "tree" tag did not understand the common shorthand
spellings for name= and expr=.
- The HTML4 formatting method on DateTime objects did not return
the datetime in UTC as it was supposed to.
- A bug in cgi.py caused an entire extra copy of large file
uploads and input data to be kept in memory, defeating the
work the module does to avoid doing exactly that ;^)
- A bug in the cgi module could cause memory to spike on large
inputs, as it kept a complete copy of the input in memory
that was never used :(
- A packing bug could cause data written by saved versions
to be inaccessible. This is actually a bug that was fixed
in Zope 2.1, but the fix never got applied to the main code
tree. :(
- The behavior of the tag and __str__ methods of images has
changed slightly; if no 'alt' argument is given, it will use
the title of the image (if defined) for the alt attribute.
Otherwise it will generate 'alt=""'. Also, it now generates
'border="0"' unless a different value for border is given as
a keyword argument.
- The database control screen in the control panel did not
work with storages that returned string "sizes". Some
storages return strings to indicate units other than bytes.
- Fixed the broken Product Help icon.
- Fixed ZClass view help setting, thanks to Jeff Sasmor.
Zope 2.2.1 beta 1
Bugs Fixed
- FileStorage-based databases became corrupted when their
size grew beyond 2GB.
- FileStorage-based databases could be corrupted if
transaction descriptions or transaction extended meta-data
exceeded 64KB in size.
- Some relational database adapters use an older version of
a results class in Shared.DC.ZRDB. The RDB-format based
results class was missing a needed security assertion to
allow access to result data.
- Missing security assertions in the ZDOM module caused
unauthorized errors for things trying to use ZDOM (such
as XMLDocument).
- A bug in the registration of help content caused unnecessary
transactions to be written at startup.
- The machinery for guessing content types ignored default
values passed in explicitly.
- A problem in the Find machinery removed the acquisition
context from subobjects, causing permission checking to
fail.
- There was a hard-coded unix path separator in the logic
for initializing special dtml objects from files.
- The ordering of tabs on some management screens was changed
inadvertantly during the 2.2 development cycle. The ordering
has been tweaked to conform more closely to earlier releases.
- The strftime() method of DateTime objects was changed so that
it formats based on the current timezone representation of a
given DateTime object. This is now also the case when formatting
DateTimes from DTML using the fmt="..." construct (which uses
the strftime method under the hood). Previously, strftime
converted to GMT, which was inconsistent with other formatting
methods and caused problems for people. Those who actually do
want the date to be formatted in GMT can use: myDate.toZone('GMT')
to get a version of the object represented in GMT and then call
the formatting methods on that object.
- Permissions were not properly defined for the new history
vew in DTMLMethods and DTMLDocuments. This caused many
useful features to be available only to managers and others
to be available only to those with undo priveledges. A new
permission, "View History" has been added for viewing
historical changes and you can copy historical versions to
the present if yo can edit DTMLDocuments or DTMLMethods.
- The new traversal method, restrictedTraverse was private,
but should have been public. It also didn't check access to
the root object when an absolute path was used.
- The roles (and only the roles) "Manager" and "Anonymous"
had the "Access contents information" permission on the root
application object regardless of permission settings made
through the management interface.
- A ZCatalog bug which was symptomized by a "KeyError" during a
searchResults query was squished by changing some exception
handling in the cataloging machinery.
- Version's chose their names based on absolute_url, which depends
on access method, rather than physical path.
- A fix for socket.connect() calls in preparation for Python 2.0 was
accidentally applied to a wrong part of Client.py in ZPublisher.
- The "distribution" tab for ZClass-based products has been changed
to allow creation of redistributable products.
- DAV property sheets were not correctly associated with permissions,
which cause Unauthorized errors when iterating over propertysheets
under the new security model.
- Some patches to PCGI added in the 2.2 development cycle to support
things like syslog connectivity were backed out due to problems
on certain platforms. The patches may make it back in the future
after the issues are resolved and broader platform testing can
be done.
- The new security machinery did not allow REQUEST to be accessed
when it was acquired. This didn't prevent access to REQUEST, but
made the access eccessively expensive.
- Fixed the display order of the Zope tutorial topics.
- Fixed the help system menu frame to not use standard html
header and footer.
- Products that have not been updated to define an 'initialize'
method to do product initialization were not filtered correctly
by permission in the filtered object add list.
- Exception logging was added to catalog to catch "shouldnt happen"
sorts of events.
- Text indexes did not recognize boolean connectives (and, not)
if they were mixed-case.
- Fixed Tutorial bug that caused win98 to crash with adding a
tutorial.
- Fixed ZService.py to avoid overwriting existing service start
parameters at install time on win32.
- The deprecated alias getSize() was added back to Image and DTML
objects (existing products still depend on it).
- Cleaned up a DocumentTemplate namespace issue. Fixed QuickStart.
- Removed old validation code in cDocumentTemplate.
- In ZCatalog, it was possible for stemming on single-word search
queries to be handled incorrectly and produce no results.
- A problem in the url traversal machinery caused strange errors
in cases where the root of the site was requested but had no
index_html instead of the expected Not Found error.
- ZCatalog objects did not implement the searchable object
interface correctly.
- XML (database) import sometimes failed, especially with
ZClass instances.
- XML (database) export didn't properly handle strings that contained
the string "\n".
- The