[Checkins] SVN: zope2book/trunk/ Give up on the api documentation and make it into a todo to autogenerate it...
Hanno Schlichting
plone at hannosch.info
Mon Feb 16 16:30:29 EST 2009
Log message for revision 96608:
Give up on the api documentation and make it into a todo to autogenerate it...
Changed:
D zope2book/trunk/AppendixB.stx
U zope2book/trunk/TODO.txt
A zope2book/trunk/source/AppendixB.rst
U zope2book/trunk/source/index.rst
-=-
Deleted: zope2book/trunk/AppendixB.stx
===================================================================
--- zope2book/trunk/AppendixB.stx 2009-02-16 21:13:59 UTC (rev 96607)
+++ zope2book/trunk/AppendixB.stx 2009-02-16 21:30:29 UTC (rev 96608)
@@ -1,4530 +0,0 @@
-Appendix B: API Reference
-
-
- Introduction
-
- This reference describes the interfaces to the most common set of
- basic Zope objects. This reference is useful while writing Page
- Templates, DTML, Python scripts, and Product code.
-
- The intended audience is able to read simple Python code and has
- at least passing experience with object-oriented programming.
-
- The reference is not a tutorial. Nor is it a substitute for
- reading the rest of the Zope Book. Examples, where they are
- provided, are intended to be illustrative, but not comprehensive.
-
-
- XXX STATUS
-
- Updated by Paul Winkler, Thu Jan 27 01:22:54 EST 2005
-
- More items moved from TODO to DONE.
-
- All new comments merged from the zope.org 2.6 version, up until
- 2005/01/27 00:24:00.954 US/Eastern
-
- Some more cleanup of DateTime (added return types for everything
- except where very obviously a string).
-
-
- XXX TO DO
-
- * For all modules, classes, methods, and functions in the reference:
-
- * verify that all names are correct
-
- * see if any non-private methods are missing, and add them
-
- * document types of arguments and return values and expected
- exceptions
-
- * compare API reference to source docstrings and to the HelpSys
- .stx files, combine and edit all for completeness and clarity.
-
- * check base classes for things that need documenting - either
- add the base class to this API ref, or document any
- non-overridden methods as part of the derived class docs - not
- sure how best to do this so i'm handling it on a case-by-case
- basis. We don't want to document every base class in zope's
- tangled hierarchy, but we do want everything that's reasonably
- part of "the API" which is nebulous.
-
-
- It's a big job, best done one module at a time. So far it takes
- me about an hour to do one module properly :-(
- Many modules are done, see DONE below.
-
- The below modules are still to do::
-
- Products/OFSP XXX maybe ignore this since it just provides Versions??
- Products/MIMETools XXX does anybody use this?? just provides dtml-mime
- Products/PageTemplates
- Products/PluginIndexes
- Products/SiteAccess
- Products/SiteErrorLog
- Products/StandardCacheManagers
- Products/TemporaryFolder
- Products/ZCTextIndex
- Products/ZGadflyDA
- Products/ZODBMountPoint
- Products/ZopeTutorial
- Produts/ZReST
- PropertySheet
- PropertySheets
- SessionInterfaces
- TransienceInterfaces
- Vocabulary
- ZCatalog
- ZSQLMethod
- ZTUtils
-
- * Maybe omit module names for one-class modules, as
- suggested on zope-web by Don Hopkins?
-
- * Maybe add descriptive categories such as "Core", "Content", and
- "Utility" next to class names, as suggested on zope-web by Don Hopkins?
-
- * List the meta_type for all classes that have one??
-
- * lots of people want embedded examples a la http://www.php.net
- ... add more.
-
- * add manage_clone docs
-
- * add manage_delObjects docs
-
- * all manage_addFoo examples must show the package name!
-
- * all manage_addFoo examples must document the permissions needed.
-
- * add missing modules and classes from
- http://dev.zope.org/Wikis/DevSite/Proposals/IdentifyMissingStuff
-
- * add permission information to methods that don't have it.
-
- * consistently document availability. Right now it's very spotty
- and ad-hoc. By availability, I mean e.g. can you import it in a
- Python Script? Is it available to DTML and if so how? etc. This
- could be done just under the Permission documentation.
-
- * fix up any formatting issues.
-
- * Methods used for FTP? I skipped these on everything prior
- to ObjectManager, might have to go back and do em.
-
- * ZServer.FTPRequest
-
- * Address all remaining XXX items
-
- * Credits for this edition - extract from the DONE section
-
- XXX DONE
-
- * verify that module, class, and method names are correct,
- and verify against the source code docstrings, and
- see if those classes grew more methods. (Big job but these
- tasks are easier done one module at a time.)
- Some of these are done, see DONE below.
-
- DONE for these modules::
-
- AccessControl
- Acquisition (just a link to dev guide chapter)
- DateTime
- DTMLDocument (removed a lot of stuff inherited from DTMLMethod)
- DTMLMethod
- ExternalMethod
- Folder
- HTTPRequest
- HTTPResponse
- Image
- MailHost
- ObjectManager
- PropertyManager
- PythonScripts (Thanks to Jim Alexander! ... no changes)
- Script (actually Shared.DC.Scripts.Script)
- SimpleItem
- Traversable
- User
- UserFolder (Thanks to David Evans!!)
- math
- random
- sequence
- standard
- string
-
- ... with miscellaneous stuff still left to do on those, marked
- by "XXX".
-
- * changed "ObjectManager Constructor" to "ObjectManager factory"
-
- * changed "constructor method" to "factory function" in
- ObjectManager docs... because it is :-P
-
- * changed "Python only" to the more descriptive
- "restricted Python only."
-
- * check all links
-
- * wrote an intro.
-
- * removed 'self' argument from methods, for consistency.
-
- * added Traversable
-
- * replaced ObjectManagerItem with Item and SimpleItem, yay!
-
- * removed File module, moved File to Image module
-
- * trivial typo comments addressed & removed
-
- * some module names fixed: HTTPRequest, HTTPResponse, PythonScripts
-
- * sorted method names (alphanumeric)
-
- * sorted function names (alphanumeric), after class names
-
- * sorted class names (alphanumeric)
-
- * sorted module names (alphanumeric)
-
- * we now have hierarchical TOC, yay
-
-
-module 'AccessControl'
-
- AccessControl: Security functions and classes
-
- The functions and classes in this module are available to
- Python-based Scripts and Page Templates, but not to DTML.
- In DTML you can use the related functions described in
- the DTML chapters of the Zope Book.
-
- XXX missing ClassSecurityInfo? ModuleSecurityInfo?
- allow_module? allow_class ?
-
-
- class 'SecurityManager'
-
- A security manager provides methods for checking access and
- managing executable context and policies.
-
- Typically in Zope code, you do not instantiate one of these;
- instead, you access the current existing one by calling the
- getSecurityManager() function.
-
- 'calledByExecutable()'
-
- Return a boolean value indicating if this context was called
- by an executable.
-
- XXX what the heck does that mean?
-
- permission -- Always available
-
- 'checkPermission(permission, object)'
-
- Check whether the security context (including the current user)
- allows the given permission on the given object.
-
- Arguments:
-
- *permission* -- A permission name (string).
-
- *object* -- The object being accessed.
-
- permission -- Always available
-
- 'getUser()'
-
- Get the current authenticated user. See the
- 'BasicUser' class.
-
- Example usage in ZPT::
-
- Hello, user
- <em
- tal:define="sm python:modules['AccessControl'].getSecurityManager();
- user python:sm.getUser()"
- tal:content="user">
- q Bob
- </em>!
-
- permission -- Always available
-
- 'validate(accessed=None, container=None, name=None, value=None, roles=None)'
-
- Validate access.
-
- Arguments:
-
- *accessed* -- The object that was being accessed.
-
- *container* -- The container of the accessed object.
-
- *name* -- The name used to access the value.
-
- *value* -- The object retrieved though the access.
-
- *roles* -- The roles of the object if already known.
-
- The arguments may be provided as keyword arguments. Some of
- these arguments may be omitted; however, the policy may reject
- access in some cases when arguments are omitted. It is best to
- provide all the values possible.
-
- XXX verify arg descriptions and give examples.
-
- permission -- Always available
-
-
- 'validateValue(value, roles=None)'
-
- Convenience for common case of simple value validation.
-
- permission -- Always available
-
- function 'getSecurityManager()'
-
- Returns the current security manager.
- See the 'SecurityManager' class.
-
- Example usage in a Script (Python)::
-
- import AccessControl
- sm = AccessControl.getSecurityManager()
- return sm.getUser()
-
-
-module 'Acquisition'
-
- See the
- "Acquisition documentation in the Developers' Guide":http://zope.org/Documentation/Books/ZDG/current/Acquisition.stx
-
-
-module 'DateTime'
-
- class 'DateTime'
-
- The DateTime object provides an interface for working with dates
- and times in various formats. DateTime also provides methods for
- calendar operations, date and time arithmetic and formatting.
-
- DateTime objects represent instants in time and provide
- interfaces for controlling its representation without
- affecting the internal value of the object.
-
- DateTime objects may be created from a wide variety of string
- or numeric data, or may be computed from other DateTime objects.
- DateTimes support the ability to convert their representations
- to many major timezones, as well as the ability to create a
- DateTime object in the context of a given timezone.
-
- DateTime objects provide partial numerical behavior:
-
- - Two date-time objects can be subtracted to obtain a time,
- in days between the two.
-
- - A date-time object and a positive or negative number may
- be added to obtain a new date-time object that is the given
- number of days later than the input date-time object.
-
- - A positive or negative number and a date-time object may
- be added to obtain a new date-time object that is the given
- number of days later than the input date-time object.
-
- - A positive or negative number may be subtracted from a
- date-time object to obtain a new date-time object that is
- the given number of days earlier than the input date-time
- object.
-
- DateTime objects may be converted to integer, long, or float
- numbers of days since the host system's epoch, using the standard int,
- long, and float functions. (Compatibility Note: int, long and
- float return the number of days since the epoch in UTC rather than
- local machine timezone.) DateTime objects also provide access
- to their value in a float format usable with the python time
- module, provided that the value of the object falls in the
- range of the epoch-based time module.
-
- (Note: the epoch is a reference date that depends on the underlying
- operating system. On most Unix systems, it is
- 00:00:00 UTC, January 1, 1970.)
-
- A DateTime object should be considered immutable; all conversion
- and numeric operations return a new DateTime object rather than
- modify the current object.
-
- A DateTime object always maintains its internal value as an absolute
- UTC time, and is represented in the context of some timezone
- based on the arguments used to create the object. A DateTime
- object's methods return values based on the timezone context.
-
- Note that in all cases the local machine timezone is used for
- representation if no timezone is specified.
-
- DateTimes may be created with from zero to
- seven arguments.
-
- - If initialized with no arguments, then the
- current date/time is returned, represented in the
- timezone of the local machine.
-
- - If initialized with a single string argument
- which is a recognized timezone name, an object representing
- the current time is returned, represented in the specified
- timezone.
-
- - If initialized with a single string argument
- representing a valid date/time, an object representing
- that date/time will be returned.
-
- As a general rule, any date-time representation that is
- recognized and unambiguous to a resident of North America is
- acceptable. (The reason for this qualification is that
- in North America, a date like "2/1/1994" is interpreted
- as February 1, 1994, while in some parts of the world,
- it is interpreted as January 2, 1994.)
-
- Note that this behavior can be reversed by setting
- the "datefmt" variable as described below (in which
- case, "2/1/1994" is interpreted as January 2 instead of
- February 1).
-
- A date/time string consists of two components, a date component and
- an optional time component, separated by one or more
- spaces. If the time component is omitted, 12:00am is
- assumed. Any recognized timezone name specified as the
- final element of the date/time string will be used for
- computing the date/time value. (If you create a DateTime
- with the string 'Mar 9, 1997 1:45pm US/Pacific', the
- value will essentially be the same as if you had captured
- time.time() at the specified date and time on a machine in
- that timezone). Finally, the DateTime constructor
- automatically detects and handles ISO8601-compliant dates
- (YYYY-MM-DDThh:mm:ssTZD).
- See http://www.w3.org/TR/NOTE-datetime for full specs.
-
- If a string argument passed to the DateTime constructor
- cannot be parsed, it will raise DateTime.SyntaxError. Invalid
- date, time, or timezone components will raise a
- DateTime.DateTimeError.
-
- Examples of initializing with a single string::
-
- e=DateTime("US/Eastern")
- # returns current date/time, represented in US/Eastern.
-
- x=DateTime("1997/3/9 1:45pm")
- # returns specified time, represented in local machine zone.
-
- y=DateTime("Mar 9, 1997 13:45:00")
- # y is equal to x
-
- z=DateTime("1997-03-09T13:45:00-0500").
- # z is equal to y
-
- For non-ISO-8601 strings, the string is assumed to
- consist of a date component followed by an optional time
- component.
-
- The date component consists of year, month, and day
- values. The year value must be a one-, two-, or
- four-digit integer. If a one- or two-digit year is
- used, the year is assumed to be in the twentieth
- century. The month may be an integer, from 1 to 12, a
- month name, or a month abbreviation, where a period may
- optionally follow the abbreviation. The day must be an
- integer from 1 to the number of days in the month. The
- year, month, and day values may be separated by
- periods, hyphens, forward slashes, or spaces. Extra
- spaces are permitted around the delimiters. Year,
- month, and day values may be given in any order as long
- as it is possible to distinguish the components. If all
- three components are numbers that are less than 13,
- then a month-day-year ordering is assumed.
-
- The time component consists of hour, minute, and second
- values separated by colons. The hour value must be an
- integer between 0 and 23 inclusively. The minute value
- must be an integer between 0 and 59 inclusively. The
- second value may be an integer or float value between 0 and
- 59.999 inclusively. The second value or both the minute
- and second values may be omitted. The time may be
- followed by AM or PM in upper or lower case, in which
- case a 12-hour clock is assumed.
-
- - If the DateTime is initialized with a single numeric argument,
- the number is assumed to be a floating point value
- representing seconds since the epoch, such as that returned by
- time.time(). Example::
-
- x = DateTime(0)
- x == DateTime('1970/01/01 00:00:00 UTC')
-
- A DateTime object is returned that represents
- the UTC value of the time.time() float represented in
- the local machine's timezone.
-
- - If the DateTime is initialized with two numeric arguments,
- then the first is taken to be an integer year and the
- second argument is taken to be an offset in days from
- the beginning of the year, in the context of the local
- machine timezone.
-
- Example::
-
- x = DateTime(2010, 55.5)
- x == DateTime('2010/02/24 16:00:00 UTC')
-
- The date-time value returned is the given offset number of
- days from the beginning of the given year, represented in
- the timezone of the local machine. The offset may be positive
- or negative.
- Two-digit years are assumed to be in the twentieth
- century.
-
- - If the DateTime is invoked with two arguments, the first
- a float representing a number of seconds past the epoch
- in gmt (such as those returned by time.time()) and the
- second a string naming a recognized timezone, a DateTime
- with a value of that gmt time will be returned, represented
- in the given timezone.
-
- Example::
-
- import time
- t=time.time()
-
- now_east=DateTime(t,'US/Eastern')
- # Time t represented as US/Eastern
-
- now_west=DateTime(t,'US/Pacific')
- # Time t represented as US/Pacific
-
- now_east == now_west
- # only their representations are different
-
- - If the DateTime is initialized with three or more numeric
- arguments, then the first is taken to be an integer
- year, the second is taken to be an integer month, and
- the third is taken to be an integer day. If the
- combination of values is not valid, then a
- DateError is raised. Two-digit years are assumed
- to be in the twentieth century. The fourth, fifth, and
- sixth arguments specify a time in hours, minutes, and
- seconds. Hours and minutes should be positive integers
- and seconds is a positive floating point value; all of
- these default to zero if not given. If the hours, minutes,
- or seconds are not valid, a TimeError is raised.
- An optional string may
- be given as the final argument to indicate timezone (the
- effect of this is as if you had taken the value of time.time()
- at that time on a machine in the specified timezone).
-
- Example::
-
- x = DateTime(2000, 6, 1, 11, 45, 00, 'GMT')
- y = DateTime('2000/06/01 11:45:00 UTC')
- x == y
-
-
- New in Zope 2.7: A new keyword parameter "datefmt" can be
- passed to the constructor. If set to "international", the
- constructor is forced to treat ambigious dates as "days before
- month before year". This useful if you need to parse non-US
- dates in a reliable way. The default value is "us" but can
- be overridden in your zope.config file.
-
- The module function Timezones() will return a list of the
- timezones recognized by the DateTime module. Recognition of
- timezone names is case-insensitive. XXX wrong place for this??
-
- 'AMPM()'
-
- Return the time string for an object to the nearest second,
- using a 12-hour clock and the 'am' or 'pm' modifier,
- e.g. '01:28:08 am'.
-
- Permission -- Always available
-
- 'AMPMMinutes()'
-
- Like AMPM but omits the seconds, e.g. '01:29 am'.
-
- Permission -- Always available
-
- 'Date()'
-
- Return the date string for the object, in the format 'YYYY/MM/DD'.
-
- Permission -- Always available
-
- 'Day()'
-
- Return the full name of the day of the week.
-
- Permission -- Always available
-
- 'Day_()'
-
- For backwards compatibility; see pDay.
- May be deprecated someday.
-
- Permission -- Always available
-
- 'DayOfWeek()'
-
- For backwards compatibility: see Day.
- May be deprecated someday.
-
- Permission -- Always available
-
- 'HTML4()'
-
- Return a string in the format used in the HTML4.0 specification,
- one of the standard forms in ISO8601.
-
- See "HTML 4.0 Specification":http://www.w3.org/TR/NOTE-datetime
-
- Dates are output as: YYYY-MM-DDTHH:MM:SSZ
- where T and Z are literal characters.
- The time is in UTC.
-
- Permission -- Always available
-
- 'ISO()'
-
- Return a string in ISO standard format.
- Dates are output as: YYYY-MM-DD HH:MM:SS
-
- Permission -- Always available
-
- 'JulianDay()'
-
- Return the Julian day as an integer, according to
- http://www.tondering.dk/claus/cal/node3.html#sec-calcjd
-
-
- 'Mon()'
-
- For backwards compatibility; see aMonth.
- May be deprecated someday.
-
- Permission -- Always available
-
- 'Mon_()'
-
- For backwards compatibility; see pMonth.
- May be deprecated someday.
-
- Permission -- Always available
-
-
- 'Month()'
-
- Return the full month name.
-
- Permission -- Always available
-
- 'PreciseAMPM()'
-
- Return the time string for the object, including milliseconds
- and the modifier, e.g. '01:31:07.525 am'.
-
- Permission -- Always available
-
- 'PreciseTime()'
-
- Return the time string for the object, including milliseconds,
- in 24-hour format, e.g. '23:59:37.963'.
-
- Permission -- Always available
-
- 'Time()'
-
- Return the time string for an object to the nearest second,
- in 24-hour format, e.g. '23:30:15'.
-
- Permission -- Always available
-
- 'TimeMinutes()'
-
- Return the time string for an object not showing seconds,
- in 24-hour format, e.g. '23:31'.
-
- Permission -- Always available
-
- 'aCommon()'
-
- Return a string representing the object's value
- in the format: Mar 1, 1997 1:45 pm
-
- Permission -- Always available
-
- 'aCommonZ()'
-
- Return a string representing the object's value
- in the format: Mar 1, 1997 1:45 pm US/Eastern
-
- Permission -- Always available
-
- 'aDay()'
-
- Return the abbreviated name of the day of the week.
-
- Permission -- Always available
-
- 'aMonth()'
-
- Return the abbreviated month name.
-
- Permission -- Always available
-
- 'ampm()'
-
- Return the appropriate time modifier (am or pm),
- as a lowercase string.
-
- Permission -- Always available
-
- 'day()'
-
- Return the day of the month as an integer.
-
- Permission -- Always available
-
- 'dayOfYear()'
-
- Return the day of the year as an integer, in context of the timezone
- representation of the object.
-
- Permission -- Always available
-
- 'dd()'
-
- Return the day of the month as a 2-digit string.
-
- Permission -- Always available
-
- 'dow()'
-
- Return the integer day of the week, where Sunday is 0.
-
- Permission -- Always available
-
- 'dow_1()'
-
- Return the integer day of the week, where Sunday is 1.
-
- Permission -- Always available
-
- 'earliestTime()'
-
- Return a new DateTime object that represents the earliest
- possible time (in whole seconds) that still falls within the
- current object's day, in the object's timezone context.
-
- Permission -- Always available
-
- 'equalTo(t)'
-
- Compare this DateTime object to another DateTime object OR a
- floating point number such as that which is returned by the
- python time module. Returns true if the object represents a
- date/time equal to *t*. Revised to give more correct results
- through comparison of long integer milliseconds.
-
- Permission -- Always available
-
- 'fCommon()'
-
- Return a string representing the object's value
- in the format: March 1, 1997 1:45 pm
-
- Permission -- Always available
-
- 'fCommonZ()'
-
- Return a string representing the object's value
- in the format: March 1, 1997 1:45 pm US/Eastern
-
- Permission -- Always available
-
- 'greaterThan(t)'
-
- Compare this DateTime object to another DateTime object OR a
- floating point number such as that which is returned by the
- python time module. Returns true if the object represents a
- date/time greater than *t*. Revised to give more correct
- results through comparison of long integer milliseconds.
-
- Permission -- Always available
-
- 'greaterThanEqualTo(t)'
-
- Compare this DateTime object to another DateTime object OR a
- floating point number such as that which is returned by the
- python time module. Returns true if the object represents a
- date/time greater than or equal to *t*. Revised to give more
- correct results through comparison of long integer milliseconds.
-
- Permission -- Always available
-
- 'h_12()'
-
- Return the 12-hour clock representation of the hour
- as an integer.
-
- Permission -- Always available
-
- 'h_24()'
-
- Return the 24-hour clock representation of the hour
- as an integer.
-
- Permission -- Always available
-
- 'hour()'
-
- Return the 24-hour clock representation of the hour
- as an integer.
-
- Permission -- Always available
-
- 'isCurrentDay()'
-
- Return true if this object represents a date/time that falls
- within the current day, in the context of this object's
- timezone representation.
-
- Permission -- Always available
-
- 'isCurrentHour()'
-
- Return true if this object represents a date/time that falls
- within the current hour, in the context of this object's
- timezone representation.
-
- Permission -- Always available
-
- 'isCurrentMinute()'
-
- Return true if this object represents a date/time that falls
- within the current minute, in the context of this object's
- timezone representation.
-
- Permission -- Always available
-
- 'isCurrentMonth()'
-
- Return true if this object represents a date/time that falls
- within the current month, in the context of this object's
- timezone representation.
-
- Permission -- Always available
-
- 'isCurrentYear()'
-
- Return true if this object represents a date/time that falls
- within the current year, in the context of this object's
- timezone representation.
-
- Permission -- Always available
-
- 'isFuture()'
-
- Return true if this object represents a date/time later than
- the time of the call.
-
- Permission -- Always available
-
- 'isLeapYear()'
-
- Return true if the current year (in the context of the
- object's timezone) is a leap year.
-
- Permission -- Always available
-
- 'isPast()'
-
- Return true if this object represents a date/time earlier than
- the time of the call.
-
- Permission -- Always available
-
- 'latestTime()'
-
- Return a new DateTime object that represents the latest
- possible time (in whole seconds) that still falls within the
- current object's day, in the object's timezone context.
-
- Permission -- Always available
-
- 'lessThan(t)'
-
- Compare this DateTime object to another DateTime object OR a
- floating point number such as that which is returned by the
- python time module. Returns true if the object represents a
- date/time less than *t*. Revised to give more correct results
- through comparison of long integer milliseconds.
-
- Permission -- Always available
-
- 'lessThanEqualTo(t)'
-
- Compare this DateTime object to another DateTime object OR a
- floating point number such as that which is returned by the
- python time module. Returns true if the object represents a
- date/time less than or equal to *t*. Revised to give more
- correct results through comparison of long integer milliseconds.
-
- Permission -- Always available
-
- 'localZone(ltm=None)'
-
- Return the local time zone on the given date, in the format
- 'US/Eastern'. The time zone can change according to daylight savings.
- The optional *ltm* argument is a tuple in the format returned
- by time.localtime() from the Python standard library.
- If no argument is passed, use the current time.
-
- Permission -- Always available
-
- 'millis()'
-
- Return the milliseconds since the epoch in UTC,
- as a long integer.
-
- Permission -- Always available
-
- 'minute()'
-
- Return the minute portion of the time as an integer.
-
- Permission -- Always available
-
- 'mm()'
-
- Return the month of the object as a 2-digit string.
-
- Permission -- Always available
-
- 'month()'
-
- Return the month of the object as an integer.
-
- Permission -- Always available
-
- 'notEqualTo(t)'
-
- Compare this DateTime object to another DateTime object OR a
- floating point number such as that which is returned by the
- python time module. Returns true if the object represents a
- date/time not equal to *t*. Revised to give more correct
- results through comparison of long integer milliseconds.
-
- Permission -- Always available
-
- 'parts()'
-
- Return a tuple containing the calendar year, month, day, hour,
- minute, second and timezone of the object.
-
- Permission -- Always available
-
- 'pCommon()'
-
- Return a string representing the object's value
- in the format: Mar. 1, 1997 1:45 pm
-
- Permission -- Always available
-
- 'pCommonZ()'
-
- Return a string representing the object's value
- in the format: Mar. 1, 1997 1:45 pm US/Eastern
-
- Permission -- Always available
-
- 'pDay()'
-
- Return the abbreviated (with period) name of the day of the
- week, e.g. 'Wed.'
-
- Permission -- Always available
-
- 'pMonth()'
-
- Return the abbreviated (with period) month name, e.g. 'Mar.'
-
- Permission -- Always available
-
- 'rfc822()'
-
- Return the date of the object as a string in RFC 822 format,
- e.g. 'Wed, 01 Sep 2004 01:34:12 -0400'.
-
- Permission -- Always available
-
- 'second()'
-
- Return the second portion of the time, as a float.
-
- Permission -- Always available
-
- 'strftime(format)'
-
- Return date/time string formatted according to 'format',
- using the current timezone representation.
-
- See Python's
- "time.strftime":http://www.python.org/doc/current/lib/module-time.html
- function.
-
- Example::
-
- DateTime('2004/01/01').strftime('%m.%Y') == '01.2004'
-
- 'timeTime()'
-
- Return the date/time as a floating-point number in UTC, in the
- format used by the python time module (seconds since the epoch).
- Note that it is possible to create date/time values with
- DateTime that have no meaningful value to the time module.
-
- Permission -- Always available
-
- 'timezone()'
-
- Return the timezone in which the object is represented,
- as a string, e.g. 'US/Eastern' or 'GMT', or 'GMT+2'.
-
- Permission -- Always available
-
- 'toZone(z)'
-
- Return a DateTime with the same value as the current object,
- represented in the indicated timezone. *z* is a string
- e.g. 'US/Pacific', or 'GMT', or 'GMT-1'.
-
- Permission -- Always available
-
- 'tzoffset()'
-
- Return the timezone offset for the object's timezone as an
- integer, measured in seconds relative to UTC.
- Examples::
-
- DateTime().toZone('GMT').tzoffset() == 0
- DateTime().toZone('GMT-1').tzoffset() == -3600
-
- 'week()'
-
- Return the week number of the object as an integer, according to ISO.
- See http://www.tondering.dk/claus/cal/node6.html#SECTION00670000000000000000
- Example::
-
- DateTime('2005/12/31').week() == 52
-
- Permission -- Always available
-
- 'year()'
-
- Return the calendar year of the object as an integer.
-
- Permission -- Always available
-
- 'yy()'
-
- Return calendar year of the object as a 2-digit string,
- e.g. DateTime('2004/01/01') == '04'.
-
- Permission -- Always available
-
-
-module 'DTMLDocument'
-
- class 'DTMLDocument(PropertyManager, DTMLMethod)'
-
- A DTML Document is a Zope object that contains and executes DTML
- code. It is useful to represent web pages.
-
- DTML Documents are identical to DTML Methods with two differences:
-
- First, it supports the PropertyManager API, so you can
- store properties in the object.
-
- Secondly, when the Document is called, its own namespace is merged
- with that of the client argument. So properties and methods of
- the Document will be used before those of the container or
- context. For example, calling absolute_url() on a DTMLDocument
- will return the URL of the DTMLDocument itself.
-
-
- ObjectManager Factory
-
- 'manage_addDTMLDocument(id, title='', file='')'
-
- Add a DTML Document to the current ObjectManager. The file
- argument may be a string or a file-like object.
-
-
-module 'DTMLMethod'
-
- class 'DTMLMethod(RestrictedDTML, HTML, Acquisition.Implicit, RoleManager, ElementWithTitle, Item_w__name__, History.Historical, Cacheable)'
-
-
- XXX many of those base classes are not listed in this ref.
- add some or all of them?
-
- A DTML Method is a Zope object that contains and executes DTML
- code. It can act as a template to display other objects. It can
- also hold small pieces of content which are inserted into other
- DTML Documents or DTML Methods.
-
- The DTML Method's id is available via the 'document_id'
- variable and the title is available via the 'document_title'
- variable.
-
- '__call__(client=None, REQUEST={}, RESPONSE=None, **kw)'
-
- Calling a DTMLMethod causes the Method to interpret the DTML
- code that it contains. The method returns the result of the
- interpretation, which can be any kind of object.
-
- To accomplish its task, DTML Method often needs to resolve various
- names into objects. For example, when the code '<dtml-var
- spam>' is executed, the DTML engine tries to resolve the name
- 'spam'.
-
- In order to resolve names, the Method must be passed a
- namespace to look them up in. This can be done several ways:
-
- * By passing a 'client' object -- If the argument 'client' is
- passed, then names are looked up as attributes on the
- argument.
-
- * By passing a 'REQUEST' mapping -- If the argument 'REQUEST'
- is passed, then names are looked up as items on the
- argument. If the object is not a mapping, a TypeError
- will be raised when a name lookup is attempted.
- Typically, the REQUEST is an HTTPRequest instance.
-
- * By passing keyword arguments -- names and their values can
- be passed as keyword arguments to the Method.
-
- The namespace given to a DTML Method is the composite of
- these three methods. You can pass any number of them or none
- at all. Names will be looked up first in the keyword argument,
- next in the client and finally in the mapping.
-
- Passing in a namespace to a DTML Method is often referred to
- as providing the Method with a *context*.
-
- Unlike DTMLDocuments, a DTMLMethod does not look up names in its
- own namespace. In this sense, it acts only as a method of its
- container or context. For example, calling absolute_url() on a
- DTMLMethod will return the URL of its container. XXX container
- before context as usual, right??
-
- DTML Methods can be called three ways:
-
- From DTML
-
- A DTML Method can be called from another DTML Method or
- Document::
-
- <dtml-var standard_html_header>
- <dtml-var aDTMLMethod>
- <dtml-var standard_html_footer>
-
- In this example, the Method 'aDTMLMethod' is being called
- from another DTML object by name. The calling method passes
- the value 'this' as the client argument and the current DTML
- namespace as the REQUEST argument. The above is identical
- to this following usage in a DTML Python expression::
-
- <dtml-var standard_html_header>
- <dtml-var "aDTMLMethod(_.None, _)">
- <dtml-var standard_html_footer>
-
- From Python
-
- Products, External Methods, and Scripts can call a DTML
- Method in the same way as calling a DTML Method from a
- Python expression in DTML, as shown in the previous example.
-
- By the Publisher
-
- When the URL of a DTML Method is fetched from Zope, the DTML
- Method is called by the publisher. The REQUEST object is
- passed as the second argument to the Method.
-
- Permission -- 'View'
-
- XXX PrincipiaSearchSource method?
-
- XXX manage_proxy method?
-
- XXX manage_haveProxy method?
-
- XXX setCacheNamespaceKeys?
-
- 'document_src()'
-
- Returns the unrendered source text of the DTML Method.
-
- Permission -- 'View management screens'
-
- 'get_size()'
-
- Returns the size of the unrendered source text of the DTML
- Method in bytes.
-
- Permission -- 'View'
-
- 'manage_edit(data, title, SUBMIT='Change', dtpref_cols='100%', dtpref_rows='20', REQUEST=None)'
-
- Change the DTML Method, replacing its contents with 'data' and
- changing its title.
-
- The data argument may be a file-like object or a string.
-
- The SUBMIT parameter is also used during through-the-web editing
- to change the size of the editing area on the default Document
- edit screen. If the value is "Smaller", the rows and columns
- decrease by 5. If the value is "Bigger", the rows and columns
- increase by 5. If any other or no value is supplied, the data
- gets checked for DTML errors and is saved.
-
- Permission -- 'Change DTML Methods'
-
-
- 'manage_upload(file='', REQUEST=None)'
-
- Replace the contents of the document with the text in file.
-
- Permission -- 'Change DTML Methods'
-
- ObjectManager Factory
-
- 'manage_addDTMLMethod(id, title='', file='')'
-
- Add a DTML Method to the current ObjectManager. The file
- argument may be a string or a file-like object.
-
-
-module 'ExternalMethod'
-
- class 'ExternalMethod(Item, Persistent, Acquisition.Explicit,
- RoleManager, Navigation)'
-
- XXX do we want all those base classes?
-
- Web-callable functions that encapsulate external
- Python functions.
-
- The wrapped function is defined in an external file. This file is
- treated like a module, but is not a module. It is not imported
- directly, but is rather read and evaluated. The file must reside
- in the 'Extensions' subdirectory of the Zope installation, or in
- an 'Extensions' subdirectory of a product directory.
-
- There are no security restrictions on the code that can be placed
- in or imported by this external file.
-
- Due to the way ExternalMethods are loaded, it is not *currently*
- possible to import Python modules that reside in the 'Extensions'
- directory. It is possible to import modules found in the
- 'lib/python' directory of the Zope installation, or in
- packages that are in the 'lib/python' directory.
-
-
- '__call__(*args, **kw)'
-
- Call the External Method.
-
- Calling an External Method is roughly equivalent to calling
- the original actual function from Python. Positional and
- keyword parameters can be passed as usual. Note however that
- unlike the case of a normal Python method, the "self" argument
- must be passed explicitly. An exception to this rule is made
- if:
-
- - The supplied number of arguments is one less than the
- required number of arguments, and
-
- - The name of the function\'s first argument is 'self'.
-
- In this case, the URL parent of the object is supplied as the
- first argument. XXX container, not ever context?
-
- 'manage_edit(title, module, function, REQUEST=None)'
-
- Change the
- External Method.
-
- See the description of manage_addExternalMethod for a
- description of the arguments 'module' and 'function'.
-
- Note that calling 'manage_edit' causes the "module" to be
- effectively reloaded. This is useful during debugging to see
- the effects of changes, but can lead to problems if functions
- rely on shared global data.
-
- ObjectManager Factory
-
- 'manage_addExternalMethod(id, title, module, function, REQUEST=None)'
-
- Add an external method to an
- 'ObjectManager'.
-
- In addition to the standard object-creation arguments,
- 'id' and title, the following arguments are defined:
-
- function -- The name of the python function. This can be
- an ordinary Python function, or a bound method.
-
- module -- The name of the file containing the function
- definition.
-
- The module normally resides in the 'Extensions' directory;
- however, the file name may have a prefix a product package
- name, indicating that it should be found in a product
- directory.
-
- For example, if the module is: 'ACMEWidgets.foo', then an
- attempt will first be made to use the file
- 'Products/ACMEWidgets/Extensions/foo.py'. If this
- failes, then the file 'Extensions/ACMEWidgets.foo.py' will be
- used.
-
-
-module 'Folder'
-
- class 'Folder(ObjectManager, PropertyManager, RoleManager, webdav.Collection.Collection, Item, FindSupport.FindSupport)'
-
-
- A Folder is a generic container object. Folders are the most
- common ObjectManager subclass in Zope.
-
- ObjectManager Factory
-
- 'manage_addFolder(id, title='', createPublic=0, createUserF=0, REQUEST=None)'
-
- Add a Folder to the current ObjectManager with the given
- *id* and optional *title*.
-
- If the *createPublic* argument is true, a Page Template
- with the id index_html will be created in the new folder.
-
- If the *createUserF* argument is true, a UserFolder with the
- id acl_users will be created in the new folder.
-
- Permission -- 'Add Folders'
-
-
-
-module 'HTTPRequest'
-
- class 'FileUpload'
-
- File upload objects are used to represent file-uploaded data.
-
- File upload objects can be used just like files objects.
- See the
- "Python documentation":http://docs.python.org/lib/bltin-file-objects.html
- for details on file objects.
-
- In addition, FileUploads have a 'headers' attribute that is a
- dictionary containing the file-upload headers, and a 'filename'
- attribute containing the name of the uploaded file.
-
- '__init__(aFieldStorage)'
-
- Create a new FileUpload object. Argument is an instance of
- 'cgi.FieldStorage', see the 'cgi' documentation in the
- "Python Library Reference":http://docs.python.org/lib/node403.html
-
- class 'HTTPRequest(BaseRequest)'
-
- XXX we don't document the BaseRequest module. Should we???
-
- The request object encapsulates all of the information regarding
- the current request in Zope. This includes the input headers,
- form data, server data, and cookies.
-
- The request object is a mapping object that represents a
- collection of variable to value mappings.
-
- Request objects are typically not created by application code; one
- is created for you by the object publisher and will be passed to
- published objects through the argument named REQUEST.
-
- The current request is also accessible as the REQUEST attribute of
- any acquisition-aware object. Page Templates also bind the current
- request to the name "request". The different spelling in these
- different circumstances is a bit of a wart. Sorry about that.
-
- The request can also be used as a namespace, in which names are
- resolved the same as for the mapping interface, as described
- below.
-
- HTTPRequest provides a somewhat richer interface than BaseRequest,
- notably by providing some support for virtual hosting, and by
- providing richer variable categorization.
-
- Variables are organized into four categories. Each category is
- represented as a dictionary and available as an attribute of the
- REQUEST object, as follows:
-
- - Environment variables ('.environ')
-
- These variables include input headers, server data, and
- other request-related data. The variable names are as <a
- "specified":http://hoohoo.ncsa.uiuc.edu/cgi/env.html
- in the
- "CGI specification.":http://hoohoo.ncsa.uiuc.edu/cgi/interface.html
-
- - Form data ('.form')
-
- These are data extracted from either a URL-encoded query
- string or body, if present.
-
- The 'form' attribute of a request is actually a FieldStorage
- object. When file uploads are used, this provides a richer
- and more complex interface than is provided by accessing
- form data as items of the request. See the
- "cgi module documentation":http://docs.python.org/lib/node403.html
- in the Python library reference for more details.
-
- - Cookies ('.cookies')
-
- The cookie data, if present.
-
- - Other ('.other')
-
- Data that may be set by an application object.
-
-
- When the request object is used as a mapping object, values will
- be looked up in all of the above categories, in this order:
- environ, other, form, cookies.
-
-
- In addition, there is a special
- pseudo-category:
-
- - Lazy Data
-
- These are callables which are deferred until explicitly
- referenced, at which point they are resolved (called) and
- the result stored as "other" data, i.e. regular request data.
-
- Thus, they are "lazy" data items. An example is SESSION objects.
-
- Lazy data in the request may only be set by the Python
- method 'set_lazy(name,callable)' as described below.
-
- Accessing lazy data is no different from accessing any other
- request data.
-
- So, if a request variable *foo* exists only in the *other*
- category, then the following ways of accessing it will return the
- same value::
-
- request = context.REQUEST
-
- f1 = request['foo'] # mapping, no error-checking.
-
- f2 = request.foo # attribute, no error-checking.
-
- f3 = request.get('foo') # mapping, returns None on error.
-
- f4 = request.other['foo'] # mapping, more specific, no
- # error-checking.
-
- f5 = request.other.get('foo') # mapping, more specific, returns
- # None on error.
-
- The following special (XXX read-only? lazy?) variables are
- always available in the *other* category:
-
- 'PARENTS' -- A list of the objects traversed to get to the
- published object. So, 'PARENTS[0]' would be the ancestor of
- the published object.
-
- 'REQUEST' -- The Request object itself.
-
- 'RESPONSE' -- The Response object, generally an instance of
- HTTPResponse.
-
- 'PUBLISHED' -- The actual object published as a result of
- url traversal.
-
- 'URL' -- The URL of the published object.
-
- This is almost the same as the exact URL the client requested,
- but it does not include any query parameters, nor does it
- include any trailing path elements (i.e. the traverse_subpath
- available to Python Scripts and Page Templates).
-
- *URLn* -- 'URL0' is the same as 'URL'. 'URL1' is the same as
- 'URL0' with the last path element removed. 'URL2' is the same
- as 'URL1' with the last element removed. Etcetera.
- Only as many URLn variables are defined as is necessary.
-
- For example if URL='http://localhost/foo/bar', then
- URL1='http://localhost/foo', URL2='http://localhost',
- and URL3 and higher are not defined.
-
- *URLPATHn* -- 'URLPATH0' is the path portion of 'URL',
- 'URLPATH1' is the path portion of 'URL1', and so on.
-
- For example if URL='http://localhost/foo/bar', then
- URLPATH1='/foo' and URLPATH2='/'.
-
- *BASEn* -- 'BASE0' is the URL up to but not including the Zope
- application object. 'BASE1' is the URL of the Zope application
- object. 'BASE2' is the URL of the Zope application object with
- an additional path element added in the path to the published
- object. Etcetera.
-
- For example if URL='http://localhost/Zope.cgi/foo/bar', then
- BASE0='http://localhost', BASE1='http://localhost/Zope.cgi',
- and BASE2='http://localhost/Zope.cgi/foo'.
-
- *BASEPATHn* -- 'BASEPATH0' is the path portion of 'BASE0',
- 'BASEPATH1' is the path portion of 'BASE1', and so on.
- 'BASEPATH1' is the externally visible path to the root Zope
- folder, equivalent to CGI's 'SCRIPT_NAME', but virtual-host aware.
-
- For example if URL='http://localhost/Zope.cgi/foo/bar', then
- BASEPATH0='/', BASEPATH1='/Zope.cgi', and BASEPATH2='/Zope.cgi/foo'.
-
-
- In addition, many variables are commonly set by other parts of
- the system, such as the virtual host machinery, or the published
- objects, or your own application code. XXX These should be noted
- in each relevant section.
-
- It is very instructive to view all the contents of a request.
- This is a popular technique during debugging and development.
- For example, in a Python Script::
-
- request = context.REQUEST
- return request
-
- Or in a Page Template::
-
- <span tal:replace="request" />
-
- Or in DTML::
-
- <dtml-var REQUEST>
-
-
-
- 'get(key, default=None)'
-
- Get the value of the request variable *key*.
- If not found, return *default*.
-
- The value will be looked up from one of the request data
- categories. The search order is: environment variables, other
- variables, form data, and then cookies.
-
- Permission -- Always available
-
- 'get_header(name, default=None)'
-
- Return the named HTTP header, or an optional default argument
- or None if the header is not found. Note that both original
- and CGI header names without the leading 'HTTP_' are
- recognized, for example, 'Content-Type', 'CONTENT_TYPE' and
- 'HTTP_CONTENT_TYPE' should all return the Content-Type header,
- if available.
-
- Permission -- Always available
-
- 'getClientAddr()'
-
- The IP address of the client, as a string.
- If cannot be determined, the string will be empty.
-
- Permission -- XXX Always available?
-
- 'has_key(key)'
-
- Returns a true value if the request object contains *key*,
- otherwise false.
-
- Permission -- Always available
-
- 'items()'
-
- Returns a sequence of (key, value) tuples for all the keys in
- the request object.
-
- Permission -- Always available
-
- 'keys()'
-
- Returns a sorted sequence of all keys in the request object.
-
- Permission -- Always available
-
-
-
- 'physicalPathToVirtualPath(path)'
-
- Remove the path to the VirtualRoot from the given
- physical path.
-
- *path* may be a string delimited by slashes, or a sequence of
- strings.
-
- Returned value is a sequence of strings.
-
- XXX example? must call setVirtualRoot first.
-
- XXX usage? is this intended to be public?
-
- Permission -- Always available XXX
-
- 'physicalPathFromURL(URL)'
-
- Convert a *URL* string into a physical path (sequence of
- strings) in the current context. If the URL makes no sense in
- light of the current virtual hosting context, a ValueError is
- raised.
-
- Note that this does not verify existence of an object
- at the resulting path.
-
- Permission -- Always available XXX
-
-
- 'physicalPathToURL(path, relative=0)'
-
- Convert a physical path into a URL in the current context.
- Returns a url-quoted string.
-
- *path* is a sequence of strings.
-
- If *relative* is true, the resulting path begins with the path
- of the current context. Otherwise, the server URL is included
- too.
-
- Intended to be called from publishing traversal hooks. If you
- are constructing URLs, you should probably use methods of
- Traversable instead.
-
- Permission -- Always available XXX
-
- 'set(name, value)'
-
- Create a new name in the request object and assign it a value.
- This name and value is stored in the 'other' category.
-
- Permission -- Always available
-
- 'set_lazy(key, callable)'
-
- Add a lazy variable to the 'other' category. When *key* is
- subsequently requested for the first time, *callable* will be
- called to compute the value, which is then stored in 'other' for
- the remainder of the request's lifetime.
-
- Permission -- XXX
-
-
- 'setServerURL(protocol=None, hostname=None, port=None)'
-
- Sets the specified elements of 'SERVER_URL', also affecting
- 'URL', 'URLn', 'BASEn', and 'absolute_url()' and friends.
-
- Provides virtual hosting support. Intended to be called from
- publishing traversal hooks.
-
- Permission -- Always available
-
- 'setVirtualRoot(path, hard=0)'
-
- Alters 'URL', 'URLn', 'URLPATHn', 'BASEn', 'BASEPATHn', and
- virtual-host-aware methods such as 'absolute_url()', such that
- the current object has path 'path'. If 'hard' is true,
- 'PARENTS' is emptied.
-
- Provides virtual hosting support. Intended to be called from
- publishing traversal hooks.
-
- Permission -- Always available
-
- 'traverse(path, response=None, validated_hook=None)'
-
- Traverse the object space. Return an object if possible
- and if allowed by the security machinery; otherwise, call
- an appropriate error method of the response.
-
- The REQUEST must already have a PARENTS item with at least one
- object in it. This is typically the root object.
-
- *response* can be passed as an HTTPResponse instance. It
- defaults to self.response.
-
- *validated_hook* is an optional callable which, if passed, will
- be called after security validation succeeds, with two
- positional arguments: the request itself, and the validated user
- object.
-
- Permission -- Always available
-
- 'values()'
-
- Returns a sequence of values for all the keys in the request
- object.
-
- Permission -- Always available
-
-
-module 'HTTPResponse'
-
- class 'HTTPResponse'
-
- The Response object encapsulates all possible responses to HTTP
- requests. Responses are normally created by the object publisher.
- A published object may recieve the response abject as an argument
- named 'RESPONSE'. A published object may also create it's own
- response object.
-
- Normally, published objects use response objects
- to:
-
- - Provide specific control over output headers,
-
- - Set cookies, or
-
- - Provide stream-oriented output.
-
- If stream oriented output is used, then the response object
- passed into the object must be used.
-
- 'addHeader(name, value)'
-
- Set a new HTTP return header with the given value, while
- retaining any previously set headers with the same name.
-
- Permission -- Always available
-
- 'appendCookie(name, value, delimiter=',')'
-
- Returns an HTTP header that sets a cookie on cookie-enabled
- browsers with a key *name* and value *value*. If a value for the
- cookie has previously been set in the response object, the new
- value is appended to the old one separated by a colon.
-
- Permission -- Always available
-
- 'appendHeader(name, value, delimiter=",")'
-
- Append a value to a header.
-
- Sets an HTTP return header "name" with value "value", appending
- it following *delimiter* if there was a previous value set for
- the header.
-
- Permission -- Always available
-
- 'badRequestError(name)'
-
- Raise a BadRequest error.
-
- 'debugError(entry)'
-
- Raises NotFound.
-
-
- 'enableHTTPCompression,REQUEST={},force=0,disable=0,query=0)'
-
- Enable HTTP Content Encoding with gzip compression if possible.
-
- REQUEST -- used to check if client can accept compression
- force -- set true to ignore REQUEST headers
- disable -- set true to disable compression
- query -- just return if compression has been previously requested
-
- returns -- 1 if compression will be attempted, 2 if compression
- is forced, 0 if no compression
-
- The HTTP specification allows for transfer encoding and content
- encoding. Unfortunately many web browsers still do not support
- transfer encoding, but they all seem to support content encoding.
-
- This function is designed to be called on each request to specify
- on a request-by-request basis that the response content should
- be compressed. This is quite useful for xml-rpc transactions, where
- compression rates of 90% or more can be achieved for text data.
-
- The REQUEST headers are used to determine if the client accepts
- gzip content encoding. The force parameter can force the use
- of gzip encoding regardless of REQUEST, and the disable parameter
- can be used to "turn off" previously enabled encoding (but note
- that any existing content-encoding header will not be changed).
- The query parameter can be used to determine if compression
- has been previously requested.
-
- In setBody, the major mime type is used to determine if content
- encoding should actually be performed.
-
- By default, image types are not compressed.
- Additional major mime types can be specified by setting the
- environment variable DONT_GZIP_MAJOR_MIME_TYPES to a comma-seperated
- list of major mime types that should also not be gzip compressed.
-
-
- 'expireCookie(name, **kw)'
-
- Cause an HTTP cookie to be removed from the browser
-
- The response will include an HTTP header that will remove the cookie
- corresponding to "name" on the client, if one exists. This is
- accomplished by sending a new cookie with an expiration date
- that has already passed. Note that some clients require a path
- to be specified - this path must exactly match the path given
- when creating the cookie. The path can be specified as a keyword
- argument.
-
- Permission -- Always available
-
- 'forbiddenError(entry="Unknown")'
-
- raise NotFound.
-
- 'notFoundError(entry="Unknown")'
-
- raise NotFound.
-
- 'redirect(location, status=302, lock=0)'
-
- Cause a redirection without raising an error. If the "lock"
- keyword argument is passed with a true value, then the HTTP
- redirect response code will not be changed even if an error
- occurs later in request processing (after redirect() has
- been called).
-
- You can also override the integer status code, e.g. you might
- want to use 301 ("Moved Permanently") instead of 302 ("Moved
- Temporarily").
-
- Permission -- Always available
-
- 'setBase(base)'
-
- Set the base URL for the returned document.
- If base is None, or the document already has a base,
- has no effect.
-
- Permission -- Always available
-
-
-
- 'setBody(body, title="", is_error=0)'
-
- Sets the response body equal to the (string) argument *body*. Also
- updates the "content-length" return header.
-
- You can also specify a title, in which case the title and body
- will be wrapped up in html, head, title, and body tags.
-
- If the body is a 2-element tuple, then it will be treated
- as (title,body).
-
- If *is_error* is true then the HTML will be formatted as a Zope error
- message instead of a generic HTML page.
-
- 'setCookie(name, value, **kw)'
-
- Set an HTTP cookie on the browser
-
- The response will include an HTTP header that sets a cookie on
- cookie-enabled browsers with a key "name" and value
- "value". This overwrites any previously set value for the
- cookie in the Response object.
-
- % Anonymous User - Oct. 13, 2004 11:11 am:
- (quote from http://wp.netscape.com/newsref/std/cookie_spec.html)
- expires=DATE
- The expires attribute specifies a date string that defines the valid life time of
- that cookie. Once the expiration date has been reached, the cookie will no longer be
- stored or given out.
- The date string is formatted as:
- Wdy, DD-Mon-YYYY HH:MM:SS GMT
- This is based on RFC 822, RFC 850, RFC 1036, and RFC 1123, with the variations that
- the only legal time zone is GMT and the separators between the elements of the date must
- be dashes.
- expires is an optional attribute. If not specified, the cookie will expire when the
- user's session ends.
- Note: There is a bug in Netscape Navigator version 1.1 and earlier. Only cookies whose
- path attribute is set explicitly to "/" will be properly saved between sessions if they
- have an expires attribute.
-
- domain=DOMAIN_NAME
- When searching the cookie list for valid cookies, a comparison of the domain attributes
- of the cookie is made with the Internet domain name of the host from which the URL will be
- fetched. If there is a tail match, then the cookie will go through path matching to see if
- it should be sent. "Tail matching" means that domain attribute is matched against the tail
- of the fully qualified domain name of the host. A domain attribute of "acme.com" would match
- host names "anvil.acme.com" as well as "shipping.crate.acme.com".
- Only hosts within the specified domain can set a cookie for a domain and domains must have
- at least two (2) or three (3) periods in them to prevent domains of the form: ".com", ".edu",
- and "va.us". Any domain that fails within one of the seven special top level domains listed
- below only require two periods. Any other domain requires at least three. The seven special top
- level domains are: "COM", "EDU", "NET", "ORG", "GOV", "MIL", and "INT".
- The default value of domain is the host name of the server which generated the cookie
- response.
- path=PATH
- The path attribute is used to specify the subset of URLs in a domain for which the cookie
- is valid. If a cookie has already passed domain matching, then the pathname component of the
- URL is compared with the path attribute, and if there is a match, the cookie is considered
- valid and is sent along with the URL request. The path "/foo" would match "/foobar" and
- "/foo/bar.html". The path "/" is the most general path.
- If the path is not specified, it as assumed to be the same path as the document being
- described by the header which contains the cookie.
- secure
- If a cookie is marked secure, it will only be transmitted if the communications channel
- with the host is a secure one. Currently this means that secure cookies will only be sent
- to HTTPS (HTTP over SSL) servers.
- If secure is not specified, a cookie is considered safe to be sent in the clear over
- unsecured channels.
-
- Permission -- Always available
-
- 'setHeader(name, value, literal=0)'
-
- Sets an HTTP return header *name* with value *value*, clearing
- the previous value set for the header, if one exists. If the
- literal flag is true, the case of the header name is
- preserved, otherwise word-capitalization will be performed on
- the header name on output.
-
- Permission -- Always available
-
- 'setStatus(status, reason=None)'
-
- Sets the HTTP status code of the response; the *status* may
- either be an integer or one of the following strings:
-
- OK,
- Created,
- Accepted,
- NoContent,
- MovedPermanently,
- MovedTemporarily,
- NotModified,
- BadRequest,
- Unauthorized,
- Forbidden,
- NotFound,
- InternalError,
- NotImplemented,
- BadGateway,
- ServiceUnavailable
-
- that will be converted to the correct integer value.
-
- The *reason* argument is an optional string which may override
- the default explanatory text (e.g. if you want to describe a 404
- status with something other than "Not Found").
-
- Permission -- Always available
-
- 'unauthorized'
-
- Raise an Unauthorized error.
-
- 'write(data)'
-
- Return data as a stream.
-
- HTML data may be returned using a stream-oriented interface.
- This allows the browser to display partial results while
- computation of a response to proceed.
-
- The published object should first set any output headers or
- cookies on the response object. In particular, the
- CONTENT-LENGTH header must be set correctly.
-
- Note that published objects must not generate any errors
- after beginning stream-oriented output.
-
- Permission -- Always available
-
-
-module 'Image'
-
- class 'File(Persistent, Implicit, PropertyManager, RoleManager, Item_w__name__, Cacheable)'
-
- A File is a Zope object that contains arbitrary file content.
- It can be used to upload or download file information.
-
- If the File contains some text data, it may be rendered in
- a Page Template very easily like so::
-
- <span tal:replace="context/FileObject" />
-
- A more complex example is presenting the File object for
- download by the user. The next example displays a link to every
- File object in a folder for the user to download::
-
- <ul>
- <li tal:repeat="f python:context.objectValues('File')">
- <a tal:attributes="f/absolute_url"
- tal:content="f/getId"> the ID goes here </a>
- </li>
- </ul>
-
- In this example, the 'absolute_url' method and 'getId' are used to
- create a list of HTML hyperlinks to all of the File objects in
- the current Object Manager. See ObjectManager for more about
- the 'objectValues' method.
-
- 'getContentType()'
-
- Returns the content type of the file.
-
- Permission -- 'View'
-
- 'get_size()'
-
- Returns the size of the file in bytes.
-
- Permission -- 'View'
-
- 'index_html(REQUEST, RESPONSE)'
-
- The default view of the contents of a File or Image.
-
- Uses the *RESPONSE* object to output the contents of the file
- or image. Also, sets the Content-Type header of *RESPONSE* to
- the object's content type.
-
- If the object has a *precondition* (as described in the
- constructor), it will be called before any data is returned.
-
- Return value is a string, but it may be empty: the File may
- elect to set a 304 (Not Modified) status and return immediately;
- or if the file's size is not tiny, it may elect to use the
- RESPONSE object's streaming interface. In either case, the
- return value will be an empty string.
-
- Permission -- 'View'
-
- 'manage_edit(title, content_type, precondition="", filedata=None, REQUEST=None)'
-
- Changes the title and content type attributes of the object.
-
- If *filedata* is provided, it replaces the object's uploaded
- data. It can be either a string or a FileUpload instance.
-
- If *precondition* is provided, it replaces any existing
- precondition. See the ObjectManager constructor for
- explanation of precondition.
-
- Permission -- 'Change Images and Files'
-
- 'manage_upload(file, REQUEST=None)'
-
- Replaces the current contents of the File or Image object with
- *file*, which may be a string or a FileUpload instance.
-
- Permission -- 'Change Images and Files'
-
- 'update_data(data, content_type=None, size=None)'
-
- XXX Is this really part of the API?
-
- Updates the contents of the File with 'data'.
-
- % Anonymous User - Nov. 6, 2004 6:11 am:
- I don't get why you can't access this internally.
-
- The 'data' argument must be a string. If 'content_type' is not
- provided, then a content type will not be set. If size is not
- provided, the size of the file will be computed from 'data'.
-
- Permission -- restricted Python only
-
- 'view_image_or_file(URL1)'
-
- Used by the UI to redirect to the default view of the
- File or Image.
-
- Permission -- 'View'
-
- ObjectManager Factory
-
- 'manage_addFile(id, file="", title="", precondition="", content_type="", REQUEST=None)'
-
- Add a new File object.
-
- The optional *file* may be a string or a FileUpload instance.
- If not provided, the new File object will have no data.
-
- The optional *precondition* is an ID for a callable object.
- If non-empty, it will be looked up (via acquisition) and
- called every time the file is viewed. The intention is
- that this object may raise an exception if you wish to
- prevent the file from being viewed.
-
- *content_type* may be explicitly passed; otherwise,
- an attempt will be made to guess.
-
-
-
- class 'Image(File)'
-
- An Image is a Zope object that contains image content.
-
- Images have all the same methods as Files, with a few useful
- additions.
-
- Images have two read-only properties which define their
- dimensions, 'height' and 'width'. These are calculated when the
- image is uploaded. For image types that Zope does not understand,
- these properties may be undefined.
-
- Zope only recognizes JPEG, PNG, and GIF images.
-
- Using an Image object in Zope is easy. The most common usage is
- to display the contents of an image object in a web page. This
- is done by simply referencing the object from a Page Template::
-
- <img tal:replace="structure context/ImageObject" />
-
- This will generate an HTML IMG tag referencing the URL to the
- Image. This is equivalent to::
-
- <img tal:attributes="src context/ImageObject/absolute_url;
- height context/ImageObject/height;
- width context/ImageObject/width;
- alt context/ImageObject/title_or_id" />
-
-
- You can control the image display more precisely with the 'tag'
- method. For example::
-
- <img tal:replace="structure
- python:context.ImageObject.tag(border='5',
- align='left')" />
-
- 'tag(height=None, width=None, alt=None, scale=0, xscale=0, yscale=0, **args)'
-
- This method returns a string which contains an HTML IMG tag
- reference to the image.
-
- Optionally, the 'height', 'width', 'alt', 'scale', 'xscale'
- and 'yscale' arguments can be provided which are turned into
- HTML IMG tag attributes. Note, 'height' and 'width' are
- provided by default, and 'alt' comes from the 'title_or_id'
- method.
-
- Keyword arguments may be provided to support other or future IMG
- tag attributes. The one exception to this is the HTML Cascading
- Style Sheet tag 'class'. Because the word 'class' is a reserved
- keyword in Python, you must instead use the keyword argument
- 'css_class'. This will be turned into a 'class' HTML tag attribute
- on the rendered 'img' tag.
-
- Permission -- 'View'
-
- ObjectManager Factory
-
- 'manage_addImage(id, file, title="", precondition="", content_type="", REQUEST=None)'
-
- Add a new Image object.
-
- Creates a new Image object 'id' with the contents of 'file',
- which may be a string or a FileUpload instance.
-
- *precondition* and *content_type* have the same meaning as for
- the 'File' class.
-
-
-module 'MailHost'
-
- class 'MailHost(Acquisition.Implicit, Item, RoleManager)'
-
- MailHosts allow you to send mail via the Simple Mail Transfer
- Protocol (SMTP).
-
- This object can be used deliver mail by the its send() and
- simple_send() methods. It can also be used from DTML objects
- with the <dtml-sendmail> tag.
-
- 'manage_makeChanges(title,smtp_host,smtp_port, REQUEST=None)'
-
- Change the title, smtp_host, and smtp_port.
-
- Permission -- 'Change configuration'
-
- 'send(messageText, mto=None, mfrom=None, subject=None, encode=None)'
-
- Sends an email message where the messageText is an rfc822 formatted
- message. This allows you complete control over the message headers,
- including setting any extra headers such as Cc: and Bcc:.
- The arguments are:
-
- messageText -- The mail message. It can either be a rfc822
- formed text with header fields, or just a body without any
- header fields. The other arguments given will override the
- header fields in the message, if they exist.
-
- mto -- Recipient(s) of the message, either as a
- comma-separated string of addresses, or as a list of such
- strings.
-
- mfrom -- The address of the message sender.
-
- subject -- The subject of the message.
-
- encode -- The rfc822-defined encoding of the message. The
- default of 'None' means no encoding is done. Valid values
- are 'base64', 'quoted-printable' and 'uuencode'.
-
- Permission -- 'Use mailhost services'
-
- 'simple_send(mto, mfrom, subject, body)'
-
- Sends a message. Only To:, From: and Subject: headers can be set.
- The arguments are:
-
- mto -- Recipient(s) of the message, either as a
- comma-separated string of addresses, or as a list of such
- strings.
-
- mfrom -- The address of the message sender.
-
- subject -- The subject of the message.
-
- body -- The body of the message.
-
- Permission -- 'Use mailhost services'
-
- ObjectManager Factory
-
- 'manage_addMailHost(id, title="", smtp_host='localhost', localhost='localhost', smtp_port=25, timeout=1.0, REQUEST=None)'
-
- Add a mailhost object to an ObjectManager with the given 'id'.
-
- smtp_host -- is the hostname or IP address (as a string) of the
- SMTP server that this MailHost will use.
-
- smtp_port -- is the integer port of the SMTP server that this
- MailHost will use.
-
- localhost -- apparently not used.
-
- timeout -- apparently not used.
-
-
-module 'ObjectManager'
-
- class 'ObjectManager(CopySupport.CopyContainer, Acquisition.Implicit, Persistent, Collection, Traversable)
-'
- XXX what's Collection?
-
- An ObjectManager contains other Zope objects. The contained
- objects are persistent Products, and typically derived from
- 'SimpleItem' or 'Item'.
-
- Creating an object inside an ObjectManager requires you to first
- look up a factory function in a mapping of Products. Therefore,
- you need to know both the Product name and the factory function
- name.
-
- This can be a little confusing at first. Here's an example
- of creating a new Folder::
-
- self.manage_addProduct['OFS'].manage_addFolder(id, title)
-
- 'self' in this example is the current ObjectManager.
-
- 'manage_addProduct' is the mapping of Products to factory function
- namespacess. It is indexed by product id. You need to know the
- name of the Product (a Python package) which contains the class
- you are trying to add. The resulting namespace contains
- potentially many factory functions - one for each addable class
- the Product provides.
-
- 'OFS' is a Product which provides the Folder class. The name
- *OFS* itself dates back to very early versions of Zope and doesn't
- really mean anything now. The OFS package is a collection of many
- core Zope base classes and content types, including Folder, Image,
- File, and DTMLMethod. Each has its own factory function.
-
- 'manage_addFolder' is the factory function for Folder. Factory
- functions are registered during product initialization when Zope
- starts up. The first argument is always the ObjectManager calling
- the function, and is implicitly passed as if the function were a
- method of the ObjectManager. The next argument is the 'id' which
- gives the id for the new object. Some factory functions may have
- other required or optional arguments.
-
- Factory functions are also typically protected by permissions
- relevant to the type in question.
-
- Product authors should provide documentation about their factory
- function arguments and permissions; unfortunately, many do not.
- For core Zope classes such as Folder, the documentation is this
- API Reference. When documentation is lacking, you can always
- check the source code.
-
-
- 'manage_FTPstat()'
-
- Generates unix-like object stats for FTP listings. The return
- value is not human-readable but is usable by FTP clients.
-
- Permission -- 'FTP access'
-
- 'manage_FTPlist(REQUEST)'
-
- FTP view of ObjectManager contents. The return value is not
- human-readable but is usable by FTP clients.
-
- 'REQUEST' is an instance of FTPRequest (similar to HTTPRequest).
-
- If REQUEST.environ has a non-empty 'GLOBBING' variable, it
- will be used as a pattern to match on the listed objects.
-
- If REQUEST.environ['FTP_RECURSIVE'] is set to 1, the listing
- will recursively descend into all child Folders.
-
- Permission -- 'FTP access'
-
- 'manage_delObjects(ids=[], REQUEST=None)'
-
- Delete objects from this ObjectManager.
- 'ids' may be a string giving a single id, or a list of strings.
-
- Deletion is transactional: all designated objects will be
- successfully deleted, or none will.
-
- For each deleted object, its manage_beforeDelete() method will
- be called, if one is defined.
-
- Permission -- 'Delete objects'
-
- 'manage_exportObject(id="", download=None, toxml=None, RESPONSE=None,REQUEST=None)'
-
- Export the object with the given 'id'.
-
- If 'download' is true, the resulting file data is returned to
- the client. Otherwise, it is saved to a file in this Zope
- instance's 'var' directory. The file is named for 'id' with the
- extension *.zexp*.
-
- If 'toxml' is true, the data is in an XML format. (Note: This
- format is reputedly not very useful to non-Zope applications and
- it seems not to be widely used.)
-
- Permission -- 'Import/Export objects'
-
- 'manage_importObect(file, REQUEST=None, set_owner=1)'
-
- Import an object from the given path. *file* is a path relative
- to this Zope instance's 'import' directory.
-
- If the optional *set_owner* argument is true, the imported
- object(s) will belong to the user who called this method.
-
- Permission -- 'Import/Export objects'
-
- 'objectIds(spec=None)'
-
- This method returns a list of the string ids of the contained
- objects.
-
- Optionally, you can pass an argument specifying what object
- meta_type(s) to restrict the results to. This argument can be
- a string specifying one meta_type, or it can be a list of
- strings to specify many.
-
- DTML example, with the optional argument::
-
- <dtml-in "objectIds('DTML Document')">
- <dtml-var id>
- <dtml-else>
- There are no sub-folders.
- </dtml-in>
-
- This DTML code will display all the ids of the DTML Documents
- contained in the current Object Manager.
-
- Permission -- 'Access contents information'
-
- 'objectItems(type=None)'
-
- This method returns a sequence of (id, object) tuples.
-
- Like objectValues and objectIds, it accepts one argument,
- either a string or a list to restrict the results to objects
- of a given meta_type or set of meta_types.
-
- Each tuple's first element is the id of an object contained in
- the Object Manager, and the second element is the object
- itself.
-
- Page Template example, without the optional argument::
-
- <span tal:define="items ontext/objectItems">
- <div tal:repeat="item items">
- id: <span tal:replace=python:item[0]">
- type: <span tal:replace="python:item[1].meta_type" />
- </div>
- <span tal:condition="not: repeat/item">
- There are no sub-objects.
- </span>
- </span>
-
- Permission -- 'Access contents information'
-
- 'objectValues(spec=None)'
-
- This method returns a sequence of contained objects.
-
- Like objectItems and objectIds, it accepts one argument,
- either a string or a list to restrict the results to objects
- of a given meta_type or set of meta_types.
-
- Page Template example, restricted to one meta_type::
-
- <div tal:repeat="item python:here.objectValues('Folder')">
- <img tal:replace="item/icon" />
- This is the icon for the: <span tal:replace="item/getId" /> Folder.
- </div>
-
- Python example, restricted to a list of meta_types::
-
- return context.objectValues(['File','Folder'])
-
- Permission -- 'Access contents information'
-
- 'superValues(t)'
-
- This method returns a list of objects of a given meta_type(s)
- contained in the Object Manager and all its parent Object
- Managers.
-
- The required 't' argument specifies the meta_type(s). As with
- the objectItems(), objectIds(), and objectValues() methods, it
- can be a string specifying one meta_type, or it can be a list of
- strings to specify many meta_types.
-
- Permission -- restricted Python only
-
-
-
-module 'PropertyManager'
-
- class 'PropertyManager'
-
- A Property Manager object has a collection of typed attributes
- called properties. Properties can be managed through the Zope
- management interface or programmatically via the PropertyManager
- API.
-
- In addition to having a type, properties can be writable or
- read-only and can have default values.
-
- The PropertyManager mixin class provides an object with
- transparent property management. An object which wants to
- have properties should inherit from PropertyManager.
-
- An object may specify that it has one or more predefined
- properties, by specifying a _properties structure in its
- class::
-
- _properties=({'id':'title', 'type': 'string', 'mode': 'w'},
- {'id':'color', 'type': 'string', 'mode': 'w'},
- )
-
- The _properties structure is a sequence of dictionaries, where
- each dictionary represents a predefined property. Note that if a
- predefined property is defined in the _properties structure, your
- class or instance must provide an attribute with that name
- containing the default value of the predefined property.
-
- Each entry in the _properties structure must have at least an 'id'
- and a 'type' key. The 'id' key contains the name of the property,
- and the 'type' key contains a string representing the object's type.
- The 'type' string must be one of the values: 'boolean', 'float', 'int', 'long',
- 'string', 'lines', 'text', 'date', 'tokens', 'selection', or
- 'multiple section'.
-
- For 'selection' and 'multiple selection' properties, there is an
- addition item in the property dictionay, 'select_variable' which
- provides the name of a property or method which returns a list of
- strings from which the selection(s) can be chosen.
-
- Each entry in the _properties structure may *optionally* provide a
- 'mode' key, which specifies the mutability of the property. The 'mode'
- string, if present, must contain 0 or more characters from the set
- 'w','d'.
-
- A 'w' present in the mode string indicates that the value of the
- property may be changed by the user. A 'd' indicates that the user
- can delete the property. An empty mode string indicates that the
- property and its value may be shown in property listings, but that
- it is read-only and may not be deleted.
-
- Entries in the _properties structure which do not have a 'mode' key
- are assumed to have the mode 'wd' (writeable and deleteable).
-
- To fully support property management, including the system-provided
- tabs and user interfaces for working with properties, an object which
- inherits from PropertyManager should include the following entry in
- its manage_options structure::
-
- {'label':'Properties', 'action':'manage_propertiesForm',}
-
- to ensure that a 'Properties' tab is displayed in its management
- interface. Objects that inherit from PropertyManager should also
- include the following entry in its __ac_permissions__ structure::
-
- ('Manage properties', ('manage_addProperty',
- 'manage_editProperties',
- 'manage_delProperties',
- 'manage_changeProperties',)),
-
- XXX that's the old-school permissions declaration.
-
- 'getProperty(id, d=None)'
-
- Return the value of the property 'id'. If the property is not
- found, the optional second argument or None is returned.
-
- Permission -- 'Access contents information'
-
- 'getPropertyType(id)'
-
- Get the type of property 'id'. Returns None if no such
- property exists.
-
-
- Permission -- 'Access contents information'
-
- 'hasProperty(id)'
-
- Returns a true value if object has the property
- 'id'. Otherwise returns false.
-
- Permission -- 'Access contents information'
-
- 'manage_addProperty(id, value, type, REQUEST=None)'
-
- Add a new property with the iven id, type, and value.
- If a property with that id already exists, BadRequest will
- be raised.
-
-
- 'manage_changeProperties(REQUEST=None, **kw)'
-
- Change existing object properties.
-
- Change object properties by passing either a mapping object
- of name:value pairs, e.g. {'foo':6}, or by
- passing name=value keyword arguments.
- Properties that are not passed will not be changed.
-
- If a given property does not exist, it will be silently ignored.
-
- If a given property is read-only, BadRequest will be raised.
-
- Permission -- 'Change properties'
-
- 'manage_delProperties(ids=None, REQUEST=None)'
-
- Delete one or more properties specified by 'ids',
- or in the REQUEST variable '_ids'.
-
- If any of the specified ids does not exist, BadRequest
- will be raised and all changes will be rolled back.
-
- Permission -- 'Change properties'
-
- 'manage_editProperties(REQUEST)'
-
- Edit object properties via the web. The purpose of this method
- is to change all property values, even those not listed in
- REQUEST; otherwise checkboxes that get turned off will be
- ignored. Use manage_changeProperties() instead for most
- situations.
-
- Permission -- 'Change properties'
-
-
- 'propertyIds()'
-
- Returns a list of property ids.
-
- Permission -- 'Access contents information'
-
- 'propertyItems()'
-
- Return a list of (id, value) tuples.
-
- Permission -- 'Access contents information'
-
- 'propertyLabel(id)'
-
- Return a label for the given property id, defaulting to id.
-
- XXX is this really part of the API?
-
- Permission -- restricted Python only XXX ?
-
- 'propertyMap()'
-
- Returns a tuple of mappings, each iving meta-data for a
- property, but not its value.The meta-data includes
- 'id', 'type', and 'mode'. Example::
-
- >>> app.propertyMap()
- ({'type': 'string', 'id': 'title', 'mode': 'wd'},)
-
-
- Permission -- 'Access contents information'
-
- 'propertyValues()'
-
- Returns a list of property values.
-
- Permission -- 'Access contents information'
-
- 'valid_property_id(id)'
-
- Returns true if 'id' is a legal property id.
-
- Permission -- restricted Python only
-
-
-module 'PropertySheet'
-
- class 'PropertySheet'
-
- A PropertySheet is an abstraction for organizing and working
- with a set of related properties. Conceptually it acts like a
- container for a set of related properties and meta-data describing
- those properties. A PropertySheet may or may not provide a web
- interface for managing its properties.
-
- XXX These are mostly used for ZClasses... are they deprecated??
-
- 'getProperty(id, d=None)'
-
- Get the property 'id', returning the optional second
- argument or None if no such property is found.
-
- Permission -- restricted Python only
-
- 'getPropertyType(id)'
-
- Get the type of property 'id'. Returns None if no such
- property exists.
-
- % Anonymous User - May 22, 2002 7:25 am:
- For ZClasses:
- use as: context.propertysheets.propertysheetname.propertyItems() in Python scripts and as: <dtml-var
- "propertysheets.propertysheetname.propertyItems()"> in DTML, where propertysheetname is the name of the
- property sheet you've defined in the ZClass.
-
- Permission -- restricted Python only
-
- 'hasProperty(id)'
-
- Returns true if 'self' has a property with the given 'id',
- false otherwise.
-
- Permission -- 'Access contents information'
-
- 'manage_addProperty(id, value, type, REQUEST=None)'
-
- Add a new property with the given 'id', 'value' and 'type'.
-
- These are the
- property types:
-
- 'boolean' -- 1 or 0.
-
- 'date' -- A 'DateTime' value, for example '12/31/1999 15:42:52 PST'.
-
- 'float' -- A decimal number, for example '12.4'.
-
- 'int' -- An integer number, for example, '12'.
-
- 'lines' -- A list of strings, one per line.
-
- 'long' -- A long integer, for example '12232322322323232323423'.
-
- 'string' -- A string of characters, for example 'This is a string'.
-
- 'text' -- A multi-line string, for example a paragraph.
-
- 'tokens' -- A list of strings separated by white space, for example
- 'one two three'.
-
- 'selection' -- A string selected by a pop-up menu.
-
- 'multiple selection' -- A list of strings selected by a selection list.
-
- This method will use the passed in 'type' to try to convert
- the 'value' argument to the named type. If the given 'value'
- cannot be converted, a ValueError will be raised.
-
- The value given for 'selection' and 'multiple selection'
- properites may be an attribute or method name. The attribute
- or method must return a sequence values.
-
- If the given 'type' is not recognized, the 'value' and 'type'
- given are simply stored blindly by the object.
-
- If no value is passed in for 'REQUEST', the method will return
- 'None'. If a value is provided for 'REQUEST' (as it will when
- called via the web), the property management form for the
- object will be rendered and returned.
-
- This method may be called via the web, from DTML or from
- Python code.
-
- Permission -- 'Manage Properties'
-
- 'manage_changeProperties(REQUEST=None, **kw)'
-
- Change existing object properties by passing either a mapping
- object as 'REQUEST' containing name:value pairs or by passing
- name=value keyword arguments.
-
- Some objects have "special" properties defined by product
- authors that cannot be changed. If you try to change one of
- these properties through this method, an error will be raised.
-
- Note that no type checking or conversion happens when this
- method is called, so it is the caller's responsibility to
- ensure that the updated values are of the correct type.
- *This should probably change*.
-
- If a value is provided for 'REQUEST' (as it will be when
- called via the web), the method will return an HTML message
- dialog. If no REQUEST is passed, the method returns 'None' on
- success.
-
- This method may be called via the web, from DTML or from
- Python code.
-
- Permission -- 'Manage Properties'
-
- 'manage_delProperties(ids=None, REQUEST=None)'
-
- Delete one or more properties with the given 'ids'. The 'ids'
- argument should be a sequence (tuple or list) containing the
- ids of the properties to be deleted. If 'ids' is empty no
- action will be taken. If any of the properties named in 'ids'
- does not exist, an error will be raised.
-
- Some objects have "special" properties defined by product
- authors that cannot be deleted. If one of these properties is
- named in 'ids', an HTML error message is returned.
-
- If no value is passed in for 'REQUEST', the method will return
- None. If a value is provided for 'REQUEST' (as it will be when
- called via the web), the property management form for the
- object will be rendered and returned.
-
- This method may be called via the web, from DTML or from
- Python code.
-
- Permission -- 'Manage Properties'
-
- 'propertyInfo()'
-
- Returns a mapping containing property meta-data.
-
- Permission -- restricted Python only
-
- 'propertyItems()'
-
- Return a list of (id, property) tuples.
-
- Permission -- 'Access contents information'
-
- 'propertyValues()'
-
- Returns a list of actual property values.
-
- Permission -- 'Access contents information'
-
- 'xml_namespace()'
-
- Return a namespace string usable as an xml namespace
- for this property set. This may be an empty string if
- there is no default namespace for a given property sheet
- (especially property sheets added in ZClass definitions).
-
- Permission -- restricted Python only
-
- 'propertyMap()'
-
- Returns a tuple of mappings, giving meta-data for properties.
-
- Permssion -- restricted Python only
-
- 'propertyIds()'
-
- Returns a list of property ids.
-
- Permission -- 'Access contents information'
-
-module 'PropertySheets'
-
- class 'PropertySheets'
-
- A PropertySheet is an abstraction for organizing and working with
- a set of related properties. Conceptually it acts like a container
- for a set of related properties and meta-data describing those
- properties. PropertySheet objects are accessed through a
- PropertySheets object that acts as a collection of PropertySheet
- instances.
-
- Objects that support property sheets (objects that support the
- PropertyManager interface or ZClass objects) have a
- 'propertysheets' attribute (a PropertySheets instance) that is the
- collection of PropertySheet objects. The PropertySheets object
- exposes an interface much like a Python mapping, so that
- individual PropertySheet objects may be accessed via
- dictionary-style key indexing.
-
- 'get(name, default=None)'
-
- Return the PropertySheet identified by 'name', or the value
- given in 'default' if the named PropertySheet is not found.
-
- Permission -- restricted Python only
-
- 'items()'
-
- Return a sequence containing an '(id, object)' tuple for
- each PropertySheet object in the collection.
-
- Permission -- restricted Python only
-
- 'values()'
-
- Return a sequence of all of the PropertySheet objects
- in the collection.
-
- Permission -- restricted Python only
-
-module 'PythonScripts'
-
- class 'PythonScript(Script)'
-
- XXX When does *traverse_subpath* get set on the request?
- It is a list of any remaining path elements after the currently published
- object.
-
- For example, if an object at /spam/eggs is published but the
- requested path was /spam/eggs/bacon/spam/spam, then
- traverse_subpath = ['bacon', 'spam',
- 'spam'].
-
- XXX
-
- Python Scripts contain python code that gets executed when you call the
- script by:
-
- o Calling the script through the web by going to its location with a
- web browser.
-
- o Calling the script from another script object.
-
- o Calling the script from a method object, such as a DTML Method.
-
- Python Scripts can contain a "safe" subset of the python language.
- Python Scripts must be safe because they can be potentially edited by
- many different users through an insecure medium like the web. The
- following safety issues drive the need for secure Python Scripts:
-
- o Because many users can use Zope, a Python Script must make sure it
- does not allow a user to do something they are not allowed to do,
- like deleting an object they do not have permission to delete.
- Because of this requirement, Python Scripts do many security checks
- in the course of their execution.
-
- o Because Python Scripts can be edited through the insecure medium of
- the web, they are not allowed access to the Zope server's
- file-system. Normal Python builtins like 'open' are, therefore,
- not allowed.
-
- o Because many standard Python modules break the above two security
- restrictions, only a small subset of Python modules may be imported
- into a Python Scripts with the "import" statement unless they have
- been validated by Zope's security policy. Currently, the following
- standard python modules have been validated:
-
- o string
-
- o math
-
- o whrandom and random
-
- o Products.PythonScripts.standard
-
- o Because it allows you to execute arbitrary python code, the python
- "exec" statement is not allowed in Python methods.
-
- o Because they may represent or cause security violations, some
- Python builtin functions are not allowed. The following
- Python builtins are not allowed:
-
- o open
-
- o input
-
- o raw_input
-
- o eval
-
- o execfile
-
- o compile
-
- o type
-
- o coerce
-
- o intern
-
- o dir
-
- o globals
-
- o locals
-
- o vars
-
- o buffer
-
- o reduce
-
- o Other builtins are restricted in nature. The following builtins
- are restricted:
-
- range -- Due to possible memory denial of service attacks, the
- range builtin is restricted to creating ranges less than 10,000
- elements long.
-
- filter, map, tuple, list -- For the same reason, builtins
- that construct lists from sequences do not operate on strings.
-
- getattr, setattr, delattr -- Because these may enable Python
- code to circumvent Zope's security system, they are replaced with
- custom, security constrained versions.
-
- o In order to be consistent with the Python expressions
- available to DTML, the builtin functions are augmented with a
- small number of functions and a class:
-
- o test
-
- o namespace
-
- o render
-
- o same_type
-
- o DateTime
-
- o Because the "print" statement cannot operate normally in this
- context, its effect has been changed. Rather than sending
- text to stdout, "print" appends to an internal variable. The
- special builtin name "printed" evaluates to the concatenation
- of all text printed so far during the current execution of the
- script.
-
- 'ZPythonScriptHTML_editAction(REQUEST, title, params, body)'
-
- Change the script's main parameters. This method accepts the
- following arguments:
-
- REQUEST -- The current request.
-
- title -- The new value of the Python Script's title. This must
- be a string.
-
- params -- The new value of the Python Script's parameters. Must
- be a comma seperated list of values in valid python function
- signature syntax. If it does not contain a valid signature
- string, a SyntaxError is raised.
-
- body -- The new value of the Python Script's body. Must contain
- valid Python syntax. If it does not contain valid Python syntax,
- a SyntaxError is raised.
-
- 'ZPythonScript_edit(params, body)'
-
- Change the parameters and body of the script. This method accepts
- two arguments:
-
- params -- The new value of the Python Script's parameters. Must
- be a comma seperated list of values in valid python function
- signature syntax. If it does not contain a valid signature
- string, a SyntaxError is raised.
-
- body -- The new value of the Python Script's body. Must contain
- valid Python syntax. If it does not contain valid Python syntax,
- a SyntaxError is raised.
-
- 'ZPythonScript_setTitle(title)'
-
- Change the script's title. This method accepts one argument,
- 'title' which is the new value for the script's title and must be a
- string.
-
- 'ZPythonScriptHTML_upload(REQUEST, file="")'
-
- Pass the text in file to the 'write' method.
-
- 'ZScriptHTML_tryParams()'
-
- XXX is the name right?
-
- Return a list of the required parameters with which to
- test the script.
-
-
- 'document_src(REQUEST=None, RESPONSE=None)'
-
- Return the text of the 'read' method, with content type
- 'text/plain' set on the RESPONSE.
-
- 'read()'
-
- Return the body of the Python Script, with a special comment
- block prepended. This block contains meta-data in the form of
- comment lines as expected by the 'write' method.
-
- 'write(text)'
-
- Change the script by parsing the text argument into parts.
- Leading lines that begin with '##' are stripped off, and if
- they are of the form '##name=value', they are used to set
- meta-data such as the title and parameters. The remainder of
- the text is set as the body of the Python Script.
-
-
- ObjectManager Factory
-
- 'manage_addPythonScript(id, REQUEST=None)'
-
- Add a Python script to a folder.
-
- XXX that's incomplete and misleading, you have to do
- manage_addProduct['PythonScripts'].manage_addPythonScript(...)
-
-
-
-module 'Shared.DC.Scripts.Script'
-
- Script module
-
- This provides generic script support.
-
- class 'Script(SimpleItem, BindingsUI)'
-
- Web-callable script base interface.
-
- 'ZScriptHTML_tryAction(REQUEST, argvars)'
-
- Apply the test parameters provided by the dictionary 'argvars'.
- This will call the current script with the given arguments and
- return the result.
-
-module 'SessionInterfaces'
-
- Session API
-
- See Also
-
- - TransientObject
-
- class 'BrowserIdManagerErr'
-
- Error raised during some browser id manager operations, as
- explained in the API documentation of the Browser Id Manager.
-
- This exception may be caught in PythonScripts. A successful
- import of the exception for PythonScript use would need to be::
-
- from Products.Sessions import BrowserIdManagerErr
-
-
- class 'BrowserIdManagerInterface'
-
- Zope Browser Id Manager interface.
-
- A Zope Browser Id Manager is responsible for assigning ids to site
- visitors, and for servicing requests from Session Data Managers
- related to the browser id.
-
- 'encodeUrl(url)'
-
- Encodes a provided URL with the current request's browser id
- and returns the result. For example, the call
- encodeUrl('http://foo.com/amethod') might return
- 'http://foo.com/amethod?_ZopeId=as9dfu0adfu0ad'.
-
- Permission required: Access contents information
-
- Raises: BrowserIdManagerErr. If there is no current browser id.
-
- 'flushBrowserIdCookie()'
-
- Deletes the browser id cookie from the client browser, iff the
- 'cookies' browser id namespace is being used.
-
- Permission required: Access contents information
-
- Raises: BrowserIdManagerErr. If the 'cookies' namespace isn't
- a browser id namespace at the time of the call.
-
- 'getBrowserId(create=1)'
-
- If create=0, returns a the current browser id or None if there
- is no browser id associated with the current request. If create=1,
- returns the current browser id or a newly-created browser id if
- there is no browser id associated with the current request. This
- method is useful in conjunction with getBrowserIdName if you wish to
- embed the browser-id-name/browser-id combination as a hidden value in
- a POST-based form. The browser id is opaque, has no business meaning,
- and its length, type, and composition are subject to change.
-
- Permission required: Access contents information
-
- Raises: BrowserIdManagerErr if ill-formed browser id
- is found in REQUEST.
-
- 'getBrowserIdName()'
-
- Returns a string with the name of the cookie/form variable which is
- used by the current browser id manager as the name to look up when
- attempting to obtain the browser id value. For example, '_ZopeId'.
-
- Permission required: Access contents information
-
- 'hasBrowserId()'
-
- Returns true if there is a browser id for this request.
-
- Permission required: Access contents information
-
- 'isBrowserIdFromCookie()'
-
- Returns true if browser id comes from a cookie.
-
- Permission required: Access contents information
-
- Raises: BrowserIdManagerErr. If there is no current browser id.
-
- 'isBrowserIdFromForm()'
-
- Returns true if browser id comes from a form variable (query
- string or post).
-
- Permission required: Access contents information
-
- Raises: BrowserIdManagerErr. If there is no current browser id.
-
- 'isBrowserIdNew()'
-
- Returns true if browser id is 'new'. A browser id is 'new'
- when it is first created and the client has therefore not sent it
- back to the server in any request.
-
- Permission required: Access contents information
-
- Raises: BrowserIdManagerErr. If there is no current browser id.
-
- 'setBrowserIdCookieByForce(bid)'
-
- Sets the browser id cookie to browser id 'bid' by force.
- Useful when you need to 'chain' browser id cookies across domains
- for the same user (perhaps temporarily using query strings).
-
- Permission required: Access contents information
-
- Raises: BrowserIdManagerErr. If the 'cookies' namespace isn't
- a browser id namespace at the time of the call.
-
- class 'SessionDataManagerErr'
-
- Error raised during some session data manager operations, as
- explained in the API documentation of the Session Data Manager.
-
- This exception may be caught in PythonScripts. A successful
- import of the exception for PythonScript use would need to be::
-
- from Products.Sessions import SessionDataManagerErr
-
- class 'SessionDataManagerInterface'
-
- Zope Session Data Manager interface.
-
- A Zope Session Data Manager is responsible for maintaining Session
- Data Objects, and for servicing requests from application code
- related to Session Data Objects. It also communicates with a Browser
- Id Manager to provide information about browser ids.
-
- 'getBrowserIdManager()'
-
- Returns the nearest acquirable browser id manager.
-
- Raises SessionDataManagerErr if no browser id manager can be found.
-
- Permission required: Access session data
-
- 'getSessionData(create=1)'
-
- Returns a Session Data Object associated with the current
- browser id. If there is no current browser id, and create is true,
- returns a new Session Data Object. If there is no current
- browser id and create is false, returns None.
-
- Permission required: Access session data
-
- 'getSessionDataByKey(key)'
-
- Returns a Session Data Object associated with 'key'. If there is
- no Session Data Object associated with 'key' return None.
-
- Permission required: Access arbitrary user session data
-
- 'hasSessionData()'
-
- Returns true if a Session Data Object associated with the
- current browser id is found in the Session Data Container. Does
- not create a Session Data Object if one does not exist.
-
- Permission required: Access session data
-
-module 'SimpleItem'
-
- class 'Item(Traversable)'
-
- A common base class for simple, non-container objects which can be
- contained within ObjectManagers. Items provide all the methods of
- Traversable.Traversable. In addition, Items have these instance
- attributes:
-
- 'meta_type' -- A short name for the type of the object.
-
- This is the name that shows up in product add list for the
- object and is used when filtering objects by type.
-
- This attribute is provided by the object's class and should
-
- not be changed directly.
-
- 'title' -- The title of the object.
-
- This is an optional one-line string description of the object.
-
- 'REQUEST' -- The current web request.
-
- This object is acquired and should not be set.
- It is an instance of HTTPRequest.HTTPRequest.
-
- 'getId()'
-
- Returns the object's id.
-
- The 'id' is the unique name of the object within its parent
- object manager. This should be a string, and can contain
- letters, digits, underscores, dashes, commas, and spaces.
-
- This method replaces direct access to the 'id' attribute.
-
- Permission -- Always available
-
- 'manage_afterAdd(item, container)'
-
- Hook called after a new instance is added to an ObjectManager.
- In this base class it's a no-op.
-
- *item* is the item being deleted, *container* is the ObjectManager.
-
- Permission -- restricted Python only
-
- 'manage_beforeDelete(item, container)'
-
- Hook called before an instance is removed from an
- ObjectManager. In this base class it's a no-op.
-
- *item* is the item being deleted, *container* is the ObjectManager.
-
- Permission -- restricted Python only
-
- 'manage_afterClone(item)'
-
- Hook called when an object is copied.
- In this base class it's a no-op.
-
- *item* is the original item.
-
- Permission -- restricted Python only
-
- 'manage_workspace()'
-
- This is the web method that is called when a user selects an
- item in a object manager contents view or in the Zope
- Management navigation view.
-
- Permission -- 'View management screens'
-
- 'this()'
-
- Return the object itself.
-
- This turns out to be handy in two situations. First, it
- provides a way to refer to an object in DTML expressions.
-
- The second use for this is rather deep. It provides a way to
- acquire an object without getting the full context that it was
- acquired from. This is useful, for example, in cases where
- you are in a method of a non-item subobject of an item and you
- need to get the item outside of the context of the subobject.
-
- Permission -- Always available
-
-
- 'title_or_id()'
-
- Utility that returns the title if it is not blank and the id
- otherwise.
-
- Permission -- Always available
-
- 'title_and_id()'
-
- Utility that returns the title if it is not blank and the id
- otherwise. If the title is not blank, then the id is included
- in parens.
-
- Permission -- Always available
-
-
- class 'SimpleItem(Item, ...)'
-
- XXX should I list all base classes?
-
- Mix-in class combining the most common set of basic mix-ins
- for persistent Zope objects.
-
- SimpleItem has all the same attributes and methods as Item,
- but inherits from some other mix-in classes to provide
- additional functionality, namely acquisition, persistence,
- and role management.
-
-
-
-module 'TransienceInterfaces'
-
- Transient Objects
-
- class 'MaxTransientObjectsExceeded'
-
- An exception importable from the Products.Transience.Transience module
- which is raised when an attempt is made to add an item to a
- TransientObjectContainer that is 'full'.
-
- This exception may be caught in PythonScripts through a normal import.
- A successful import of the exception can be achieved via::
-
- from Products.Transience import MaxTransientObjectsExceeded
-
- class 'TransientObject'
-
- A transient object is a temporary object contained in a transient
- object container.
-
- Most of the time you'll simply treat a transient object as a
- dictionary. You can use Python sub-item notation::
-
- SESSION['foo']=1
- foo=SESSION['foo']
- del SESSION['foo']
-
- When using a transient object from Python-based Scripts or DTML
- (XXX and zpt?) you can use the 'get', 'set', and 'delete' methods
- instead::
-
- XXX test this
- SESSION.set('foo', 1)
- foo = SESSION.get('foo')
- SESSION.delete('foo')
-
- Methods of transient objects are not protected by security
- assertions.
-
- It's necessary to reassign mutuable sub-items when you change
- them. For example::
-
- l=SESSION['myList']
- l.append('spam')
- SESSION['myList']=l
-
- This is necessary in order to save your changes. Note that this caveat
- is true even for mutable subitems which inherit from the
- Persistence.Persistent class.
-
- 'clear()'
-
- Remove all key/value pairs.
-
- Permission -- Always available
-
- 'delete(k)'
-
- Call __delitem__ with key k. # XXX ugh, explain it for python noobs!
-
- Permission -- Always available
-
- 'get(k, default=marker)'
-
- Return value associated with key k. If k does not exist and default
- is not marker, return default, else raise KeyError.
-
- Permission -- Always available
-
- 'getContainerKey()'
-
- Returns the key under which the object is "filed" in its container.
- getContainerKey will often return a differnt value than the value
- returned by getId.
-
- Permission -- Always available
-
- 'getCreated()'
-
- Return the time the transient object was created in integer
- seconds-since-the-epoch form.
-
- Permission -- Always available
-
- 'getId()'
-
- Returns a meaningful unique id for the object.
-
- Permission -- Always available
-
- 'getLastAccessed()'
-
- Return the time the transient object was last accessed in
- integer seconds-since-the-epoch form.
-
- Permission -- Always available
-
- 'has_key(k)'
-
- Return true if item referenced by key k exists.
-
- Permission -- Always available
-
- 'invalidate()'
-
- Invalidate (expire) the transient object.
-
- Causes the transient object container's "before destruct" method
- related to this object to be called as a side effect.
-
- Permission -- Always available
-
- 'items()'
-
- Return sequence of (key, value) elements.
-
- Permission -- Always available
-
- 'keys()'
-
- Return sequence of key elements.
-
- Permission -- Always available
-
- 'set(k, v)'
-
- Call __setitem__ with key k, value v.
-
- Permission -- Always available
-
- 'setLastAccessed()'
-
- Cause the last accessed time to be set to now.
-
- Permission -- Always available
-
- 'update(d)'
-
- Merge dictionary d into ourselves.
-
- Permission -- Always available
-
- 'values()'
-
- Return sequence of value elements.
-
- Permission -- Always available
-
- class 'TransientObjectContainer'
-
- TransientObjectContainers hold transient objects, most often,
- session data.
-
- You will rarely have to script a transient object
- container. You'll almost always deal with a TransientObject
- itself which you'll usually get as 'REQUEST.SESSION'.
-
- % Anonymous User - Dec. 31, 2003 11:27 am:
- but help! sometimes you might want to script one. How should you create a transient object container from
- within a script?
-
- 'get(k, default=None)'
-
- Return value associated with key k. If value associated with k does
- not exist, return default.
-
- Permission -- 'Access Transient Objects'
-
- 'getAddNotificationTarget()'
-
- Returns the current 'after add' function, or None.
-
- Permission -- 'View management screens'
-
- 'getDelNotificationTarget()'
-
- Returns the current 'before destruction' function, or None.
-
- Permission -- 'View management screens'
-
- 'getId()'
-
- Returns a meaningful unique id for the object.
-
- Permission -- Always available
-
- 'getTimeoutMinutes()'
-
- Return the number of minutes allowed for subobject inactivity
- before expiration.
-
- Permission -- 'View management screens'
-
- 'has_key(k)'
-
- Return true if container has value associated with key k, else
- return false.
-
- Permission -- 'Access Transient Objects'
-
- 'new(k)'
-
- Creates a new subobject of the type supported by this container
- with key "k" and returns it.
-
- If an object already exists in the container with key "k", a
- KeyError is raised.
-
- "k" must be a string, else a TypeError is raised.
-
- If the container is 'full', a MaxTransientObjectsExceeded will
- be raised.
-
- Permission -- 'Create Transient Objects'
-
- 'new_or_existing(k)'
-
- If an object already exists in the container with key "k", it
- is returned.
-
- Otherwiser, create a new subobject of the type supported by this
- container with key "k" and return it.
-
- "k" must be a string, else a TypeError is raised.
-
- If the container is 'full', a MaxTransientObjectsExceeded exception
- be raised.
-
- Permission -- 'Create Transient Objects'
-
- 'setAddNotificationTarget(f)'
-
- Cause the 'after add' function to be 'f'.
-
- If 'f' is not callable and is a string, treat it as a Zope path to
- a callable function.
-
- 'after add' functions need accept a single argument: 'item', which
- is the item being added to the container.
-
- Permission -- 'Manage Transient Object Container'
-
- 'setDelNotificationTarget(f)'
-
- Cause the 'before destruction' function to be 'f'.
-
- If 'f' is not callable and is a string, treat it as a Zope path to
- a callable function.
-
- 'before destruction' functions need accept a single argument: 'item',
- which is the item being destroyed.
-
- Permission -- 'Manage Transient Object Container'
-
- 'setTimeoutMinutes(timeout_mins)'
-
- Set the number of minutes of inactivity allowable for subobjects
- before they expire.
-
- Permission -- 'Manage Transient Object Container'
-
-
-module 'Traversable'
-
- Traversable objects.
-
- class 'Traversable'
-
- This class is a mix-in for traversable objects. Most persistent
- Zope objects are Traversable (usually indirectly, via Item or
- SimpleItem).
-
- 'absolute_url(relative=0)'
-
- Return the absolute URL of the object.
-
- This is a canonical URL based on the object's physical
- containment path and the current virtual hosting configuration,
- if any. The result can be reliably used by external agents,
- such as a browser, to address the object.
-
- If the 'relative' argument is provided, with a true value, then
- the value of virtual_url_path() is returned. This usage
- is being deprecated in favor of virtual_url_path().
-
- Some Products incorrectly use '/'+absolute_url(1) as an
- absolute-path reference (see RFC 2396). This breaks in
- "inside-out" virtual hosting situations, as described in
- the VirtualHostMonster documentation.
- Use absolute_url_path() for this purpose instead.
-
- Some Products also use absolute_url(1) to identify
- objects for retrieval via (un)restrictedTraverse().
- This usage too is incorrect, as (un)restrictedTraverse()
- may not understand the virtual hosting portion of the path.
- Use getPhysicalPath() instead.
-
- Permission -- Always available
-
-
- 'absolute_url_path()'
-
- Return the path portion of the absolute URL of the object.
-
- This includes the leading slash, and can be used as an
- 'absolute-path reference' as defined in RFC 2396.
- It is safe for user agents in all virtual hosting
- configurations.
-
- Should not be used with (un)restrictedTraverse().
-
- Permission -- Always available
-
-
- 'getPhysicalPath()'
-
- Returns a path (an immutable sequence of strings)
- that can be used to access this object again
- later, for example in a copy/paste operation.
- getPhysicalRoot() and getPhysicalPath() are designed to operate
- together. Also works reliably with (un)restrictedTraverse().
-
- Permission -- Always available
-
- 'getPhysicalRoot()'
-
- Returns the top-level Zope Application object.
-
- Permission -- restricted Python only
-
- 'restrictedTraverse(path, default=_marker)'
-
- Like unrestrictedTraverse, but performs security checks as each
- object along the path is encountered.
-
- Permission -- Always available
-
- 'unrestrictedTraverse(path, default=_marker, restricted=0)'
-
- Lookup an object by path.
-
- *path* -- The path to the object. May be a sequence of strings
- or a slash-separated string. If the path begins with an empty
- path element (i.e., an empty string or a slash) then the lookup
- is performed from the application root. Otherwise, the lookup is
- relative to self. Two dots (..) as a path element indicates an
- upward traversal to the acquisition parent.
-
- *default* -- If provided, this is the value returned if the path cannot
- be traversed for any reason (i.e., no object exists at that path or
- the object is inaccessible).
-
- *restricted* -- If false (default) then no security checking is
- performed. If true, then all of the objects along the path are
- validated with the security machinery. Usually invoked using
- restrictedTraverse().
-
- Permission -- restricted Python only
-
- 'virtual_url_path()'
-
- Return a URL for the object, relative to the site root.
-
- If a virtual host is configured, the URL is a path relative to
- the virtual host's root object. Otherwise, it is the physical
- path. In either case, the URL does not begin with a slash.
-
- Permission -- Always available
-
-module 'User'
-
- class 'BasicUser'
-
- This abstract class represents an interface that needs to be
- supported by objects that are returned by user validation and used
- for access control.
-
- For example, the user objects returned by SecurityManager.getUser().
-
- 'getDomains()'
-
- Return the list of domain restrictions for a user.
-
- Permission -- Always available
-
- 'getId()'
-
- Get the ID of the user. The ID can be used, at least from
- restricted Python, to get the user from the user's UserFolder.
-
- Permission -- Always available
-
- 'getRoles()'
-
- Return the list of roles assigned to a user.
-
- Permission -- Always available
-
-
- 'getRolesInContext(object)'
-
- Return the list of roles assigned to the user, including local
- roles assigned in context of the passed in object.
-
- Permission -- Always available
-
- 'getUserName()'
-
- Return the name of a user
-
- Permission -- Always available
-
- 'has_permission(permission, object)'
-
- Return true if the user has *permission* on *object*.
-
- Permission -- Always available
-
- 'has_role(roles, object=None)'
-
- Return true if the user has at least one role from the given
- list of *roles*, optionally in the context of *object*.
-
- Permission -- Always available
-
- class 'UserFolder'
-
- User Folder objects are containers for user objects. Programmers
- can work with collections of user objects using the API shared by
- User Folder implementations.
-
- 'maxlistusers'
-
- The number of users in the folder above which Role assignment
- presents a search dialog. Default is 250. (integer)
-
- 'encrypt_passwords'
-
- If the encrypt_passwords attribute is True, all additions and
- edits of users in the folder will encrypt the password before
- saving to the database. (boolean)
-
- 'getUser(name)'
-
- Return the named user object or None.
-
- Permission -- Manage users
-
- 'getUsers()'
-
- Returns a sequence of all user objects which reside in the user
- folder.
-
- Permission -- Manage users
-
- 'getUserNames()'
-
- Returns a sequence of names of the users which reside in the user
- folder.
-
- Permission -- Manage users
-
- 'userFolderAddUser(name, password, roles, domains, **kw)'
-
- API method for creating a new user object. Note that not all
- user folder implementations support dynamic creation of user
- objects. Implementations that do not support dynamic creation
- of user objects will raise NotImplementedError for this method.
-
- Arguments:
-
- *name* -- The name of the new user object (string).
-
- *password* -- The name of the new user object (string).
-
- *roles* -- The roles assigned to the new user object. (tuple or list)
-
- *domains* -- Optionally allows you to restrict the Internet domains
- from which the user can log in. (tuple or list)
-
- *kw* -- This argument allows for implementations to accept additional
- parameters. It is not used in the default implementation.
-
- Permission -- Manage users
-
- 'userFolderEditUser(name, password, roles, domains, **kw)'
-
- API method for changing user object attributes. Note that not
- all user folder implementations support changing of user object
- attributes. Implementations that do not support changing of user
- object attributes will raise NotImplementedError for this method.
-
- Arguments:
-
- *name* -- The name of the new user object (string).
-
- *password* -- The name of the new user object (string).
-
- *roles* -- The roles assigned to the new user object. (tuple or list)
-
- *domains* -- Optionally allows you to restrict the Internet domains
- from which the user can log in. (tuple or list)
-
- *kw* -- This argument allows for implementations to accept additional
- parameters. It is not used in the default implementation.
-
- Permission -- Manage users
-
- 'userFolderDelUsers(names)'
-
- API method for deleting one or more user objects. Note that not
- all user folder implementations support deletion of user objects.
- Implementations that do not support deletion of user objects
- will raise NotImplementedError for this method.
-
- Arguments:
-
- *names* -- The names of the user objects to delete (tuple or list).
-
- Permission -- Manage users
-
-module 'Vocabulary'
-
- class 'Vocabulary'
-
- A Vocabulary manages words and language rules for text indexing.
- Text indexing is done by the ZCatalog and other third party
- Products.
-
- 'insert(word)'
-
- Insert a word in the Vocabulary.
-
- 'query(pattern)'
-
- Query Vocabulary for words matching pattern.
-
- 'words()'
-
- Return list of words.
-
- ObjectManager Factory
-
- 'manage_addVocabulary(id, title, globbing=None, REQUEST=None)'
-
- Add a Vocabulary object to an ObjectManager.
-
-module 'ZCatalog'
-
- class 'ZCatalog'
-
- ZCatalog object
-
- A ZCatalog contains arbitrary index like references to Zope
- objects. ZCatalog's can index either 'Field' values of object,
- 'Text' values, or 'KeyWord' values:
-
- ZCatalogs have three types of
- indexes:
-
- Text -- Text indexes index textual content. The index can be
- used to search for objects containing certain words.
-
- Field -- Field indexes index atomic values. The index can be
- used to search for objects that have certain properties.
-
- Keyword -- Keyword indexes index sequences of values. The index
- can be used to search for objects that match one or more of the
- search terms.
-
- XXX there are more types now!!!
-
- The ZCatalog can maintain a table of extra data about cataloged
- objects. This information can be used on search result pages to
- show information about a search result.
-
- The meta-data table schema is used to build the schema for
- ZCatalog Result objects. The objects have the same attributes
- as the column of the meta-data table.
-
- ZCatalog does not store references to the objects themselves, but
- rather to a unique identifier that defines how to get to the
- object. In Zope, this unique identifier is the object's relative
- path to the ZCatalog (since two Zope objects cannot have the same
- URL, this is an excellent unique qualifier in Zope).
-
- '__call__(REQUEST=None, **kw)'
-
- Search the catalog, the same way as 'searchResults'.
-
- 'catalog_object(obj, uid)'
-
- Catalogs the object 'obj' with the unique identifier 'uid'.
-
- 'getobject(rid, REQUEST=None)'
-
- Return a cataloged object given a 'data_record_id_'
-
- % Anonymous User - June 2, 2004 8:56 pm:
- What about getObject()
-
- 'getpath(rid)'
-
- Return the path to a cataloged object given a
- 'data_record_id_'
-
- 'index_objects()'
-
- Returns a sequence of actual index objects.
-
- 'indexes()'
-
- Returns a sequence of names that correspond to indexes.
-
- 'schema()'
-
- Returns a sequence of names that correspond to columns in the
- meta-data table.
-
- 'searchResults(REQUEST=None, **kw)'
-
- Search the catalog. Search terms can be passed in the REQUEST
- or as keyword arguments.
-
- Search queries consist of a mapping of index names to search
- parameters. You can either pass a mapping to searchResults as
- the variable 'REQUEST' or you can use index names and search
- parameters as keyword arguments to the method, in other words::
-
- searchResults(title='Elvis Exposed',
- author='The Great Elvonso')
-
- is the same as::
-
- searchResults({'title' : 'Elvis Exposed',
- 'author' : 'The Great Elvonso'})
-
-
- In these examples, 'title' and 'author' are indexes. This
- query will return any objects that have the title *Elvis
- Exposed* AND also are authored by *The Great Elvonso*. Terms
- that are passed as keys and values in a searchResults() call
- are implicitly ANDed together. To OR two search results, call
- searchResults() twice and add concatenate the results like this::
-
- results = ( searchResults(title='Elvis Exposed') +
- searchResults(author='The Great Elvonso') )
-
- This will return all objects that have the specified title OR
- the specified author.
-
- There are some special index names you can pass to change the
- behavior of the search query:
-
- sort_on -- This parameters specifies which index to sort the
- results on.
-
- sort_order -- You can specify 'reverse' or 'descending'.
- Default behavior is to sort ascending.
-
- There are some rules to consider when querying this method:
-
- - an empty query mapping (or a bogus REQUEST) returns all
- items in the
- catalog.
-
- - results from a query involving only field/keyword
- indexes, e.g. {'id':'foo'} and no 'sort_on' will be
- returned unsorted.
-
- - results from a complex query involving a field/keyword
- index *and* a text index,
- e.g. {'id':'foo','PrincipiaSearchSource':'bar'} and no
- 'sort_on' will be returned unsorted.
-
- - results from a simple text index query
- e.g.{'PrincipiaSearchSource':'foo'} will be returned
- sorted in descending order by 'score'. A text index
- cannot beused as a 'sort_on' parameter, and attempting
- to do so will raise an error.
-
- Depending on the type of index you are querying, you may be
- able to provide more advanced search parameters that can
- specify range searches or wildcards. These features are
- documented in The Zope Book.
-
- 'uncatalog_object(uid)'
-
- Uncatalogs the object with the unique identifier 'uid'.
-
- 'uniqueValuesFor(name)'
-
- returns the unique values for a given FieldIndex named 'name'.
-
- ObjectManager Factory
-
- 'manage_addZCatalog(id, title, vocab_id=None)'
-
- Add a ZCatalog object.
-
- 'vocab_id' is the name of a Vocabulary object this catalog should
- use. A value of None will cause the Catalog to create its own
- private vocabulary.
-
-module 'ZSQLMethod'
-
- class 'ZSQLMethod'
-
- ZSQLMethods abstract SQL code in Zope.
-
- SQL Methods behave like methods of the folders they are
- accessed in. In particular, they can be used from other
- methods, like Documents, ExternalMethods, and even other SQL
- Methods.
-
- Database methods support the Searchable Object Interface.
- Search interface wizards can be used to build user
- interfaces to them. They can be used in joins and
- unions. They provide meta-data about their input parameters
- and result data.
-
- For more information, see the searchable-object interface
- specification. XXX where is that??
-
- Database methods support URL traversal to access and invoke
- methods on individual record objects. For example, suppose you
- had an 'employees' database method that took a single argument
- 'employee_id'. Suppose that employees had a 'service_record'
- method (defined in a record class or acquired from a
- folder). The 'service_record' method could be accessed with a
- URL like::
-
- employees/employee_id/1234/service_record
-
- Search results are returned as Record objects. The schema of
- a Record objects matches the schema of the table queried in
- the search.
-
- 'manage_edit(title, connection_id, arguments, template)'
-
- Change database method properties.
-
- The 'connection_id' argument is the id of a database
- connection that resides in the current folder or in a folder
- above the current folder. The database should understand SQL.
-
- The 'arguments' argument is a string containing an arguments
- specification, as would be given in the SQL method creation
- form.
-
- The 'template' argument is a string containing the source for
- the SQL Template.
-
- '__call__(REQUEST=None, **kw)'
-
- Call the ZSQLMethod.
-
- The arguments to the method should be passed via keyword
- arguments, or in a single mapping object. If no arguments are
- given, and if the method was invoked through the Web, then the
- method will try to acquire and use the Web REQUEST object as
- the argument mapping.
-
- The returned value is a sequence of record objects.
-
- ObjectManager Factory
-
- 'manage_addZSQLMethod(id, title, connection_id, arguments, template)'
-
- Add an SQL Method to an ObjectManager.
-
- The 'connection_id' argument is the id of a database connection
- that resides in the current folder or in a folder above the
- current folder. The database should understand SQL.
-
- The 'arguments' argument is a string containing an arguments
- specification, as would be given in the SQL method cration form.
-
- The 'template' argument is a string containing the source for the
- SQL Template.
-
-module 'ZTUtils'
-
- ZTUtils: Page Template Utilities
-
- The classes in this module are available from Page Templates.
-
- class 'Batch'
-
- Batch - a section of a large sequence.
-
- You can use batches to break up large sequences (such as search
- results) over several pages.
-
- Batches provide Page Templates with similar functions as those
- built-in to '<dtml-in>'.
-
- You can access elements of a batch just as you access elements of
- a list. For example::
-
- >>> b=Batch(range(100), 10)
- >>> b[5]
- 4
- >>> b[10]
- IndexError: list index out of range
-
- Batches have these public attributes:
-
- start -- The first element number (counting from 1).
-
- first -- The first element index (counting from 0). Note that this
- is that same as start - 1.
-
- end -- The last element number (counting from 1).
-
- orphan -- The desired minimum batch size. This controls how
- sequences are split into batches. If a batch smaller than the
- orphan size would occur, then no split is performed, and a batch
- larger than the batch size results.
-
- overlap -- The number of elements that overlap between batches.
-
- length -- The actual length of the batch. Note that this can be
- different than size due to orphan settings.
-
- size -- The desired size. Note that this can be different than the
- actual length of the batch due to orphan settings.
-
- previous -- The previous batch or None if this is the first batch.
-
- next -- The next batch or None if this is the last batch.
-
- '__init__(sequence, size, start=0, end=0, orphan=0, overlap=0)'
-
- Creates a new batch given a sequence and a desired batch
- size.
-
- sequence -- The full sequence.
-
- size -- The desired batch size.
-
- start -- The index of the start of the batch (counting from 0).
-
- end -- The index of the end of the batch (counting from 0).
-
- orphan -- The desired minimum batch size. This controls how
- sequences are split into batches. If a batch smaller than the
- orphan size would occur, then no split is performed, and a
- batch larger than the batch size results.
-
- overlap -- The number of elements that overlap between
- batches.
-
-
-module 'math'
-
- math: Python 'math' module
-
- The 'math' module provides trigonometric and other math
- functions.
-
- This module is documented in the standard Python library
- documentation. Make sure to consult the documentation
- for your Python version, since Zope requires very specific
- versions of Python; e.g. Zope 2.7 requires Python 2.3.
-
- See Also
-
- "Python 'math' module":http://www.python.org/doc/current/lib/module-math.html
- documentation at Python.org
-
-
-module 'random'
-
- random: Python 'random' module
-
- The 'random' module provides pseudo-random number functions. With
- it, you can generate random numbers and select random elements from
- sequences.
-
- This module is documented in the standard Python library
- documentation. Make sure to consult the documentation
- for your Python version, since Zope requires very specific
- versions of Python; e.g. Zope 2.7 requires Python 2.3.
-
-
- See Also
-
- "Python 'random' module":http://www.python.org/doc/current/lib/module-random.html
- documentation at Python.org
-
-
-module 'sequence'
-
- sequence: Sequence sorting module
-
- This module provides a 'sort' function for use with DTML, Page
- Templates, and Python-based Scripts.
-
- function 'sort(seq, sort, _=None, mapping=0)'
-
- Sort the sequence *seq* of objects by the optional sort schema
- *sort*.
-
- *sort* is a sequence of tuples '(key, func, direction)'
- that describe the sort order.
-
- key -- Attribute of the object to be sorted. If callable,
- it will be called.
-
- func -- Defines the compare function (optional). Allowed values:
-
- "cmp" -- Standard Python comparison function
-
- "nocase" -- Case-insensitive comparison
-
- "strcoll" or "locale" -- Locale-aware string comparison
-
- "strcoll_nocase" or "locale_nocase" -- Locale-aware
- case-insensitive string comparison
-
- other -- A specified, user-defined comparison function, should
- return 1, 0, -1.
-
- direction -- defines the sort direction for the key (optional).
- (allowed values: "asc", "desc")
-
- The *_* argument is an optional namespace in which to look up sort
- functions.
-
- *mapping* is an optional boolean argument that toggles whether to treat
- the sequunce as a sequence of dictionaries (off by default).
-
- DTML Examples
-
- Sort child object (using the 'objectValues' method) by id (using
- the 'getId' method), ignoring case::
-
- <dtml-in expr="_.sequence.sort(objectValues(),
- (('getId', 'nocase'),))">
- <dtml-var getId> <br>
- </dtml-in>
-
- Sort child objects by title (ignoring case) and date (from newest
- to oldest)::
-
- <dtml-in expr="_.sequence.sort(objectValues(),
- (('title', 'nocase'),
- ('bobobase_modification_time',
- 'cmp', 'desc')
- ))">
- <dtml-var title> <dtml-var bobobase_modification_time> <br>
- </dtml-in>
-
-
- Page Template Examples
-
- You can use the 'sequence.sort' function in Python expressions
- to sort objects. Here's an example that mirrors the DTML example
- above::
-
- <table tal:define="objects here/objectValues;
- sort_on python:(('title', 'nocase', 'asc'),
- ('bobobase_modification_time', 'cmp', 'desc'));
- sorted_objects python:sequence.sort(objects, sort_on)">
- <tr tal:repeat="item sorted_objects">
- <td tal:content="item/title">title</td>
- <td tal:content="item/bobobase_modification_time">
- modification date</td>
- </tr>
- </table>
-
- This example iterates over a sorted list of objects, drawing a
- table row for each object. The objects are sorted by title and
- modification time.
-
-
- See Also
-
- "Python cmp function":http://www.python.org/doc/lib/built-in-funcs.html
-
-module 'standard'
-
- Products.PythonScripts.standard: Utility functions and classes
-
- The functions and classes in this module are available from
- Python-based scripts, DTML, and Page Templates.
-
- Example of accessing a function from a Script (Python):
-
- from Products.PythonScripts import standard
- return standard.structured_text('this is some *italic text*')
-
- Example of accessing a function from ZPT::
-
- <p tal:define="t_c python:modules['Products'].PythonScripts.standard.thousands_commas"
- tal:content="python:t_c(123456789)"> formatted number goes here </p>
-
-
- or (slightly better)
-
- <p tal:define="t_c nocall:modules/Products/PythonScripts/standard/thousands_commas"
- tal:content="python:t_c(123456789)"> formatted number goes here </p>
-
-
-
- class 'DTML'
-
- DTML - temporary, security-restricted DTML objects
-
- '__init__(source, **kw)'
-
- Create a DTML object with source text and keyword
- variables. The source text defines the DTML source
- content. The optinal keyword arguments define variables.
-
- 'call(client=None, REQUEST={}, **kw)'
-
- Render the DTML.
-
- To accomplish its task, DTML often needs to resolve various
- names into objects. For example, when the code <dtml-var
- spam> is executed, the DTML engine tries to resolve the
- name 'spam'.
-
- In order to resolve names, you must be pass a namespace to the
- DTML. This can be done several ways:
-
- * By passing a 'client' object - If the argument 'client' is
- passed, then names are looked up as attributes on the
- argument.
-
- * By passing a 'REQUEST' mapping - If the argument 'REQUEST'
- is passed, then names are looked up as items on the
- argument. If the object is not a mapping, an TypeError
- will be raised when a name lookup is attempted.
-
- * By passing keyword arguments -- names and their values can
- be passed as keyword arguments to the Method.
-
- The namespace given to a DTML object is the composite of these
- three methods. You can pass any number of them or none at
- all. Names will be looked up first in the keyword argument,
- next in the client and finally in the mapping.
-
-
- function 'dollars_and_cents(number)'
-
- Show a numeric value as a string with a dollar symbol and two
- decimal places.
-
-
- function 'html_quote(s)'
-
- Convert characters that have special meaning in HTML to HTML
- character entities.
-
- See Also
-
- "Python 'cgi' module":http://www.python.org/doc/lib/module-cgi.html
- 'escape' function.
-
- function 'newline_to_br(s)'
-
- Convert newlines and carriage-return and newline combinations to
- break tags.
-
- function 'restructured_text(s)'
-
- Convert a string in reStructuredText format to HTML.
-
- See Also
-
- "reStructuredText documentation":http://docutils.sourceforge.net/rst.html
-
-
- function 'sql_quote(s)'
-
- Convert single quotes to pairs of single quotes. This is needed to
- safely include values in Standard Query Language (SQL) strings.
-
- attribute 'special_formats'
-
- A mapping of format names to functions in this module.
- For example, 'structured-text' maps to structured_text().
-
-
- function 'structured_text(s)'
-
- Convert a string in structured-text format to HTML.
-
- See Also
-
- "Structured-Text Rules":http://dev.zope.org/Members/jim/StructuredTextWiki/StructuredTextNGRules
-
- function 'thousands_commas(number)'
-
- Insert commas every three digits to the left of a decimal point in
- values containing numbers. For example, the value, "12000
- widgets" becomes "12,000 widgets".
-
-
- function 'urlencode(query)'
-
- Convert a mapping object or a sequence of two-element tuples to a
- "url-encoded" query string.
-
- See Also
-
- "Python 'urllib' module":http://www.python.org/doc/current/lib/module-urllib.html
- 'urlencode' function.
-
-
-
-
- function 'url_quote(s)'
-
- Convert characters that have special meaning in URLS to HTML
- character entities using decimal values.
-
- See Also
-
- "Python 'urllib' module":http://www.python.org/doc/current/lib/module-urllib.html
- 'url_quote' function.
-
-
- function 'url_quote_plus(s)'
-
- Like url_quote but also replace blank space characters with
- '+'. This is needed for building query strings in some cases.
-
- See Also
-
- "Python 'urllib' module":http://www.python.org/doc/current/lib/module-urllib.html
- 'url_quote_plus' function.
-
-
- function 'url_unquote(s)'
-
- Convert HTML character entities in strings
- back to their real values.
-
- See Also
-
- "Python 'urllib' module":http://www.python.org/doc/current/lib/module-urllib.html
- 'url_unquote' function.
-
-
- function 'url_unquote_plus(s)'
-
- Like url_unquote, but also replace '+' characters with spaces.
-
- See Also
-
- "Python 'urllib' module":http://www.python.org/doc/current/lib/module-urllib.html
- 'url_unquote_plus' function.
-
-
- function 'whole_dollars(number)'
-
- Show a numeric (int or float) value with a dollar symbol.
-
-
-
-module 'string'
-
- string: Python 'string' module
-
- The 'string' module provides string manipulation, conversion, and
- searching functions. It is a standard Python module.
-
- This module is provided for backwards compatibility, but since
- Python 2.0, it has become increasingly common to use the
- equivalent methods of string objects instead. These methods are
- listed in the Python standard library reference.
-
- This module is documented in the standard Python library
- documentation. Make sure to consult the documentation
- for your Python version, since Zope requires very specific
- versions of Python; e.g. Zope 2.7 requires Python 2.3.
-
- See Also
-
- "Python 'string' methods":http://docs.python.org/lib/string-methods.html
- documentation at Python.org
-
- "Python 'string' module":http://www.python.org/doc/current/lib/module-string.html
- documentation at Python.org
Modified: zope2book/trunk/TODO.txt
===================================================================
--- zope2book/trunk/TODO.txt 2009-02-16 21:13:59 UTC (rev 96607)
+++ zope2book/trunk/TODO.txt 2009-02-16 21:30:29 UTC (rev 96608)
@@ -29,3 +29,9 @@
- This uses ../Figures/zopearchitecture.gif which still includes ZClasses and
should replace the `Products` naming with a more general packages.
+AppendixB.rst
+=============
+
+- This was the manually maintained API documentation. Horribly outdated and
+ with all the formatting impossible to convert from stx in an automated way.
+
Added: zope2book/trunk/source/AppendixB.rst
===================================================================
--- zope2book/trunk/source/AppendixB.rst (rev 0)
+++ zope2book/trunk/source/AppendixB.rst 2009-02-16 21:30:29 UTC (rev 96608)
@@ -0,0 +1,27 @@
+Appendix B: API Reference
+#########################
+
+Introduction
+============
+
+This reference describes the interfaces to the most common set of basic Zope
+objects. This reference is useful while writing Page Templates, DTML, Python
+scripts, and Product code.
+
+The intended audience is able to read simple Python code and has at least
+passing experience with object-oriented programming.
+
+The reference is not a tutorial. Nor is it a substitute for reading the rest of
+the Zope Book. Examples, where they are provided, are intended to be
+illustrative, but not comprehensive.
+
+Sorry
+=====
+
+The manually maintained API reference wasn't such a good idea.
+
+Converting it from the original source of structured text to reStructuredText
+was too much work to be done. We will look into auto-generating the API
+documentation from docstrings at some point.
+
+Reading the code is your best bet for now.
Property changes on: zope2book/trunk/source/AppendixB.rst
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: zope2book/trunk/source/index.rst
===================================================================
--- zope2book/trunk/source/index.rst 2009-02-16 21:13:59 UTC (rev 96607)
+++ zope2book/trunk/source/index.rst 2009-02-16 21:30:29 UTC (rev 96608)
@@ -35,6 +35,7 @@
ZEO.rst
MaintainingZope.rst
AppendixA.rst
+ AppendixB.rst
AppendixD.rst
AppendixE.rst
Contributions.rst
More information about the Checkins
mailing list