Deutsche Zope User Group
Gast 2 Benutzer online
DZUG-News

Zopebuch: Inhaltsverzeichnis 

Diese Referenz beschreibt die Schnittstellen der wichtigsten Zope-Objekte. Die Referenz ist vor allem nützlich, wenn Sie DTML-, Perl- und Python-Skripte schreiben, die Zope-Objekte erstellen und verändern.

Modul AccessControl

AccessControl: Sicherheitsfunktionen und -Klassen

Die Funktionen und Klassen dieses Moduls können in Python-basierenden Skripten und Seitenvorlagen verwendet werden.

Klasse SecurityManager

Ein Sicherheitsmanager (SecurityManager) stellt Methoden bereit, mit denen Zugriffe kontrolliert und ausführbare Inhalte sowie Richtlinien verwaltet werden können.

calledByExecutable(self)

Gibt einen Boolean zurück, der anzeigt, ob dieser Kontext von einer ausführbaren Datei aufgerufen wurde.

Berechtigung:
Steht immer zur Verfügung.

validate(accessed=None, container=None, name=None, value=None, roles=None)

Validiert den Zugriff.

Argumente:

accessed
Das Objekt, auf das zugegriffen wurde
container
Das Objekt, in dem der Wert gefunden wurde
name
Der Name, mit dem auf den Wert zugegriffen wurde
value
Der Wert, der durch den Zugriff erhalten wurde.
roles
Die Rollen des Objektes falls bereits bekannt.

Die Argumente können als Schlüsselargumente übergeben werden. Einige der Argumente können vernachlässigt werden, jedoch kann die Sicherheitsrichtlinie in einigen Fällen den Zugriff verweigern, wenn Argumente vernachlässigt werden. Es ist daher am besten, alle Werte, die bekannt sind, anzugeben

Berechtigung:
Steht immer zur Verfügung.

checkPermission(self, permission, object)

Überprüft, ob der Sicherheitskontexts die gegebene Erlaubnis im Zusammenhang mit dem gegebenen Objekt erlaubt.

Berechtigung:
Steht immer zur Verfügung.

getUser(self)

Gibt den aktuellen authentifizierten Benutzer zurück. Bitte beachten Sie hierzu auch die AuthenticatedUser-Klasse.

Berechtigung:
Steht immer zur Verfügung.

validateValue(self, value, roles=None)

Ausreichend für gänige Fälle der Wert-Validierung.

Berechtigung:
Steht immer zur Verfügung.

def getSecurityManager()

Gibt den Security-Manager zurück. Bitte beachten Sie hierzu auch die SecurityManager-Klass.

Modul AuthenticatedUser

Klasse AuthenticatedUser

Diese Schnittstelle muss von Objekten unterstützt werden, die durch Benutzer-Validierung zurückgegeben und für die Zugriffskontrolle benutzt werden.

getUserName()

Gibt den Namen eines Benutzers zurück.

Berechtigung:
Steht immer zur Verfügung.

getId()

Gibt die ID des Benutzers zurück. Die ID kann von Python benutzt werden, um Benutzer aus der UserDatabase auszulesen.

Berechtigung:
Steht immer zur Verfügung.

has_role(roles, object=None)

Gibt true zurück, wenn der Benutzer mindestens eine Rolle aus einer Liste von Rollen hat, optinal im Kontext eines Objekts.

Berechtigung:
Steht immer zur Verfügung.

getRoles()

Gibt eine Liste mit den Rollen des Benutzers zurück.

Berechtigung:
Steht immer zur Verfügung.

has_permission(permission, object)

Gibt true zurück, wenn der User Rechte am Objekt hat.

Berechtigung:
Steht immer zur Verfügung.

getRolesInContext(object)

Gibt die Liste der Rollen zurück, die dem Benutzer zugeschrieben sind, inklusive lokaler Rollen, die ihm im Kontext eines Objekts zugeschrieben sind.

Berechtigung:
Steht immer zur Verfügung.

getDomains()

Gibt die Liste der Domain-Einschränkungen für einen Benutzer zurück.

Berechtigung:
Steht immer zur Verfügung.

Modul DTMLDocument

Klasse DTMLDocument(ObjectManagerItem, PropertyManager)

Ein DTML-Dokument ist ein Zope-Objekt, das DTML beinhaltet und ausführt. Es ist nützlich, um Webseiten darzustellen.

manage_edit(data, title)

Ändert das DTML-Dokument, indem es seinen Inhalt mit data ersetzt und seinen Titel ändert.

Das data-Argument kann eine Datei oder ein String sein.

Berechtigung:
DTML-Dokumente verändern

document_src()

Gibt den ungerenderten Quelltext des DTML-Dokuments zurück.

Berechtigung:
Management-Screens betrachten

__call__(client=None, REQUEST={}, RESPONSE=None, **kw)

Wird ein DTML-Dokument aufgerufen, so wird sein DTML-Inhalt interpretiert. Die Methode gibt das Ergebnis der Interpretation zurück, das jedes Objekt sein kann.

Um seine Aufgabe zu erfüllen, muss das DTML-Dokument oft verschiedene Namen in Objekten auflösen. Beispielsweise: wird der Code '' ausgeführt, so versucht die DTML-Maschine, den Namen spam aufzulösen.

Um Namen aufzulösen, muss dem Dokument ein Namensraum zugänglich sein, in dem es die Namen suchen kann. Die kann über verschiedene Möglichkeiten erreicht werden:

  • Indem ein client-Objekt übergeben wird -- Wird das Argument client übergeben, werden Namen als Attribute des Arguments gesucht.
  • Indem eine REQUEST-Funktion übergeben wird -- Wird das Argument REQUEST übergeben, so werden Namen als Elemente des Arguments gesucht. Ist das Objekt keine Funktion, wird ein TypeError ausgegeben, sobald eine Namenssuche gestartet wird.
  • Indem Schlüsselwort-Argument übergeben werden -- Namen und ihre Werte können dem Dokument als Schlüsselwort-Argumente übergeben werden.

Der Namensraum, der einem DTML-Dokument gegeben wird ist das Gemisch dieser drei Methoden. Sie können viele von ihnen übergeben oder aber auch gar keine. Namen werden zuerst in den Schlüsselwort-Argumenten gesucht, dann im Client, und schliesslich in der Funktion.

Ein DTML-Dokument gibt sich selber stillschweigend als Client-Argument als Zusatz zum spezifizierten Client weiter, wodurch Namen auch im DTML-Dokument selber gesucht werden.

Einen Namensraum an ein DTML-Dokument weitergeben wird oft als Versorgung des Dokuments mit einem Kontext bezeichnet.

DTML-Dokumente können auf drei Arten aufgerufen werden.

Aus DTML

Ein DTML-Dokument kann aus einem anderen DTML-Dokument oder einer anderen DTML-Methode heraus aufgerufen werden:

            
              
            

In diesem Beispiel wird das Dokument aDTMLDocument anhand seines Namens von einem anderen DTML-Objekt aus aufgerufen. Die Aufrufsmethode gibt den Wert this als Client-Argument und den aktuellen DTML-Namensraum als REQUEST-Argument weiter. Die Ausführung des Codes oben bewirkt das gleiche wie folgende Verwendung in einem DTML-Python-Ausdruck:

            
              
            

Aus Python

Produkte, externe Methoden und Skripte können ein DTML-Dokument auf gleichem Wege aufrufen wie ein DTML-Dokument aus einem Python-Ausdruck in DTML, was folgendes Beispiel verdeutlichen soll.

Anhand des Publishers (Veröffentlicher)

Wird die URL eines DTML-Dokumentes von Zope abgerufen, wird das DTML-Dokument anhand des Veröffentlichers aufgerufen. Das REQUEST-Objekt wird als zweites Argument an das Dokument übergeben.

Berechtigung:
View

get_size()

Gibt die Grösse des ungerenderten Quelltextes des DTML-Dokumentes in Bytes zurück.

Berechtigung:
View

ObjectManager Constructor

manage_addDocument(id, title)

Fügt ein DTML-Dokument zum aktuellen Objekt-Manager hinzu.

Modul DTMLMethod

Klasse DTMLMethod(ObjectManagerItem)

Eine DTML-Methode ist ein Zope-Objekt, das DTML beinhaltet und ausführt. Es kann als Vorlage dienen, um andere Objekte anzuzeigen. Es kann auch kleine Inhalte haben, die in andere DTML-Dokumente oder -Methoden eingefügt werden.

Die ID der DTML-Methode ist über die document_id-Variable erhältlich und der Titel über die document_title-Variable.

manage_edit(data, title)

Verändert die DTML-Methode, indem ihr Inhalt durch data ersetzt und der Titel geändert wird.

Das data-Argument kann ein File oder ein String sein.

Berechtigung:
DTML-Methoden verändern

document_src()

Gibt den ungerenderten Quelltext der DTML-Methode zurück.

Berechtigung:
Management-Screens betrachten

__call__(client=None, REQUEST={}, **kw)

Eine DTML-Methode aufzurufen, veranlasst die Methode dazu, enthaltene DTML zu interpretieren. Die Methode gibt das Ergebnis der Interpretation als Objekt zurück, es gibt hierbei keine Einschränkungen, welches Objekt.

Um ihre Aufgabe auszuführen, müssen DTML-Methoden oft verschiedene Namen in Objekten auflösen. Beispielsweise versucht die DTML-Maschine, wenn Code '' ausgeführt wird, den Namen spam aufzulösen.

Um Namen aufzulösen, muss der Methode ein Namensraum übergeben werden, in dem sie sie suchen kann. Dies kann auf verschiedene Art und Weise erreicht werden:

  • Indem ein client-Objekt weitergegeben wird -- Wird das Argument client weitergegeben, werden Namen als Attribute des Arguments gesucht.
  • Indem eine REQUEST-Funktion weitergeben wird -- Wird das REQUEST-Argument weitergegeben, werden Namen als Elemente des Arguments gesucht. Ist das Objekt keine Funktion, wird ein TypeError ausgegeben, sobald eine Namenssuche gestartet wird.
  • Indem Schlüsselwort-Argumente weitergegeben werden -- Namen und ihre Werte können als Schlüsselwort-Argumente an die Methode weitergegeben werden.

Der Namensraum, der einer DTML-Methode gegeben wird, ist die Mischung dieser drei Methoden. Sie können eine beliebige Anzahl von ihnen oder aber auch garkeine weitergeben. Namen werden zuerst anhand der Schlüsselwort-Argumente gesucht, dann im Client und schliesslich in der Funktion.

Anders als DTML-Dokumente suchen DTML-Methoden Namen nicht in ihrem eigenen Instanz-Wörterbuch.

Einen Namensraum an eine DTML-Methode weiterzugeben wird oft auch als Versorgung einer Methode mit einem Kontext bezeichnet.

DTML-Methoden können auf drei verschiedene Arten aufgerufen werden:

Aus DTML

Eine DTML-Methode kann aus einer anderen DTML-Methode oder einem DTML-Dokument heraus aufgerufen werden:

            
              
            

In diesem Beispiel wird die Methode aDTMLMethod anhand ihres Namens von einem anderen DTML-Objekt heraus aufgerufen. Die Aufrufsmethode gibt den Wert this als Client-Argument und den aktuellen DTML-Namensraum als REQUEST-Argument weiter. Der Code oben bewirkt in der Ausführung das selbe wie folgender DTML-Ausdruck in Python:

            
              
            

Aus Python

Produkte, externe Methoden und Skripte können eine DTML-Methode auf dem selben Weg aufrufen wie eine DTML-Methode aus einem Python-Ausdruck in DTML heraus aufgerufen wird, wie folgendes Beispiel zeigt.

Anhand des Veröffentlichers

Wird die URL einer DTML-Methode von Zope abgerufen, wird die DTML-Methode anhand ihres Veröffentlichers aufgerufen. Das REQUEST-Objekt wird als zweites Argument an die Methode weitergegeben.

Berechtigung:
View

get_size()

Gibt die Grösse des ungerenderten Quelltextes der DTML-Methode in Bytes zurück.

Berechtigung:
View

ObjectManager Constructor

manage_addDTMLMethod(id, title)

Fügt eine DTML-Methode zum aktuellen Objekt-Manager hinzu.

Modul DateTime

Klasse DateTime

Das DateTime-Objekt stellt eine Schnittstelle zur Verfügung, mit der mit Daten und Zeiten in verschiedenen Formaten gearbeitet werden kann. DateTime stellt weiterhin Methoden f&uum;r Kalender-Arbeiten, Datums- und Zeit-Arithmetik und -Formatierung zur Verfügung.

DateTime-Objekte repräsentieren Zeitinstanzen und stellen Schnittstellen f¨r die Kontrolle der Darstellung zur Verfügung, ohne den absoluten Wert des Objekts zu beeinflussen.

DateTime-Objekte können aus einer grossen Auswahl an String- und numerischen Daten erstellt werden oder aus anderen DateTime-Objekten berechnet werden. DateTime unterstützt die Fähigkeit, Darstellungen in viele geläfige Zeitzonen zu konvertieren, sowie die Fähigkeit, ein DateTime-Objekt im Kontext der gegebenen Zeitzone zu erstellen.

DateTime-Objekte stellen teilweise numerisches Verhalten zur Verfügung:

  • Zwei DateTime-Objekte können subtrahiert werden, um die Zeit in Tagen zwischen beiden Daten zu erhalten.
  • Ein DateTime-Objekt und eine positive oder negative Zahl können addiert werden um ein neues DateTime-Objekt zu erhalten, das die gegebene Zahl an Tagen später als das ursprüngliche DateTime-Objekte darstellt.
  • Eine positive oder negative Zahl kann von einem DateTime-Objekt abezogen werden, um ein neues DateTime-Objekt zu erhalten, das die angegebene Anzahl an Tagen früher darstellt als das usrprüngliche DateTime-Objekt.

DateTime-Objekte können in integer-, long- oder float-Zahlen von Tagen ab dem 1. Januar 1901 umgewandelt werden, indem die Standard int-, long- und float-Funktionen genutzt werden (Kompatibilitätshinweis: int, long und float geben die Zahl der Tage seit 1901 in GMT statt in Ortszeit zurück). DateTime-Objekte stellen auch Zugang zu ihrem Wert in Form eines float-Formats bereit, das mit dem Python Zeitmodul verwendet werden kann, sofern der gegebene Wert des Objektes im Rahmen des epochen-basierenden Zeitmoduls liegt.

Ein DateTime-Objekt sollte als unveränderlich angesehen werden; alle Umwandlungen und numerischen Operationen geben ein neues DateTime-Objekt zurück statt das gegebene zu verändern

Ein DateTime-Objekt erhält seinen Wert immer als absolute UTC-Zeit und wird im Kontext einer bestimmten Zeitzone dargestellt, die auf den Argumenten basiert, die benutzt wurden, um das Objekt zu erstellen. Die Methode eines DateTime-Objekts gibt Werte zurück, die auf dem Zeitzonen-Kontext basieren.

Bitte beachten Sie, dass in jedem Fall die lokale Rechnerzeit für die Darstellung benutzt wird, falls keine Zeitzone angegeben wird.

DateTime-Objekte können unter Benutzung von null bis sieben Argumenten erstellt werden.

  • Wird die Funktion ohne irgendwelche Argumente aufgerufen, wird die aktuelle Zeit/Datum-Kombination zurückgegeben, die in der Zeitzone des Rechners dargestellt wird.
  • Wird die Funktion mit einem einzelnen String-Argument, welches den Namen einer Zeitzone darstellt, aufgerufen, wird ein Objekt zurückgegeben, das die aktuelle Zeit in der angegebenen Zeitzone darstellt.
  • Wird die Funktion mit einem einzelnen String-Argument aufgerufen, das eine gültige Datum/Zeit-Kombination darstellt, wird ein Objekt, das diese Kombination darstellt, zurückgegeben.

    Als grundsätzliche Regel ist festzuhalten, dass jede Datum/Zeit-Darstellung die in Nordamerika erkannt werden kann und eindeutig ist, akzeptiert wird. (Der Grund für dies Qualifikation ist, dass in Nordamerika ein Datum wie z.B. 2/1/1994 als 1. Februar 1994 interpretiert wird, während in einigen Teilen der Welt das selbe Datum als 2. Januar 1994 gelesen wird.) Ein Datum/Zeit-String besteht aus zwei Komponenten, einer Datums-Komponenten und einer optionalen Zeit-Komponenten, die von einem oder mehreren Leerzeichen getrennt werden. Wird die Zeit-Komponente vernachlässigt, wird 12:00 Uhr (AM) angenommen. Jeder anerkannte Zeitzonen-Name, der als letztes Element des Datum/Zeit-Strings angegeben wird, wird für die Berechnung des Datum/Zeit-Werts verwendet. (Wenn Sie ein DateTime mit dem String Mar 9, 1997 1:45pm US/Pacific erstellen, wird der Wert im Grunde genommen der selbe sein wenn Sie time.time() am angegebenen Datum und zur angegebenen Zeit auf einem Rechner in dieser Zeitzone ausführen:

                e=DateTime("US/Eastern")
    #gibt die aktuellen Werte von Datum/Zeit in US/Eastern dargestellt zurück.
                x=DateTime("1997/3/9 1:45pm")
    #gibt die angegebene Zeit in lokaler Rechnerzeit dargestellt zurück.
                y=DateTime("Mar 9, 1997 13:45:00")
    #y ist identisch mit x

    Die Datumskomponente besteht aus Jahres-, Tages- und Monatswerten. Der Jahreswert muss ein ein-, zwei- oder vierstelliger Integer sein. Wird ein ein- oder zweistelliger Wert verwendet, wird angenommen, dass das Jahr im 20. Jahrhundert ist. Der Monat kan ein Integer von 1 bis 12 sein, ein Monatsname oder eine Monatsabkürzung, wobei der Abkürzung optional ein Punkt folgen kann. Der Tag muss ein Integer von 1 bis zur Anzahl der Tage des Monats sein. Die Jahres-, Monats- und Tageswerte können durch Punkte, Bindestriche, Schrägstriche oder Leerzeichen getrennt sein. Weitere Leerzeichen sind zur Abgrenzung erlaubt. Jahres-, Monats- und Tageswerte können in beliebiger Reihenfolge angegeben werden, so lange es möglich ist, die Komponenten zu unterscheiden. Sind alle drei Komponenten Zahlen kleiner als 13, wird eine Monats-Tages-Jahres-Anordnung angenommen.

    Die Zeitkomponente besteht aus Stunden-, Minuten- und Sekundenwert, die durch Kommata getrennt werden. Der Stundenwert muss ein Integer von 0 bis inklusive 23 sein. Der Minutenwert muss ein Integer zwischen 0 und einschliesslich 59 sein. Der Sekundenwert kann ein Intergerwert zwischen 0 un einschliesslich 59.999 sein. Der zweite Wert oder sowohl Minuten- als auch Sekundenwert können ausgelassen werden. Die Zeit kann von einem am oder pm in Gross- oder Kleinbuchstaben gefolgt sein, hier wird eine 12-Stunden-Uhr angenommen.

  • Wird die DateTime-Funktion mit einem einzelnen numerischen Argument aufgerufen, wird angenommen, dass die Zahl ein Gleitkommawert ist, wie der, der von time.time() zurückgegeben wird.

    Ein DateTime-Objekt, das den GMT-Wert des time.time()-Floats in lokaler Rechnerzeit darstellt wird zurückgegeben.

  • Wird die Funktion mit zwei numerischen Argumenten aufgerufen, wird das erste als Jahr und das zweite als Ursprung in Tagen vom Ursprung des Jahres her angenommen. Es wird der Context der lokalen Rechnerzeit genutzt. Der Datums-Zeit-Wert, der zurückgegeben wird ist die gegebene Zahl an Tagen vom Beginn des Jahres an, dargestellt in der Zeitzone des lokalen Rechners. Der Ursprung kann positiv oder negativ sein. Zweistellige Jahreszahlen werden automatisch zum 20. Jahrhundert gezählt.
  • Wird die Funktion mit zwei Argumenten aufgerufen, das erste hierbei ein Float, der die Zahl der Sekunden seit der Epoche in GMT (wie das Resultat von time.time()) darstellt, der zweite ein String, der die erkannte Zeitzone nennt, wird ein DateTime-Wert zurückgegeben, der in der gegebenen Zeitzone dargestellt wird:
                import time
                t=time.time()
    
                now_east=DateTime(t,'US/Eastern')
                # Zeit t, dargestellt als US/Eastern
    
                now_west=DateTime(t,'US/Pacific')
                # Zeit t, dargestellt als US/Pacific
    
                # now_east == now_west
                # Nur die Darstellungen sind unterschiedlich.
  • Wird die Funktion mit drei oder mehr numerischen Argumenten aufgerfuen, wird das erste als Jahr, dargestellt als Integer, angenommen, das zweite als Integer-Monat und das dritte als Integer-Tag. Ist die Kombination der Werte nicht gültig, wird ein DateTimeError ausgegeben. Zweistellige Jahres werden automatisch im 20. Jahrhundert angesiedelt. Das vierte, fünfte und sechste Argument spezifizieren eine Zeit in Stunden, Minuten und Sekunden; Stunden und Minuten sollten positive Integers sein, der Sekundenwert muss eine positive Gleitkommazahl sein, bei all diesen Werten gilt der Defaultwert null. Ein optionaler String kann angegeben werden, um die Zeitzone zu spezifizieren (der Effekt ist hier der gleiche wie bei einem Ergebnis von time.time() auf diesem Rechner in der angegebenen Zeitzone).

Kann ein String-Argument, dass dem DateTime-Konstruktor übergeben wurde, nicht geparst werden, wird ein DateTime.SyntaxError ausgegeben. Ungültige Datums-, Zeit- oder Zeitzonenangaben verursachen einen DateTime.DateTimeError.

Die Modulfunktion Timezones() gibt eine Liste der Zeitzonen zurück, die vom DateTime-Modul erkannt werden. Bei der Erkennung von Zeitzonen-Namen muss nicht auf die Gross- bzw. Kleinschreibung geachtet werden.

strftime(format)

Gibt einen Datums-Zeit-String zurück, der über format formatiert wurde.

Bitte beachten Sie auch Pythons time.strftime-Funktion.

dow()

Gibt den Tag der Woche als Integer zurück, wobei Sonntag den Wert 0 hat.

Berechtigung:
Steht immer zur Verfügung.

aCommon()

Gibt einen String zurück, der den Wert des Objektes im Format: Mar 1, 1997 1:45 pm darstellt

Berechtigung:
Steht immer zur Verfügung.

h_12()

Gibt die 12-Stunden-Uhr-Darstellung der Stunde zurück.

Berechtigung:
Steht immer zur Verfügung.

Mon_()

Kompatibilität: siehe pMonth

Berechtigung:
Steht immer zur Verfügung.

HTML4()

Gibt das Objekt im Format, das in der HTML4.0-Spezifikation (ein ISO8601-Standard) definiert ist zurück.

Bitte beachten Sie auch: HTML 4.0 Specification

Daten sind Ausgaben im Format : YYYY-MM-DDTHH:MM:SSZ T und Z sind Literale. Die Zeit wird in UTC dargestellt.

Berechtigung:
Steht immer zur Verfügung.

greaterThanEqualTo(t)

Vergleicht ein DateTime-Objekt mit einem anderen DateTime-Objekt ODER einer Gleitkommazahl, wie die, die vom Python time-Modul zurückgegeben wird. Gibt true zurück, wenn das Objekt einen Zeitwert darstellt, der grösser oder gleich ist als das angegebene DateTime-Objekt oder die time-Modul-Zeit. Wurde revidiert, um genauere Ergebnisse durch Vergleich von langen Integer-Millisekunden zu geben.

Berechtigung:
Steht immer zur Verfügung.

dayOfYear()

Gibt den Tag des Jahres im Kontext der Zeitzonendarstellung des Objektes zurück.

Berechtigung:
Steht immer zur Verfügung.

lessThan(t)

Vergleicht ein DateTime-Objekt mit einem anderen DateTime-Objekt ODEr einer Gleitkommazahl wie jener, die vom Python time-Modul zurückgegeben wird. Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, die kleiner ist als das angegebene DateTime-Objekt oder die time-Modul-Zeit. Wurde revidiert, um durch den Vergleich von Integer-Millisekunden genauere Ergebnisse zu erzielen.

Berechtigung:
Steht immer zur Verfügung.

AMPM()

Gibt den Zeit-String für ein Objekt für die nächste Sekunde zurück.

Berechtigung:
Steht immer zur Verfügung.

isCurrentHour()

Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, die in die aktuelle Stunde fällt, auch hier wieder im Kontext der Zeitzonen-Darstellung des Objektes.

Berechtigung:
Steht immer zur Verfügung.

Month()

Gibt den vollen Monatsnamen zurück.

Berechtigung:
Steht immer zur Verfügung.

mm()

Gibt den Monat als zweistelligen String zurück.

Berechtigung:
Steht immer zur Verfügung.

ampm()

Gibt den passenden Zeit-Modifikator zurück (am oder pm).

Berechtigung:
Steht immer zur Verfügung.

hour()

Gibt die 24-Stunden Darstellung der Stunde zurück.

Berechtigung:
Steht immer zur Verfügung.

aCommonZ()

Gibt eine String-Darstellung des Wertes des Objektes im Format: Mar 1, 1997 1:45 pm US/Eastern zurück.

Berechtigung:
Steht immer zur Verfügung.

Day_()

Kompatibilität : siehe pDay

Berechtigung:
Steht immer zur Verfügung.

pCommon()

Gibt eine String-Darstellung des Wertes des Objektes im Format: Mar. 1, 1997 1:45 pm zurück.

Berechtigung:
Steht immer zur Verfügung.

minute()

Gibt die Minute zurück.

Berechtigung:
Steht immer zur Verfügung.

day()

Gibt den Tag als Integer zurück.

Berechtigung:
Steht immer zur Verfügung.

earliestTime()

Gibt ein neues DateTime-Objekt zurück, das die frühestmögliche Zeit (in ganzen Sekunden), die noch in den aktuellen Tag des Objektes fällt, wie immer im Kontext der Zeitzone des Objektes.

Berechtigung:
Steht immer zur Verfügung.

Date()

Gibt den Datums-String für das Objekt zurück.

Berechtigung:
Steht immer zur Verfügung.

Time()

Gibt den Zeit-Sring eines Objektes für die nächste Sekunde zurück.

Berechtigung:
Steht immer zur Verfügung.

isFuture()

Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, die später ist als die Zeit des Aufrufes.

Permission
Always available

greaterThan(t)

Vergleicht das DateTime-Objekt mit einem anderen DateTime-Objekt ODER einer Gleitkommazahl wie jener, die vom Python-time-Modul zurückgegeben wird. Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, die gr&oum;sser ist als das spezifizierte DateTime-Objekt oder die time-Modul-Zeit. Wurde revidiert umd durch den Vergleich von Integer-Millisekunden genauere Ergebnisse zu erzielen.

Berechtigung:
Steht immer zur Verfügung.

TimeMinutes()

Gibt den Zeit-String f¨r ein Objekt zurück, ohne die Sekunden anzuzeigen.

Berechtigung:
Steht immer zur Verfügung.

yy()

Gibt das Kalenderjahr als zweistelligen String zurück.

Berechtigung:
Steht immer zur Verfügung.

isCurrentDay()

Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, die in den aktuellen Tag fällt, wie immer im Kontext der Zeitzonen-Darstellung des Objekts.

Berechtigung:
Steht immer zur Verfügung.

dd()

Gibt den Tag als zweistelligen String zurück.

Berechtigung:
Steht immer zur Verfügung.

rfc822()

Gibt das Datum im RFB 822-Format zurück.

Berechtigung:
Steht immer zur Verfügung.

isLeapYear()

Gibt true zurück, wenn das aktuelle Jahr (im Kontext der Zeitzone des Objekts) ein Schaltjahr ist.

Berechtigung:
Steht immer zur Verfügung.

fCommon()

Gibt eine String-Darstellung des Wertes des Objekts im Format: March 1, 1997 1:45 pm zurück.

Berechtigung:
Steht immer zur Verfügung.

isPast()

Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, die früher ist als die Zeit des Aufrufs.

Berechtigung:
Steht immer zur Verfügung.

fCommonZ()

Gibt einen String zurück, der den Wert des Objektes im Format: March 1, 1997 1:45 pm US/Eastern darstellt.

Berechtigung:
Steht immer zur Verfügung.

timeTime()

Gibt Datum/Zeit als Gleitkommatzahl in UTC zurück, wobei das Format des Python time-Moduls verwendet wird. Bitte beachten Sie, dass es möglich ist, Datum/Zeit-Werte mit DateTime zu erstellen, die im time-Modul keine sinnvolle Bedeutung haben.

Berechtigung:
Steht immer zur Verfügung.

toZone(z)

Gibt ein DateTime-Objekt mit den Werten als aktuelles Objekt zurück und wird in der angegebenen Zeitzone dargestellt.

Berechtigung:
Steht immer zur Verfügung.

lessThanEqualTo(t)

Vergleicht dieses DateTime-Objekt mit einem anderen DateTime-Objekt ODER einer Gleitkommazahl wie der, die vom Python time-Modul zurückgegeben wird. Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, das/die kleiner oder gleich dem angegebenen DateTime-Objekt bzw. der time-Modul-Zeit ist. Wurde überarbeitet, um exaktere Ergebnisse durch den Vergleich von integer-Millisekunden zu gewährleisten.

Berechtigung:
Steht immer zur Verfügung.

Mon()

Kompatibilität: bitte beachten Sie aMonth

Berechtigung:
Steht immer zur Verfügung.

parts()

Gibt einen Tupel zurück, der das Kalenderjahr, Monat, Tag, Stunde, Minute, Sekunde und Zeitzone des Objektes enthält.

Berechtigung:
Steht immer zur Verfügung.

isCurrentYear()

Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, das/die in das aktuelle Jahr fällt, wie immer im Kontext der Zeitzonen-Darstellung des Objektes.

Berechtigung:
Steht immer zur Verfügung.

PreciseAMPM()

Gibt den Zeit-String für das Objekt zurück.

Berechtigung:
Steht immer zur Verfügung.

AMPMMinutes()

Gibt den Zeit-String für ein Objekt zurück, ohne die Sekunden anzuzeigen.

Berechtigung:
Steht immer zur Verfügung.

equalTo(t)

Vergleicht dieses DateTime-Objekt mit einem anderen DateTime-Objekt ODER einer Gleitkommazahl wie der, die vom Python time-Modul zurückgegeben wird. Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, das/die gleich dem angegebenen DateTime-Objekt oder der time-Modul-Zeit ist. Wurde überarbeitet um exaktere Ergebnisse durch den Vergleich von Millisekunden zu gewähren.

Berechtigung:
Steht immer zur Verfügung.

pDay()

Gibt den abekürzten (mit Punkt) Namen des Tages der Woche zurück.

Berechtigung:
Steht immer zur Verfügung.

notEqualTo(t)

Vergleicht dieses DateTime-Objekt mit einem anderen DateTime-Objekt ODER einer Gleitkommazahl wie der, die vom Python time-Modul zurückgegeben wird. Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, das/die NICHT gleich dem angegebenen DateTime-Objekt oder der time-Modul-Zeit ist. Wurde überarbeitet um exaktere Ergebnisse durch den Vergleich von Millisekunden zu gewähren.

Berechtigung:
Steht immer zur Verfügung.

h_24()

Gibt die 24-Stunden-Darstellung der Stunde zurück.

Berechtigung:
Steht immer zur Verfügung.

pCommonZ()

Gibt eine String-Darstellung der Werte des Objektes im Format: Mar. 1, 1997 1:45 pm US/Eastern zurück.

Berechtigung:
Steht immer zur Verfügung.

isCurrentMonth()

Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, das/die in den aktuellen Monat fällt, wie immer im Kontext der Zeitzonen-Darstellung des Objekts.

Berechtigung:
Steht immer zur Verfügung.

DayOfWeek()

Kompatibilität: siehe Day

Berechtigung:
Steht immer zur Verfügung.

latestTime()

Gibt ein neues DateTime-Objekt zurück, das die spätestmögliche Zeit (in ganzen Sekunden) im Zeitzonenkontext des Objektes anzeigt, die noch in den Tag des Objektes fällt.

Berechtigung:
Steht immer zur Verfügung.

dow_1()

Gibt den Integerwert des Wochentages zurück, wobei Sonntag den Wert 1 hat.

Berechtigung:
Steht immer zur Verfügung.

timezone()

Gibt die Zeitzone zurück, in der das Objekt dargestellt wird.

Berechtigung:
Steht immer zur Verfügung.

year()

Gibt das Kalenderjahr des Objekts zurück.

Berechtigung:
Steht immer zur Verfügung.

PreciseTime()

Gibt den Zeit-String für das Objekt zurück.

Berechtigung:
Steht immer zur Verfügung.

ISO()

Gibt das Objekt im ISO-Standard-Format zurück.

Daten werden im Format: YYYY-MM-DD HH:MM:SS ausgegeben.

Berechtigung:
Steht immer zur Verfügung.

millis()

Gibt die Millisekunden seit der Epoche in GMT zurück.

Berechtigung:
Steht immer zur Verfügung.

second()

Gibt die Sekunde zurück.

Berechtigung:
Steht immer zur Verfügung.

month()

Gibt den Monat des Objekts als Integer zurück.

Berechtigung:
Steht immer zur Verfügung.

pMonth()

Gibt den abgekürzten (mit Punkt) Monatsnamen zurück.

Berechtigung:
Steht immer zur Verfügung.

aMonth()

Gibt den abgekürzten Monatsnamen zurück.

Berechtigung:
Steht immer zur Verfügung.

isCurrentMinute()

Gibt true zurück, wenn das Objekt ein Datum/eine Zeit darstellt, das/die in die aktuelle Minute fält, wie immer im Kontext der Zeitzonen-Darstellung des Objekts.

Berechtigung:
Steht immer zur Verfügung.

Day()

Gibt den vollen Namen des Wochentages zurück.

Berechtigung:
Steht immer zur Verfügung.

aDay()

Gibt den abgekürzten Namen des Wochentages zurück.

Berechtigung:
Steht immer zur Verfügung.

Modul ExternalMethod

Klasse ExternalMethod

Im Web aufrufbare Funktionen die externe Python-Funktionen enthalten.

Die Funktion wird in einer externen Datei definiert. Diese Datei wird wie ein Modul behandelt, ist jedoch keins. Sie wird nicht direkt importiert, sondern wird gelesen und ausgewertet. Die Datei muss sich im Extensions-Unterverzeichnis der Zope-Installation oder in einem Extensions-Unterverzeichnis eines Produktverzeichnisses befinden.

Durch die Art, wie ExternalMethods geladen werden, ist es noch nicht möglich, Python-Module zu importieren, die sich im Extensions-Verzeichnis befinden. Es ist möglich, Module zu importieren, die im lib/python-Verzeichnis der Zope-Installation gefunden werden, ebenso Packages, die sich im lib/python-Verzeichnis befinden.

manage_edit(title, module, function, REQUEST=None)

Verändern Sie die externe Methode.

Bitte beachten Sie auch die Beschreibung von manage_addExternalMethod, um noch mehr über die Argumente module und function zu erfahren.

Bitte beachten Sie, dass der Aufruf von manage_edit dazu führt, dass das Modul effektiv neu geladen wird. Dies ist nützlich, während Debugs durchgeführt werden, um die Effekte von Veränderung zu sehen, kann jedoch zu Funktions-Poblemen bei freigegebenen globalen Daten führen.

__call__(*args, **kw)

Ruft die externe Methode auf.

Eine externe Methode aufzurufen kommt in etwa dem Aufruf der originalen Funktion in Python gleich. Positionale und Schlüssel-Parameter können wie üblich übergeben werden. Bitte beachten Sie jedoch, dass, anders als im Fall einer normalen Python-Methode, das "self"-Argument explizit weitergegeben werden muss. Eine Ausnahme zu dieser Regel wird gemacht wenn:

  • die gelieferte Nummer von Argumenten um eins kleiner ist als die benötigte Anzahl an Argumenten und
  • der Name des ersten Argumtents der Funktion self ist.

In diesem Fall wird der URL-Ursprung des Objektes als erstes Argument übergeben.

ObjectManager Constructor

manage_addExternalMethod(id, title, module, function)

Eine externe Methode zu einem ObjectManager hinzufügen.

Zusätzlich zu den standardmässigen Argumenten zur Objekt-Erzeugung, nämlich id und title, sind die folgenden Argumente definiert:

function
Der Name der Python-Funktion. Dies kann eine gewöhnliche Python-Funktion oder eine gebundene Methode sein.
module
Der Name der Datei, die die Funktionsdefinition enthält.

Das Modul befindet sich normalerweise im Extensions-Verzeichnis, es kann jedoch die Vorsilbe product. haben, die anzeigt, dass es in einem Produktverzeichnis zu finden sein sollte.

Beispiel: ist das Modul ACMEWidgets.foo, wird ein Versuch gestartet, die Datei lib/python/Products/ACMEWidgets/Extensions/foo.py zu benutzen. Schlägt dies fehl, wird die Datei Extensions/ACMEWidgets.foo.py benutzt.

Modul File

Klasse File(ObjectManagerItem, PropertyManager)

Ein File ist ein Zope-Objekt, dass Dateiinhalt enthält. Ein File-Objekt kann benutzt werden, um Dateiinformationen mit Zope rauf- bzw. herunterzuladen.

Ein File-Objekt in Zope zu benutzen ist leicht. Die gebrächliste Verwendung ist die Darstellung der Inhalte einer Datei in einer Webseite. Dies wird einfach dadurch erreicht, dass das Objekt von DTML referenziert wird:

        
          
        

Ein komplexeres Beispiel ist die Darstellung der Datei zum Download durch den Benutzer. Das nächste Beispiel zeigt einen Link zu jedem File-Objekt in einem Ordner zum Download durch den Benutzer:

        
        

In diesem Beispiel werden die absolute_url- und id-Methode benutzt, um eine Liste von HTML-Hyperlinks zu allen File-Objekten im aktuellen Objekt-Manager zu erstellen.

Bitte beachten sie auch ObjectManager für Details zur objectValues-Methode.

getContentType()

Gibt den Inhaltstyp der Datei zurück.

Berechtigung:
View

update_data(data, content_type=None, size=None)

Aktualisiert den Inhalt der Datei mit data.

Das data-Argument muss ein String sein. Wird content_type nicht angegeben, wird kein Content-Type definiert. Ist size nicht angegeben, wird die Grösse der Datei aus data errechnet.

Berechtigung:
Steht nur in Python zur Verfügung.

getSize()

Gibt die Dateigrösse in Bytes zurück.

Berechtigung:
View

ObjectManager Constructor

manage_addFile(id, file="", title="", precondition="", content_type="")

Fügt ein neues File-Objekt hinzu.

Erstellt ein neues File-Objekt id mit dem Inhalt von file.

Modul Folder

Klasse Folder(ObjectManagerItem, ObjectManager, PropertyManager)

Ein Folder ist ein generisches Container-Objekt in Zope.

Folders sind die gebrächlichsten Unterklassen des Objekt-Managers in Zope.

ObjectManager Constructor

manage_addFolder(id, title)

Fügt einen Folder zum aktuellen Objekt-Manager hinzu.

Berechtigung:
Add Folders

Modul Image

Klasse Image(File)

Ein Image ist ein Zope-Objekt, das Bildinhalte enthält. Ein Image-Objekt kann benutzt werden, um Bildinformationen mit Zope rauf- bzw. herunterzuladen.

Image-Objekte haben zwei Eigenschaften die ihre Dimesion definieren, nämlich height und width. Sie werden berechnet wenn das Bild hochgeladen wird. Bei Image-Typen, die Zope nicht versteht, könnten diese Eigenschaften undefiniert bleiben.

Ein Image-Objekt in Zope zu benutzen ist leicht. Die gebräuchlichste Anwendung ist die Darstellung die Inhalte eines Image-Objektes in einer Webseite. Dies wird durch die einfache Referenzierung des Objektes von DTML erreicht:

        
          
        

Die generiert ein HTML IMG-Tag, das die URL zum Bild referenziert. Dies ist das gleiche wie:

        
          
            
          
        

Sie können die Bilddarstellung noch genauer kontrollieren, indem sie die tag-Methode benutzen. Beispielsweise:

        

tag(height=None, width=None, alt=None, scale=0, xscale=0, yscale=0, **args)

Diese Methode gibt einen String zurück, der ein HTML IMG-Tag-Referenz zum Bild enthält.

Optional können die height-, width-, alt-, scale-, xscale- und yscale-Argumente angegeben werden, die in Attribute des HTML IMG-Tags umgewandelt werden. Bitte beachten Sie, dass height und width defaultmässig angegeben werden und alt aus der title_or_id-Methode stammt.

Schlüsselwort-Argumente können angegeben werden, um andere oder zukünftige Attribute des IMG-Tags zu unterstützen. Die einzige Ausnahme hierbei ist das "HTML Cascading Style Sheet"-Tag class. Da das Wort class in Python ein reserviertes Wort ist, muss es durch das Schlüsselwort-Argument css_class ersetzt werden. Dies wird im gerenderten img-Tag wieder in das HTML IMG-Tag Attribut class umgewandelt werden.

Berechtigung:
View

ObjectManager Constructor

manage_addImage(id, file, title="", precondition="", content_type="")

Fügt ein neues Image-Objekt hinzu.

Erstellt ein neues Image-Objekt id mit den Inhalten von file.

Modul MailHost

Klasse MailHost

MailHost-Objekte arbeiten als Adapter zu Simple Mail Transfer Protcol (SMTP)-Servern. MailHosts werden von DTML sendmail-Tags verwendet, um den richtigen Host, an den die Mail geschickt werden soll, zu finden.

send(messageText, mto=None, mfrom=None, subject=None, encode=None)

Sendet eine e-mail.
Die Argumente sind:

messageText
Der Körper der e-mail.
mto
Ein String bzw. eine Liste von Empfänger(n) der e-mail.
mfrom
Die Absenderadresse.
subject
Das Thema der mail.
encode
Die durch rfc822 definierte Verschlüsselung der Nachricht. Der Defaultwert None bedeutet, dass keine Verschlüsselung benutzt wird. Gültige Werte umfassen base64, quoted-printable und uuencode.

ObjectManager Constructor

manage_addMailHost(id, title="", smtp_host=None, localhost=localhost, smtp_port=25, timeout=1.0)

Fügt ein mailhost-Objekt zum Objekt-Manager hinzu.

Modul ObjectManager

Klasse ObjectManager

Ein ObjectManager beinhaltet andere Zope-Objekte. Die beinhalteten Objekte heissen Object Manager Items.

Um ein Objekt innerhalb eines ObjectManagers zu erstellen benutzen Sie manage_addProduct:

        self.manage_addProduct['OFSP'].manage_addFolder(id, title)

In DTML wäre dies:

          

Diese Beispiele erstellen einen neuen Folder innerhalb des aktuellen ObjectManagers.

manage_addProduct ist eine Zuordnung die Zugriff auf Methoden zur Produkt-Konstruktion bereitstellt. Sie hat die Produkt-ID als Index.

Konstruktor-Methoden werden während der Produktinitialisierung registriert und sollten in den API-Dokumentationen für jedes Produkt, das hinzugefügt werden kann, dokumentiert sein.

objectItems(type=None)

Diese Methode gibt eine Sequenz von (ID, Objekt)-Tupeln zurück.

Wie objectValues und objectIds, so wird auch hier ein Argument akzeptiert, entweder ein String oder eine Liste, um die Resultate auf Objekte eines gegebenen Meta-Typs oder eines Sets von Meta-Typen zu beschr&aum;nken.

Jedes erste Element eines Tupels ist die ID eines Objektes, das im Objekt-Manager beinhaltet ist, jedes zweite ist das Objekt selber.

Beispiel:

          
           id: ,
           type: 
          
            Es gibt keine Unterobjekte.          

Berechtigung:
Access contents information

superValues(type)

Diese Methode gibt eine Liste von Objekten des gegebenen Meta-Typs (der gegebenen Meta-Typen), die im Objekt-Manager und allen darüberliegenden enthalten sind, zurück.

Das type-Argument spezifiziert den Meta-Typ (die Meta-Typen). Es kann ein String sein, der nur einen Meta-Typ beschreibt oder aber eine Liste von String um mehrere zu beschreiben.

Berechtigung:
Nur in Python verfügbar.

objectValues(type=None)

Diese Methode gibt eine Sequenz von beinhalteten Objekten zurück.

Wie objectItems und objectIds, akzeptiert sie ein Agrument, entweder einen String oder eine Liste um die Ergebnisse auf Objekte eines gegebenen Meta-Typs bzw. eines Sets von Meta-Typen zu beschränken.

Beispiel:

          
            
            Dies ist das Icon für den:  Folder
. Es gibt keine Folders.

Die Ergebnisse wurden auf Folders beschränkt da ein Meta-Typ an die objectValues-Methode übergeben wurde.

Berechtigung:
Access contents information

objectIds(type=None)

Diese Methode gibt eine Liste der IDs der beinhalteten Objekte zurück.

Optional kann ein Argument übergeben werden, das definiert, auf welche(n) Meta-Typ(en) die Ergebnisse beschränkt werden sollen. Dieses Argument kann ein String sein, der einen Meta-Typ beschreibt oder aber eine Liste von Strings um mehrere zu beschreiben.

Beispiel:

          
            
          
            Es gibt keine Unterobjekte.
          

Dieser DTML-Code wird alle IDs der Objekte anzeigen, die im aktuellen Objekt-Manager enthalten sind.

Berechtigung:
Access contents information

Modul ObjectManagerItem

Klasse ObjectManagerItem

Ein Zope-Objekt kann in einem Objekt-Manager enthalten sein. Fast alle Zope-Objekte, die über das Web verwaltet werden können sind Object Manager Items.

ObjectMangerItems haben diese Instanz-Attribute:

title
Der Titel des Objekts.

Dies ist eine optionale einzeilige String-Beschreibung des Objekts.

meta_type
Ein Kurzname für den Typ des Objekts.

Dies ist der Name der in den Listen für hinzuzufügende Produkte für das Objekt angezeigt wird und gebraucht wird, wenn Objekte nach dem Typ gefiltert werden

Dieses Attribut wird von der Objekt-Klasse übermittelt und sollte nicht eigenhändig verändert werden.

REQUEST
Die aktuelle Web-Anfrage.

Dieses Objekt wird benötigt und sollte nicht verändert werden.

title_or_id()

Wird der Titel nicht leergelassen, wird er zurückgegeben, andernfalls jedoch die ID.

Berechtigung:
Steht immer zur Verfügung.

getPhysicalRoot()

Gibt das Top-Level Zope-Anwendungs-Objekt zurück.

Berechtigung:
Nur in Python verfügbar.

manage_workspace()

Dies ist die Web-Methode, die aufgerufen wird, wenn ein Benutzter ein Element in einer Ansicht des Objekt-Managers auswählt oder in der Zope Management-Navigations-Ansicht.

Berechtigung:
View management screens

getPhysicalPath()

Gibt den Pfad eines Objekts von der Wurzel an zurück, wobei virtuelle Hosts ignoriert werden.

Berechtigung:
Steht immer zur Verfügung.

unrestrictedTraverse(path, default=None)

Gibt das Objekt zurück, indem der gegebene Pfad von dem Objekt aus durchquert wird, von dem die Methode aufgerufen wurde. Diese Methode beginnt mit "unrestricted", da (fast) keine Sicherheits-Überprüfungen durchgeführt werden.

Wird ein Objekt nicht gefunden, wird das default-Argument zurückgegeben.

Berechtigung:
Steht nur in Python zur Verfügung.

getId()

Gibt die ID des Objektes zurück.

Die ID ist der eindeutige Name eines Objektes innerhalb seines übergeordneten Objekt-Managers. Dies sollte ein String sein, der Buchstaben, Zahlen, Unterstriche, Bindestriche, Kommata und Leerzeichen enthalten kann.

Diese Methode ersetzt den direkten Zugriff auf das id-Attribut.

Berechtigung:
Steht immer zur Verfügung.

absolute_url(relative=None)

Gibt die absolute URL zum Objekt zurück.

Wird das relativ-Argument mit true angegeben, ist die zurückgegebene URL relativ zum Objekt. Bitte beachten Sie: wenn virtuelle Hosts verwendet werden, ist der zurückgegeben Pfad ein logischer, statt eines physischen Pfades.

Berechtigung:
Steht immer zur Verfügung.

this()

Gibt das Objekt zurückl

Dies stellt sich in zwei Situationen als sehr nützlich heraus. Zunächst stellt dies einen Weg bereit, um Objekte in DTML zu referenzieren.

Die zweite Verwendung ist komplexer. Es wird ein Weg bereitgestellt, ein Objekt zu erhalten, ohne den vollen Kontext in dem es erhalten wurde, zu bekommen. Dies ist beispielsweise in Fällen nützlich, in denen Sie in einer Methode eines Unterobjektes (das kein Element ist) eines Elementes sind und in denen sie das Element aus dem Kontext des Unterobjektes herausbekommen müssen.

Berechtigung:
Steht immer zur Verfügung.

restrictedTraverse(path, default=None)

Gibt das erhaltene Objekt zurück, indem der gegeben Pfad umgedreht wird, und zwar vom Objekt aus, von dem aus die Methode aufgerufen wurde, wobei Sicherheitsüberprüfungen durchgeführt werden.

Wird ein Objekt nicht gefunden, wird das default-Argument zurückgegeben.

Berechtigung:
Steht immer zur Verfügung.

title_and_id()

Ist der Titel nicht leer, ist das Resultat der Titel, gefolgt von der ID in runden Klammern. Andernfalls wird die ID zurückgegeben.

Berechtigung:
Steht immer zur Verfügung.

Modul PropertyManager

Klasse PropertyManager

Ein PropertyManager-Objekt enthält eine Sammlung von geschriebenen Attributen, die Properties (Eigenschaften) genannt werden. Properties können über das Web oder via DTML verwaltet werden.

Zusätzlich dazu, dass sie einen Typ haben, können Properties beschreibbar oder nur lesbar sein und Default-Werte haben.

propertyItems()

Gibt eine Liste von (ID, Property)-Tupeln zurück.

Berechtigung:
Access contents information

propertyValues()

Gibt eine Liste von Property-Werten zurück.

Berechtigung:
Access contents information

propertyMap()

Gibt ein Tupel von Zuordnungen zurück, die Meta-Daten der Properties beschreiben. Die Meta-Daten umfassen id, type, und mode.

Berechtigung:
Access contents information

propertyIds()

Gibt eine Liste von Property-IDs zurück.

Berechtigung:
Access contents information

getPropertyType(id)

Sucht den Typ der Property-ID. Gibt none zurück, wenn die Property nicht existiert.

Berechtigung:
Access contents information

getProperty(id, d=None)

Gibt den Wert der Property-ID zurück. Wird die Property nicht gefunden, wird das optionale zweite Argument oder None zurückgegeben.

Berechtigung:
Access contents information

hasProperty(id)

Gibt true zurück, wenn der PropertyManager die Property-ID enthält. Andernfalls wird false zurückgegeben.

Berechtigung:
Access contents information

Modul PropertySheet

Klasse PropertySheet

Ein PropertySheet ist eine Abstraktion, um mit einem Set von ähnlichen Properties zu arbeiten und Properties zu verwalten. Grundsätzlich verhält sich das PropertySheet wie ein Container für ein Set von verwandten Properties und Meta-Daten, die diese Properties beschreiben. Ein PropertySheet kann eine Web-Schnittstelle bereitstellen, um die Properties zu verwalten, dies ist jedoch nicht zwingend notwendig.

xml_namespace()

Gibt einen Namensraum-String zurück, der als XML-Namensraum für dieses Property-Set verwendet werden kann. Dies kann ein leerer String sein, wenn es keinen Default-Namensraum f&uum;r ein gegebenes PropertySheet gibt (besonders dann, wenn es sich um ein PropertySheet handelt, dass in ZClass-Definitionen hinzugefügt wurde).

Berechtigung:
Steht nur in Python zur Verfügung.

propertyItems()

Gibt eine Liste von (ID, Property)-Tupeln zurück.

Berechtigung:
Access contents information

propertyValues()

Gibt eine Liste der aktuellen Property-Werte zurück.

Berechtigung:
Access contents information

getPropertyType(id)

Gibt den Typ der Property-ID zurück. Gibt None zurück, wenn die Property nicht existiert.

Berechtigung:
Steht nur in Python zur Verfügung.

propertyInfo()

Gibt eine Zuordnung zurück, die Meta-Daten von Properties enthält.

Berechtigung:
Steht nur in Python zur Verfügung.

getProperty(id, d=None)

Sucht die Property-ID, wobei das optionale zweite Argument zurückgegeben wird oder aber None, wenn keine Property gefunden wurde.

Berechtigung:
Steht nur in Python zur Verfügung.

manage_delProperties(ids=None, REQUEST=None)

Löscht eine oder mehrere Properties mit den gegebenen IDs. Das IDs-Argument sollte eine Sequenz (Tupel oder Liste) sein, die die IDs der zu löschenden Properties enthält. Ist das IDs-Argument leer wird keine Aktion ausgeführt. Existiert eine der Properties, die in IDs genannt werden nicht, wird ein Fehler ausgegeben.

Einige Objekte haben "besondere" Properties, die von Produktautoren definiert werden und nicht entfernt werden können. Wird eine dieser Properties in IDs genannt, wird eine HTML-Fehlermeldung zurückgegeben.

Wird an das REQUEST-Argument kein Wert weitergegeben, gibt die Methode None zurück. Wird ein Wert für REQUEST angegeben (wie es der Fall ist, wenn über das Web gearbeitet wird), wird das Management-Formular für das Objekt gerendert und zurückgegeben.

Diese Methode kann über das Web, per DTML oder aus Python-Code aufgerufen werden.

Berechtigung:
Manage Properties

manage_changeProperties(REQUEST=None, **kw)

Verändert existierende Objekt-Properties, indem entweder ein Zuordnungs-Objekt als REQUEST übergeben wird, das Name:Wert-Paare enthält oder indem Name=Schlüsselwort-Argumente übergeben werden.

Einige Objekte haben "besondere" Properties, die von Produktautoren definiert werden und nicht verändert werden können. Wenn Sie versuchen, eine dieser Properties mit dieser Methode zu verändern, wird ein Fehler ausgegeben.

Bitte beachten Sie, dass keine Rechtschreibprüfung oder Konvertierung geschieht, wenn diese Methode aufgerufen wird, also liegt es in der Verantwortlichkeit des Benutzers, sicherzustellen, dass die aktualisierten Werte vom richtigen Typ sind. Dies wird sich vielleicht demnächst ändern.

Wird für REQUEST ein Wert angegeben (wie es der Fall ist wenn über das Web gearbeitet wird), gibt die Methode einen HTML-Dialog zurück. Wird kein REQUEST weitergegeben, gibt die Methode nach erfolgreicher Ausführung None zurück.

Diese Methode kann über das Web, aus DTML oder Python-Code aufgerufen werden.

Berechtigung:
Manage Properties

manage_addProperty(id, value, type, REQUEST=None)

Fügt eine neue Property mit der gegebenen id, mit value und type hinzü.

Dies sind Property-Types:

boolean
1 oder 0.
date
Ein DateTime-Wert, beispielsweise 12/31/1999 15:42:52 PST.
float
Eine Dezimalzahl, beispielsweise 12.4.
int
Ein integer, beispielsweise 12.
lines
Eine Liste von Strings, ein String pro Zeile.
long
Ein long, beispielsweise 12232322322323232323423.
string
Ein String aus Charactern, beispielsweise This is a string.
text
Ein mehrzeiliger String, beispielsweise ein Absatz.
tokens
Eine Liste von Strings, die durch Leerzeichen getrennt werden, beispielsweise one two three.
selection
Ein String, der mit einem Pop-Up-Menü ausgewählt wird.
multiple selection
Eine Liste von Strings, die aus einer Selektions-Liste ausgewählt werden.

Diese Methode benutzt den eingegebenen type um den Versuch einer Konvertierung der value-Argument zu den genannten Typen zu starten. Kann der angegebene value-Wert nicht konvertiert werden, wird ein ValueError ausgegeben.

Die für selection und multiple selection angegebenen Werte können Attribute oder Methodennamen sein. Die Attribute oder Methoden müssen Sequenz-Werte zurückgeben.

Wird der gegebene type nicht erkannt, werden die Werte für value und type einfach blind in das Objekt gepackt.

Wird kein Wert für REQUEST weitergegeben, gibt die Methode None zurück. Wird ein Wert für REQUEST weitergegeben (wie es der Fall ist wenn über das Web aufgerufen wird), wird das PropertyManagement-Formular f&uum;r das Objekt gerendert und ausgegeben.

Diese Methode kann über das Web, aus DTML oder Python-Code heraus aufgerufen werden.

Berechtigung:
Manage Properties

propertyMap()

Gibt einen Tupel von Zuordnungen zurück, der Meta-Daten für Properties enthält.

Berechtigung:
Steht nur in Python zur Verfügung.

propertyIds()

Gibt eine Liste von Property-IDs zurück.

Berechtigung:
Access contents information

hasProperty(id)

Gibt true zurück, wenn self eine Property mit der gegebenen id hat, andernfalls false.

Berechtigung:
Access contents information

Modul PropertySheets

Klasse PropertySheets

Ein PropertySheet ist eine Abstraktion um mit einem Set von verwandten Properties zu arbeiten und Properties zu verwalten. Grundsätzlich verhält es sich wie ein Container für ein Set von verwandten Properties und Meta-Daten, die diese Properties beschreiben. Auf PropertySheet-Objekte wird über ein PropertySheet-Objekt zugegriffen, das als Sammlung von PropertySheet-Instanzen fungiert.

Objekte, die PropertySheets unterstützen (Objekte, die die PropertyManager-Schnittstelle oder ZClass-Objekte unterstützen) haben ein propertysheets-Attribut (eine PropertySheets-Instanz), welche die Sammlung der PropertySheet-Objekte ist. Das PropertySheet-Objekt enthüllt eine Schnittstelle, die der Python-Zuordnung stark ähnelt, so dass auf individuelle PropertySheet-Objekte über Dicitionary-ähnliche Schlüsselsuche zugegriffen werden kann.

get(name, default=None)

Gibt das PropertySheet zurück, welches durch name oder den Wert identifiziert wird, der in default angegeben ist, falls das genannte PropertySheet nicht gefunden wird.

Berechtigung:
Steht nur in Python zur Verfügung.

values()

Gibt eine Sequenz aller PropertySheet-Objekte in der Sammlung zurück.

Berechtigung:
Steht nur in Python zur Verfügung.

items()

Gibt eine Sequenz zurück, die einen (ID, Objekt)-Tupel für jedes PropertySheet-Objekt in der Sammlung enthält.

Berechtigung:
Steht nur in Python zur Verfügung.

Modul PythonScript

Klasse PythonScript(Script)

Python-Skripte enthalten Python-Code der ausgeführt wird, wenn Sie das Skript mit den folgenden Möglichkeiten aufrufen:

  • Das Skript wird über das Web aufgerufen, indem man einem Web-Browser auf seine Adresse zugreift.
  • Das Skript wird aus einem anderen Skript-Objekt heraus aufgerufen.
  • Das Skript wird aus einem Methoden-Objekt aufgerufen, wie z.B. einer DTML-Methode.

Python-Skripts können ein "sicheres" Subset der Python-Sprache enthalten. Python-Skripts müssen sicher sein, dass sie unter Umständen von vielen verschiedenen Benutzer durch ein unsicheres Medium wie das Web bearbeitet werden können. Die folgenden Sicherheitsaspekte erfüllen die Anforderungen für sichere Python-Skripte:

  • Da viele Benutzer Zope verwenden können, muss ein Python-Skript sicherstellen, dass es einem Benutzer nicht erlaubt, etwas zu tun, das er nicht tun darf, wie z.B. Objekte löschen, die der Benutzer mit seinen Rechten nicht löschen dürfte. Aufgrund dieser Anforderung führen Python-Skripte viele Sicherheitsüberprüfungen aus, während sie ausgeführt werden.
  • Da Python-Skripte über das unsichere Medium "Web" bearbeitet werden können, ist es ihnen nicht gestattet, auf das Dateisystem des Zope-Servers zuzugreifen. Normale Python-Komponenten wie open sind darum nicht erlaubt.
  • Da viele standardmässige Python-Module die oberen zwei Sicherheitsbestimmungen verletzen, darf nur ein kleiner Teil der Python-Module mit dem "import"-Statement in Python-Skripte eingefügt werden, es sei denn, sie wurden von Zopes Sicherheitsmethode validiert. Gegenwärtig sind die folgenden standardmässigen Python-Module validiert worden:
    • string
    • math
    • whrandom und random
    • Products.PythonScripts.standard
  • Da es ihnen erlaubt, beliebigen Python-Code auszuführen, ist das "exec"-Statement von Python in Python-Methoden nicht erlaubt.
  • Da sie Sicherheitsverletzungen darstellen oder verursachen können, sind einige standardmässige Python-Funktionen nicht erlaubt. Die folgenden standardmässigen Python-Funktionen sind nicht erlaubt:
    • open
    • input
    • raw_input
    • eval
    • execfile
    • compile
    • type
    • coerce
    • intern
    • dir
    • globals
    • locals
    • vars
    • buffer
    • reduce
  • Andere standardmässige Funktionen sind von Natur aus eingeschränkt. Es handelt sich hierbei um die folgenden:
    range
    Aufgrund möglicher "Memory Denial of Service"-Attacken ist range standardmässig so beschränkt, dass nur ranges erstellt werden können, die kürzer als 10.000 Elemente sind.
    filter, map, tuple, list
    Aus oben genannten Gründen verarbeiten standardmässige Funktionen, die aus Sequenzen Listen erstellen, keine Strings.
    getattr, setattr, delattr
    Da diese Funktionen Python-Code dazu befähigen könnten, das Sicherheitssystem von Zope zu umgehen, werden sie mit allgemeinen, durch das Sicherheitssystem eingeschränkte Versionen ersetzt.
  • Um mit den Python-Ausdrücken, die in der DTML benutzt werden, konsistent zu sein, werden die standardmässigen Funktionen mit einer kleinen Zahl an Funktionen und Klassen erweitert:
    • test
    • namespace
    • render
    • same_type
    • DateTime
  • Da die "print"-Statements nich normal mit Zope operieren können, wurde ihr Effekt geändert. Statt Text an stdout zu senden, hängt sich "print" an eine interne Variable. Der spezielle standardmässige Name "printed" berechnet die Verkettung des gesamten bisherigen Textes während der Ausführung des Skripts.

document_src(REQUEST=None, RESPONSE=None)

Gibt den Text der read-Methode, zurück, wobei der Inhaltstyp text/plain auf RESPONSE gesetzt wird.

ZPythonScript_edit(params, body)

Verändert die Parameter und den Inhalt des Skripts. Diese Methode akzeptiert zwei Argumente:

params
Der neue Wert des Python Skript-Parameters. Muss eine durch Kommata getrennte Liste von Werten in gültiger Signatur-Syntax von Python sein. Enthält dieser Parameter keinen gültigen Signatur-String, wird ein SyntaxError ausgegeben.
body
Der neue Wert des Inhaltes des Python-Skripts. Muss gültige Python-Syntax enthalten. Ist dies nicht der Fall, wird ein SyntaxError ausgegeben.

ZPythonScript_setTitle(title)

Ändert den Titel des Skripts. Diese Methode akzeptiert ein Argument, nämlich title, was der Wert für den neuen Titel des Skripts ist und ein String sein muss.

ZPythonScriptHTML_upload(REQUEST, file="")

Gibt einen Text mit der write-Methode an eine Datei weiter.

write(text)

Verändert das Skript, indem das Text-Argument in Teile geparst wird. Führende Zeilen, die mit ## beginnen werden ausgeschnitten und wenn Sie von der Form ##name=value sind, werden sie verwendet, um Meta-Daten wie etwa den Titel und Parameter zu setzen. Der Rest des Textes wird als neuer Inhalt des Python-Skripts gesetzt.

ZScriptHTML_tryParams()

Gibt eine Liste der benötigten Parameter zurück, mit denen das Skript getestet wird.

read()

Gibt den Inhalt des Python-Skripts zurück, inklusive eines besonderen vorangestellten Kommentarblocks. Dieser Block enthält Meta-Daten in der Form von Kommentarzeilen, wie sie von der write-Methode erwartet werden..

ZPythonScriptHTML_editAction(REQUEST, title, params, body)

Verändert die Hauptparameter des Skripts. Diese Methode akzeptiert die folgenden Argumente:

REQUEST
Der aktuelle REQUEST.
title
Der neue Wert des Titels des Python-Skripts. Dies muss ein String sein.
params
Der neue Wert der Parameter des Python-Skripts. Muss eine durch Kommata getrennte Liste von Werten in gültiger Signatur-Syntax von Python sein. Ist kein gültiger Signatur-String enthalten, wird ein SyntaxError ausgegeben.
body
Der neue Wert des Inhalts des Python-Skripts. Muss gültige Python-Syntax enthalten. Ist dies nicht der Fall, wird ein SyntaxError ausgegeben.

ObjectManager Constructor

manage_addPythonScript(id, REQUEST=None)

Fügt ein Python-Skript zu einem Ordner hinzu.

Modul Request

Klasse Request

Das Request-Objekt kapselt alle Informationen bezüglich der aktuellen Anfrage in Zope ein. Dies umfasst die Input-Header, die Formulardaten, die Serverdaten und Cookies.

Das Request-Objekt ist ein Zuordnungs-Objekt das eine Sammlung von Variable-Wert-Zuordnungen enthält. Zusätzlich werden Variablen in fünf Kategorien unterteilt:

  • Umgebungsvariablen

    Diese Variablen umfassen Input-Header, Serverdaten und andere anfrage-spezifische Daten. Die Variablennamen sind spezifiziert und zwar inCGI-Spezifikation

  • Formulardaten

    Diese Daten werden entweder von einem URL-verschlüsselten Abfrage-String oder -Inhalt extrahiert, sofern vorhanden.

  • Cookies

    Es handelt sich hier um die Cookie-Daten, sofern vorhanden.

  • Lazy Data ("Faule Daten")

    Dies sind Aufrufe, die aufgeschoben werden, bis ausdrücklich referenziert wird, wann sie aufgelöst (aufgerufen) und ihre Ergebnisse als "andere" Daten, v.a. normale Abfrage-Daten gespeichert werden.

    Hierdurch sind sie "faule" Datenelemente. Ein Beispiel sind die SESSION-Objekte.

    "Faule" Daten in einem Aufruf können nur von der Python-Methode method set_lazy(name,callable) im REQUEST-Objekt aufgerufen werden. Diese Methode kann nicht aus DTML oder über das Web aufgerufen werden.

  • Andere

    Daten die von einem Anwendungsobjekt gesetzt werden können.

Das Anfrage-Objekt kann als Zuordnungsobjekt verwendet werden, in diesem Fall werden Werte in folgender Reihenfolge gesucht: Umgebungsvariablen, andere Variablen, Formulardaten und schliesslich Cookies.

Diese besonderen Variablen werden im REQUEST gesetzt:

PARENTS
Eine Liste von Objekten, die umgedreht wurde um die veröffentlichten Objekte zu erhalten. So wäre PARENTS[0] der Vorfahre des veröffentlichten Objekts.
REQUEST
Das Request-Objekt.
RESPONSE
Das Response-Objekt.
PUBLISHED
Das endgültige Objekt, welches durch die Umkehrung der URLs veröffentlicht wurde.
URL
Die URL eines Requests ohne den Abfrage-String.
URLn
URL0 ist das Selbe wie URL. URL1 ist das Selbe wie URL0, wenn der letzte Pfad entfernt wurde. URL2 ist das Selbe wie URL1 wenn das letzte Element entfernt wurde, usw...

Beispiel: ist URL='http://localhost/foo/bar', dann ist URL1='http://localhost/foo' und URL2='http://localhost'.

URLPATHn
URLPATH0 ist der Teil des Pfades von URL, URLPATH1 ist der Teil des Pfades von URL1, und so weiter.

Beispiel: Ist URL='http://localhost/foo/bar', dann ist URLPATH1='/foo' and URLPATH2='/'.

BASEn
BASE0 ist die URL bis zum aber ohne das Zope-Anwendungsobjekt. BASE1 ist die URL des Zope-Anwendungsobjekts. BASE2 ist die URL des Zope-Anwendungsobjekts mit einem zusätzlichen Pfad-Element, das in den Pfad des veröffentlichten Elements integriert wurde. Und so weiter.

Beispiel: ist URL='http://localhost/Zope.cgi/foo/bar', dann ist BASE0='http://localhost', BASE1='http://localhost/Zope.cgi' und BASE2='http://localhost/Zope.cgi/foo'.

BASEPATHn
BASEPATH0 ist der Teil des Pfades von BASE0, BASEPATH1 ist der Teil des Pfades von BASE1 und so weiter. BASEPATH1 ist der nach aussen hin sichtbare Pfad zum Zope-Wurzelordner, was gleich ist mit SCRIPT_NAME in CGI, aber virtuelle Hosts erkennt.

Beispiel: ist URL='http://localhost/Zope.cgi/foo/bar', dann ist BASEPATH0='/', BASEPATH1='/Zope.cgi', und BASEPATH2='/Zope.cgi/foo'.

get_header(name, default=None)

Gibt den Namen des HTTP-Headers zurück, oder aber ein optionales Default-Argument oder None wenn der Header nicht gefunden wird. Bitte beachten Sie, dass sowohl die Namen von ursprünglichen als auch von CGI-Headern ohne HTTP_ am Anfang erkannt werden, beispielsweise sollten Content-Type, CONTENT_TYPE und HTTP_CONTENT_TYPE alle den Content-Type-Header zurückgeben, falls vorhanden.

Berechtigung:
Steht immer zur Verfügung.

items()

Gibt eine Sequenz von (Schlüssel, Wert)-Tupeln für alle Schlüssel im REQUEST-Objekt zurück.

Berechtigung:
Steht immer zur Verfügung.

keys()

Gibt eine sortierte Sequenz aller Schlüssel im REQUEST-Objekt zurück.

Berechtigung:
Steht immer zur Verfügung.

setVirtualRoot(path, hard=0)

Verändert URL, URLn, URLPATHn, BASEn, BASEPATHn und absolute_url(), so dass das aktuelle Objekt den Pfad path hat. Ist hard true, dann wird PARENTS geleert.

Stellt Unterstützung f&uum;r virtuelle Hosts zur Verfügung. Ist für den Aufruf von traversalen Veröffentlichungspunkten gedacht.

Berechtigung:
Steht immer zur Verfügung.

values()

Gibt eine Sequenz von Werten für alle Schlüssel im Request-Objekt zurück.

Berechtigung:
Steht immer zur Verfügung.

set(name, value)

Erstellt einen neuen Namen im Request-Objekt und weist ihm einen Wert zu. Dieser Name und der dazugehörige Wert werden in der "Andere"-Kategorie gespeichert.

Berechtigung:
Steht immer zur Verfügung.

has_key(key)

Gibt true zurück, wenn das Request-Objekt Schlüssel enthält, ansonsten false.

Berechtigung:
Steht immer zur Verfügung.

setServerURL(protocol=None, hostname=None, port=None)

Gibt die spezifizierten Elemente von SERVER_URL zurück, was auch Einfluss auf URL, URLn, BASEn und absolute_url() hat.

Stellt Unterstützung für virtuelle Hosts zur Verfügung.

Berechtigung:
Steht immer zur Verfügung.

Modul Response

Klasse Response

Das Response-Objekt stellt die Antwort auf eine Zope-Anfrage dar.

setHeader(name, value)

Setzt den Namen des HTTP-Return-Headers auf den Wert "value", wobei das vorige Werte-Set für den Header gelöscht wird, falls eines existiert. Ist das Literal-Flag true, wird der Fall des Header-Namens gesichert, andernfalls wird bei der Ausgabe eine Wort-Grossschreibung am Header-Namen ausgeführt.

Berechtigung:
Steht immer zur Verfügung.

setCookie(name, value, **kw)

Setzt ein HTTP-Cookie im Browser.

Die Antwort beinhaltet einen HTTP-Header, der auf cookie-verarbeitenden Browsern ein Cookie mit dem Schlüssel "name" und dem Wert "value" setzt. Hierdurch werden alle früher gesetzten Werte für das Cookie im Response-Objekt gelöscht.

Berechtigung:
Steht immer zur Verfügung.

addHeader(name, value)

Setzt einen neuen HTTP-Return-Header mit dem angegebenen Wert, während alle früher gesetzten Header mit dem selben Namen beibehalten werden.

Berechtigung:
Steht immer zur Verfügung.

appendHeader(name, value, delimiter=,)

Fügt einen Wert zu einem Cookie hinzu.

Setzt den Namen eines HTTP-Return-Headers auf den Wert "value", falls es schon einen früheren Wert gibt, wird der neue mit einem Komma angehängt.

Berechtigung:
Steht immer zur Verfügung.

write(data)

Gibt Daten als Stream zurück.

HTML-Daten können unter Verwendung einer Stream-orientierten Schnittstelle zurückgegeben werden. Dies erlaubt dem Browser, einseitige Ergebnisse während der Berechnung einer Antwort zum Fortfahren darzustellen.

Das veröffentlichte Objekt sollte zuerst jegliche Ausgabe-Header oder Cookies im Response-Objekt setzen.

Bitte beachten Sie, dass veröffentlichte Objekte nach dem Beginn der Stream-orientierten Ausgabe keine Fehler produzieren dürfen.

Berechtigung:
Steht immer zur Verfügung.

setStatus(status, reason=None)

Setzt den HTTP-Statuscode des Response-Objekts, das Argument kann entweder ein integer oder einer der folgenden Strings sein:

OK, Created, Accepted, NoContent, MovedPermanently, MovedTemporarily, NotModified, BadRequest, Unauthorized, Forbidden, NotFound, InternalError, NotImplemented, BadGateway, ServiceUnavailable

dies wird in den korrekten integer-Wert umgerechnet.

Berechtigung:
Steht immer zur Verfügung.

setBase(base)

Setzt die Basis-URL für das zurückgegebene Dokument.

Berechtigung:
Steht immer zur Verfügung.

expireCookie(name, **kw)

Verursacht, dass ein HTTP-Cookie aus dem Browser entfernt wird.

Das Response-Objekt beinhaltet einen HTTP-Header, der das Cookie anhand seines Namens auf dem Client entfernt, falls es existiert. Dies wird durch den Versand eines neuen Cookies mit einem Verfallsdatum, das schon abgelaufen ist, vervollständigt. Bitte beachten Sie, dass einige Clients einen angegebenen Pfad benötigen - dieser Pfad muss exakt der Pfad des ursprünglichen Cookies sein. Der Pfad kann als Schlüsselwort-Argument angegeben werden.

Berechtigung:
Steht immer zur Verfügung.

appendCookie(name, value)

Gibt einen HTTP-Header zurück, der ein Cookie auf Browsern, die mit Cookies arbeiten, setzt, wobei die Schlüssel "name" und "value" verwendet werden. Wurde einer der Werte für das Cookie kürzlich im Response-Objekt gesetzt, wird der neue Wert mit einem Komma an den alten angehängt.

Berechtigung:
Steht immer zur Verfügung.

redirect(location, lock=0)

Verursacht eine Umleitung ohne die Ausgabe eines Fehlers. Wird das "lock"-Argument mit dem Wert true übergeben, wird der HTTP-Umleitungs-Antwort-Code nicht verändert, sogar, wenn in der weiteren Verarbeitung der Anfrage ein Fehler auftritt (nachdem redirect() aufgerufen wurde).

Berechtigung:
Steht immer zur Verfügung.

Modul Script

Klasse Script

Eine Skript-basierte und über das Web aufrufbare Schnittstelle.

ZScriptHTML_tryAction(REQUEST, argvars)

Hängt die Test-Parameter, die aus dem Dicitonary argvars übergeben wurden an. Dies ruft das aktuelle Skript mit den gegebenen Argumenten auf und gibt das Ergebnis zurück.

Modul SessionInterfaces

Session API

Bitte beachten Sie auch:

  • Transient Object API

Klasse SessionDataManagerErr

Ein fehler, der während einer Operation des Session-Data-Managers aufgerufen wird, wie in der API-Dokumentation des Session-Data-Managers noch ausführlicher erklärt wird.

Diese Exception kann in Python-Skripten abgefangen werden. Ein erfolgreicher Import der Exception zur Benutzung in einem Python-Skript würde hierbei so aussehen:

         from Products.Sessions import SessionDataManagerErr

Klasse BrowserIdManagerInterface

Die Schnittstelle für den Manager der Zope Browser-IDs.

Eine Zope Browser-ID-Manager ist für die Zuordnung von IDs zu Besuchern verantwortlich und auch dafür, Anfragen von Session-Data-Managern in Beziehung zu Browser-IDs zu betreuen.

getBrowserId(self, create=1)

Hat create den Wert 0, so wird die aktuelle Browser-ID zurückgegeben oder aber None, falls es keinen Browser gibt, der mit der aktuellen Anfrage verknüpft ist. Hat create den Wert 1, wird die aktuelle Browser-ID zurückgegeben oder aber eine neu erstellte, falls es keinen Browser gibt, der mit der aktuellen Anfrage verknüpft ist. Diese Methode ist nützlich im Zusammenhang mit getBrowserIdName, wenn sie die Kombination Browser-ID-Name/Browser-ID als versteckten Wert in ein POST-basiertes Formular einfügen wollen. Die Browser-ID ist undurchlässig, hat keine Bedeutung für den Betrieb und Länge, Typ sowie Zusammenstellung können verändert werder.

Benötigte Berechtigung: Access contents information

Gibt folgenden Fehler aus: BrowserIdManagerErr falls eine ungültige Browser-ID im REQUEST gefunden wird.

isBrowserIdFromCookie(self)

Gibt true zurück, wenn die Browser-ID von einem Cookie stammt.

Benötigte Berechtigung: Access contents information

Gibt folgenden Fehler aus: BrowserIdManagerErr, falls es keine aktuelle Browser-Id gibt.

isBrowserIdNew(self)

Gibt true zurück, falls die Browser-ID neu ist. Eine Browser-ID ist new, wenn sie zum ersten mal erstellt wird und der Client sie also nicht innerhalb einer Anfrage an den Server zurückgeschickt hat.

Benötigte Berechtigung: Access contents information

Gibt folgenden Fehler aus: BrowserIdManagerErr, falls es keine aktuelle Browser-ID gibt.

encodeUrl(self, url)

Verschlüsselt eine bereitgestellte URL mit der aktuellen ID des Anfragen-Browsers und gibt die Ergebnisse zurück. Beispielsweise gibt der Aufruf encodeUrl('http://foo.com/amethod') das Ergebnis http://foo.com/amethod?_ZopeId=as9dfu0adfu0ad zurück.

Benötigte Berchtigung: Access contents information

Gibt folgenden Fehler aus: BrowserIdManagerErr, falls es keine aktuelle Browser-ID gibt.

flushBrowserIdCookie(self)

Löscht das Cookie mit der Browser-ID vom Browser des Clients, wenn der Namensraum der cookies-Browser-ID verwendet wird.

Benötigte Berechtigung: Access contents information

Gibt folgenden Fehler aus: BrowserIdManagerErr, wenn der cookies-Namensraum zur Zeit des Aufrufs kein Namensraum der Browser-IDs ist.

getBrowserIdName(self)

Gibt einen String mit dem Namen der Cookie/Formular-Variablen zurück, die vom aktuellen Browser-ID-Manager als zu suchender Name verwendet wird, um den Wert der Browser-ID zu erhalten. Beispiel: _ZopeId.

Benötigte Berechtigung: Access contents information

isBrowserIdFromForm(self)

Gibt true zurück, wenn die Browser-ID aus einer Formular-Variablen stammt (Abfrage-String oder -Post).

Benötigte Berechtigung: Access contents information

Gibt folgenden Fehler aus: BrowserIdManagerErr, wenn es keine aktuelle Browser-ID gibt.

hasBrowserId(self)

Gibt true zurück, wenn es eine Browser-ID für diese Anfrage gibt.

Benötigte Berechtigung: Access contents information

setBrowserIdCookieByForce(self, bid)

Setzt das Cookie mit der Browser-ID in jedem Fall auf die Browser-ID bid. Dies ist nützlich, wenn sie Browser-ID-Cookies für den selben User auf mehreren Domains einrichten müssen (vielleicht auch nur temporär, indem Abfrage-Strings verwendet werden).

Benötigte Berechtigung: Access contents information

Gibt folgenden Fehler aus: BrowserIdManagerErr, wenn der cookies-Namensraum zur Zeit des Aufrufs kein Namensraum für Browser-IDs ist.

Klasse BrowserIdManagerErr

Der Fehler, der währen einiger Operationen des Browser-ID-Managers ausgegeben werden kann. Er wird noch ausführlicher in der API-Dokumentation des Browser-ID-Managers beschrieben.

Diese Exception kann in Python-Skripts abgefangen werden. Ein erfolgreicher Import der Exception in Python-Skripts sieht folgendermassen aus:

         from Products.Sessions import BrowserIdManagerErr

Klasse SessionDataManagerInterface

Die Schnittstelle von Zopes Session-Data-Manager.

Ein Zope Session-Data-Manager ist verantwortlich für die Aufrechterhaltung von Session-Data-Objekten und für die Bearbeitung von Anfragen aus Anwendungscode an die Session-Data-Objekte. Auch kommuniziert er mit einem Browser-ID-Manager um Informationen über Browser-IDs bereitzustellen..

getSessionDataByKey(self, key)

Gibt ein Session-Data-Objekt zurück, das mit einem Schlüssel verknüpft wird. Gibt es kein solches Session-Data-Objekt, wird None zurückgegeben.

Benötigte Berechtigung: Access arbitrary user session data

getSessionData(self, create=1)

Gibt ein Session-Data-Objekt zurück, das mit der aktuellen Browser-ID verknüpft ist. Gibt es keine aktuelle Browser-ID und create hat den Wert true, wird ein neues Session-Data-Objekt zurückgegeben. Gibt es keine aktuelle Browser-ID und create hat den Wert false, wird None zurückgegeben.

Benötigte Berechtigung: Access session data

getBrowserIdManager(self)

Gibt den nächstgelegenstens erreichbaren Browser-ID-Manager zurück.

Ein SessionDataManagerErr tritt auf, wenn kein Browser-ID-Manager gefunden werden kann.

Benötigte Berechtigung: Access session data

hasSessionData(self)

Gibt true zurück, wenn ein Session-Data-Objekt, das mit der aktuellen Browser-ID verknüpft ist, im Session-Data-Container gefunden wird. Existiert kein Session-Data-Objekt, wird auch kein neues erstellt.

Benötigte Berechtigung: Access session data

Modul TransienceInterfaces

Transient Objects

Klasse TransientObject

Transient Objects ("vorübergehende Objekte") sind temporäre Objekte, die in einem temporären Objekt-Container aufbewahrt werden.

Die meiste Zeit über werden Sie ein temporäres Objekt wie ein Dictionary verwenden. Sie können die Schreibweise der Sub-Objekte von Python benutzen:

        SESSION['foo']=1
        foo=SESSION['foo']
        del SESSION['foo']

Wenn Sie ein temporäres Objekt in Python-basierten Skripts oder DTML verwenden können Sie statt dessen die get-, set- und delete-Methoden verwenden.

Methoden von temporären Objekten werden nicht durch die Sicherheitsrichtlinine geschützt.

Es ist notwendig, veränderliche Sub-Objekte neu zuzuordnen, wenn Sie sie abwandeln. Beispiel:

        l=SESSION['myList']
        l.append('spam')
        SESSION['myList']=l

Dies ist notwendig, um Ihre Veränderungen zu speichern. Bitte beachten Sie, dass dieser Sachverhalt sogar für veränderbare Sub-Elemente, die von der Persistenz erben, gilt. Persistenz-Klasse.

delete(self, k)

Call __delitem__ with key k.

Berechtigung:
Steht immer zur Verfügung.

setLastAccessed(self)

Setzt die letzte Zugriffszeit auf die aktuelle Zeit.

Berechtigung:
Steht immer zur Verfügung.

getCreated(self)

Gibt in der Form der integer-Sekunden seit der letzten Epoche an, wann das temporäre Objekt erstellt wurde.

Berechtigung:
Steht immer zur Verfügung.

values(self)

Gibt eine Sequenz von Wert-Elementen zurück.

Berechtigung:
Steht immer zur Verfügung.

has_key(self, k)

Gibt true zurück, wenn das Element, das vom Schlüssel k referenziert wird, existiert.

Berechtigung:
Steht immer zur Verfügung.

getLastAccessed(self)

Gibt die Zeit zurück, zu der zum letzten Mal auf das temporäre Objekt zugegriffen worden ist. Es wird wieder die Form der Integer-Sekunden seit der letzten Epoche verwendet.

Berechtigung:
Steht immer zur Verfügung.

getId(self)

Gibt eine aussagekräftige und eindeutige ID für das Objekt zurück.

Berechtigung:
Steht immer zur Verfügung.

update(self, d)

Verbindet das Dictionary d mit dem dem Dictionary aus "self".

Berechtigung:
Steht immer zur Verfügung.

clear(self)

Entfernt alle Schlüssel/Wert-Paare.

Berechtigung:
Steht immer zur Verfügung.

items(self)

Gibt eine Sequenz von (Schlüssel, Wert)-Elementen zurück.

Berechtigung:
Steht immer zur Verfügung.

keys(self)

Gibt eine Sequenz von Schlüssel-Elementen zurück.

Berechtigung:
Steht immer zur Verfügung.

get(self, k, default=marker)

Gibt Werte verbunden mit dem Schlüssel k zur&uumk;ck. Existiert k nicht und default hat nicht den Wert marker, wird default zurückgegeben, ansonsten wird ein KeyError ausgegeben.

Berechtigung:
Steht immer zur Verfügung.

set(self, k, v)

Ruft __setitem__ mit dem Schlüssel k und dem Wert v auf.

Berechtigung:
Steht immer zur Verfügung.

getContainerKey(self)

Gibt den Schlüssel zurück, unter dem das Objekt in seinem Container gelagert wird. getContainerKey gibt oftmals einen anderen Wert zurück als getId.

Berechtigung:
Steht immer zur Verfügung.

invalidate(self)

De-Validiert das temporäre Objekt, lässt es also verfallen.

Als weiterer Effekt wird die "before destruct"-Methode im temporären Objekt Container, die zu diesem Objekt gehört, aufgerufen.

Berechtigung:
Steht immer zur Verfügung.

Klasse MaxTransientObjectsExceeded

Eine vom Modul Products.Transience.Transience importierbare Exception, die auftritt, wenn ein Versuch gestartet wird, ein Element zu einem temporären Objekt-Container hinzuzufügen, der voll ist.

Diese Exception kann durch einen normalen Import in Python-Skripts abgefangen werden. Ein erfolgreicher Import der Exception kann folgendermassen erreicht werden:

        from Products.Transience import MaxTransientObjectsExceeded

Klasse TransientObjectContainer

TransientObjektContainers enthalten temporäre Objekte, meist sind dies Session-Daten.

Sie werden selten einen temporären Objekt-Container ausarbeiten müssen. Meistens werden Sie mit den temporären Objekten selber arbeiten, die sie normalerweise über REQUEST.SESSION erhalten.

new(self, k)

Erstellt ein neues Sub-Objekt mit dem Schlüssel k. Das Objekt hat den Typ, der von diesem Container unterstützt wird und wird anschliessend zurückgegeben.

Existiert ein Objekt mit dem Schlüssel k bereits in diesem Container, wird ein KeyError aufgerufen.

"k" muss ein String sein, da sonst ein KeyError ausgelöst wird.

Ist der Container voll, wird ein MaxTransientObjectsExceeded-Fehler ausgelöst.

Berechtigung:
Create Transient Objects

setDelNotificationTarget(self, f)

Setzt die before destruction-Funktion auf den Wert f.

Kann f nicht aufgerufen werden und ist kein String, wird sein Wert als Zope-Pfad zu einer ausführbaren Funktion behandelt.

before destruction-Funktionen benötigen ein einzelnes Argument: item, was das zu löschende Element beschreibt.

Berechtigung:
Manage Transient Object Container

getTimeoutMinutes(self)

Gibt die Zahl der Minuten zurück, die für die Inaktivität von Objekten genehmigt ist, bevor diese verfallen.

Berechtigung:
View management screens

has_key(self, k)

Gibt true zurück, wenn der Container einen Wert enthält, der mit dem Schlüssel k verknüpft ist, ansonsten wird false zurückgegeben.

Berechtigung:
Access Transient Objects

setAddNotificationTarget(self, f)

Bewirkt, dass die after add-Funktion auf den Wert f gesetzt wird.

Ist f nicht ausführbar, jedoch ein String, wird sein Wert als Zope-Pfad zu einer ausführbaren Funktion behandelt.

after add-Funktionen benötigen ein einzelnes Argument: item, was das Objekt ist, das in den Container eingefügt werden soll.

Berechtigung:
Manage Transient Object Container

getId(self)

Gibt eine aussagekräftige und eindeutige ID für das Objekt zurück.

Berechtigung:
Steht immer zur Verfügung.

setTimeoutMinutes(self, timeout_mins)

Ändert die Anzahl an Minuten, die ein Sub-Objekt inaktiv sein darf, bevor es verfällt.

Berechtigung:
Manage Transient Object Container

new_or_existing(self, k)

Wenn bereits ein Objekt mit dem Schlüssel k im Container existiert, wird es zurückgegeben.

Andernfalls wird ein neues Sub-Objekt vom in diesem Container unterstützten Typ mit dem Schlüssel k erstellt und zurückgegeben.

"k" muss ein String sein, ansonsten wird ein TypeError ausgegeben.

Ist der Container voll, wird eine MaxTransientObjectsExceeded-Exception ausgegeben.

Berechtigung:
Create Transient Objects

get(self, k, default=None)

Gibt den Wert zurück, der mit dem Schlüssel k verknüpft ist. Existiert kein solcher Wert, wird der Default-Wert zurückgegeben.

Berechtigung:
Access Transient Objects

getAddNotificationTarget(self)

Gibt die aktuelle after add-Funktion oder aber None zurück.

Berechtigung:
View management screens

getDelNotificationTarget(self)

Gibt die aktuelle before destruction-Funktion oder aber None zurück.

Berechtigung:
View management screens

Modul UserFolder

Klasse UserFolder

UserFolder-Objekte sind Container für Benutzer-Objekte. Programmierer können mit Sammlungen von Benutzer-Objekten arbeiten, indem sie die API verwenden, die von den UserFolder-Implementierungen bereitgestellt wird.

userFolderEditUser(name, password, roles, domains, **kw)

Eine API-Methode, mit der die Attribute von Benutzer-Objekten verändert werden können. Bitte beachten Sie, dass nicht alle UserFolder-Implementierungen die Änderung dieser Attribute erlauben. Implementierungen, die sie nicht unterstützen werden einen Fehler für diese Methode ausgeben.

Berechtigung:
Manage users

userFolderDelUsers(names)

Eine API-Methode, mit der ein oder mehrere Benutzer-Objekte entfernt werden können. Bitte beachten Sie, dass nicht alle UserFolder-Implementierungen das Löschen von Benutzer-Objekten erlauben. Implementierungen, die dies nicht unterstützen geben einen Fehler für diese Methode aus.

Berechtigung:
Manage users

userFolderAddUser(name, password, roles, domains, **kw)

Eine API-Methode, mit der neue Benutzer-Objekte angelegt werden können. Bitte beachten Sie, dass nicht alle UserFolder-Implementierungen das Erstellen von Benutzer-Objekten erlauben. Implementierungen, die dies nicht unterstützen, geben einen Fehler für diese Methode aus.

Berechtigung:
Manage users

getUsers()

Gibt eine Sequenz aller Benutzer-Objekte zurück, die sich im Benutzer-Ordner befinden.

Berechtigung:
Manage users

getUserNames()

Gibt eine Sequenz von Namen der Benutzer zurück, die sich im Benutzer-Ordner befinden.

Berechtigung:
Manage users

getUser(name)

Gibt das durch den Namen spezifizierte Benutzer-Objekt zurück. Gibt es keinen Benutzer namens name im Benutzer-Ordner, wird None zurückgegeben.

Berechtigung:
Manage users

Modul Vocabulary

Klasse Vocabulary

Ein Vocabulary verwaltet Wort- und Sprachregeln für die Katalogisierung von Text. Text-Katalogisierung wird vom ZCatalog und anderen Produkten von Drittanbietern durchgeführt.

words()

Gibt eine Wortliste zurück.

insert(word)

Fügt ein Wort in das Vocabulary ein.

query(pattern)

Frägt das Vocabulary nach Worten ab, die dem Suchmuster entsprechen.

ObjectManager Constructor

manage_addVocabulary(id, title, globbing=None, REQUEST=None)

Fügt ein Vocabulary-Objekt zum Objekt-Manager hinzu.

Modul ZCatalog

Klasse ZCatalog

ZCatalog-Objekt

Ein ZCatalog enthält beliebige Indexe wie etwa Referenzen auf Zope-Objekte. ZCatalogs können entweder Field-Werte des Objekts indexieren oder aber Text-Werte oder KeyWord-Werte:

ZCatalogs haben drei Arten von Indexen:

Text
Text-Indexe indexieren Textinhalte. Der Index kann verwendet werden, um nach Objekten zu suchen, die bestimmte Worte enthalten.
Field
Field-Indexe indexieren atomare Werte. Der Index kann zur Suche nach Objekten verwendet werden, die bestimmte Eigenschaften haben.
Keyword
Keyword-Indexe indexieren Wert-Sequenzen. Der Index kann verwendet werden, um nach Objekten zu suchen, die einem oder mehreren Suchausdrücken entsprechen.

Der ZCatalog kann eine Table von zusätzlichen Daten aufrechterhalten, die katalogisierte Objekte beschreiben. Diese Informationen können auf Such-Ergebnisseiten verwendet werden, um Informationen über die Suchergebnisse anzuzeigen.

Das Schema der Tabelle der Meta-Daten wird verwendet, um das Schema für die ZCatalog-Ergebnisobjekte zu erstellen. Die Objekte haben die gleichen Attribute wie die Spalten der Tabelle der Meta-Daten.

ZCatalogs speichern keine Referenzen zum Objekt selber sonder zu einem eindeutigen Bezeichner der definiert, wie man das Objekt bekommt. In Zope ist dieser eindeutige Bezeichner der relative Pfad des Objekts zum ZCatalog (da zwei Zope-Objekte nie die gleiche URL haben können, ist dies der beste eindeutige Bezeichner).

schema()

Gibt eine Sequenz von Namen zurück, die mit den Spalten in der Meta-Daten-Tabelle korrespondieren.

__call__(REQUEST=None, **kw)

Durchsucht den Katalog auf die selbe Art wie searchResults.

uncatalog_object(uid)

Entfernt das Objekt mit dem eindeutigen Bezeichner uid (nur!) aus dem Katalog.

getobject(rid, REQUEST=None)

Gibt ein katalogisiertes Objekt zurück, wenn eine data_record_id_ angegeben wurde.

indexes()

Gibt eine Sequenz von Namen zurück, die mit den Indexen korrespondieren.

getpath(rid)

Gibt den Pfad zum katalogisierten Objekt zurück, wenn eine data_record_id_ angegeben wurde.

index_objects()

Gibt eine Sequenz akuteller Index-Objekte zurück.

searchResults(REQUEST=None, **kw)

Durchsucht den Katalog. Such-Ausdrücke können im REQUEST oder als Schlüsselwort-Argumente übergeben werden.

Such-Anfragen bestehen aus einer Zuordnung von Indexnamen zu Such-Parametern. Sie können entweder eine Zuordnung an searchResults als Variable REQUEST übergeben oder Sie können Indexnamen und Such-Parameter als Schlüsselwort-Argumente der Methode verwenden, in anderen Worten:

          searchResults(title='Elvis Exposed',
                        author='The Great Elvonso')

ist das Selbe wie:

          searchResults({'title' : 'Elvis Exposed',
                         'author : 'The Great Elvonso'})

In diesen Beispielen sind title und author Indexe. Diese Anfrage gibt alle Objekte zurück, die den Titel Elvis Exposed haben UND vom Autor The Great Elvonso sind. Ausdrücke, die als Schlüssel und Werte in einem searchResults()-Aufruf übergeben werden werden ohne Bedingung mit AND verknüpft. Um zwei Sucherergebnisse mit OR zu verknüpfen rufen Sie die searchResults()-Methode zweimal auf und verknüpfen die Ergebnisse wie hier:

          results = ( searchResults(title='Elvis Exposed') +
                      searchResults(author='The Great Elvonso') )

Dies gibt alle Objekte zurück, die den Titel ODER den Autor haben.

Es gibt einige spezielle Index-Namen, die Sie übergeben können, um das Verhalten der Such-Abfrage zu verändern:

sort_on
Dieser Parameter legt fest, nach welchem Index die Resultate sortiert werden sollen.
sort_order
Sie können festlegen, ob die defaultmässige Sortierreihenfolge reverse (rückwärts) oder descending (absteigend) sein soll. Wurde hier nichts verändert, wird immer ascending (aufsteigend) sortiert.

Es gibt einige Regeln, die sie beim Benutzen dieser Methode beachten sollten:
  • eine leere Suchzuordnung (oder ein simulierter REQUEST) gibt alle Elemente des Katalogs zurück.
  • Ergebnisse aus einer Abfrage, die nur Feld/Schlüsselwort-Indexe einbezieht, z.B. {'id':'foo'} und keinen sort_on benutzen werden unsortiert zurückgegeben.
  • Ergebnisse einer komplexen Abfrage, die einen Feld/Schlüsselwort-Index und einen Text-Index enthält, z.B. {'id':'foo','PrincipiaSearchSource':'bar'} und keinen sort_on beschreiben werden unsortiert zurückgegeben.
  • Ergebnisse einer einfachen Text-Index-Abfrage, z.B. {'PrincipiaSearchSource':'foo'} werden in absteigender Reihenfolge, nach score sortiert, zurückgegeben. Ein Text-Index kann nicht als sort_on-Parameter verwendet werden, falls Sie dies doch versuchen, tritt ein Fehler auf.

Abhängig vom Typ des Indexes, den sie abfragen, können Sie fortgeschrittene Such-Parameter angeben, die das Suchfeld eingrenzen oder Platzhalter erzeugen. Diese Eigenschaften werden im Zope-Buch beschrieben.

uniqueValuesFor(name)

Gibt die eindeutigen Werte für einen angegebenen FieldIndex namens name zurück.

catalog_object(obj, uid)

Katalogisiert die Objekte obj mit dem eindeutigen Bezeichner uid.

ObjectManager Constructor

manage_addZCatalog(id, title, vocab_id=None)

Fügt ein ZCatalog-Objekt hinzu.

vocab_id ist der Name eines Vocabulary-Objektes, das dieser Katalog verwenden soll. Der Wert None wird hier verursachen, dass der Katalog sein eigenes privates Vocabulary erstellt.

Modul ZSQLMethod

Klasse ZSQLMethod

ZSQL-Methoden abstrahieren SQL-Code in Zope.

SQL-Methoden verhalten sich wie Methoden der Ordner, in denen auf sie zugegriffen wird. Insbesondere können sie von anderen Methoden verwendet werden, beispielsweise Dokumenten, externen Methoden, oder sogar anderen SQL-Methoden.

Datenbank-Methoden unterstützen die Searchable-Objekt-Schnittstelle. Assistenten für Such-Schnittstellen können verwendet werden, um Benutzer-Schnittstellen für sie zu erstellen. Sie können in joins und unions verwendet werden. Sie stellen Meta-Daten über ihre Input-Parameter und Ergebnis-Daten bereit.

Für weitere Informationen beachten Sie bitte die Spezifikationen der Searchable-Objekt-Schnittstelle.

Datenbank-Methoden unterstützen das Traversal von URLs, um auf Methoden individueller Record-Ojbkete zuzugreifen und sie aufzurufen. Zum Beispiel: angenommen, Sie haben eine employees-Datenbank-Methode die ein einzelnes Argument employee_id aufnimmt. Weiterhin haben die employees eine service_record-Methode (definiert in einer Record-Klasse oder aus einem Ordner erhalten). Auf die service_record-Methode könnten mit einer URL wie:

         employees/employee_id/1234/service_record
zurgreifen.

Suchergebnisse werden als Record-Objekte zurückgegeben. Das Schema der Record-Objekte entspricht dem Schema der in der Suche abgefragten Tabelle.

manage_edit(title, connection_id, arguments, template)

Verändert die Einstellungen der Datenbank-Methoden.

Das connection_id-Argument ist die ID einer Datenbank-Verbindung, die sich im aktuellen Ordner oder in einem Ordner über dem aktuellen Ordner befindet. Die Datenbank sollte SQL verstehen.

Das arguments-Argument ist ein String, der eine Spezifizierung eines Arguments enthält, wie sie auch im Formular zur Erstellung von SQL-Methoden angegeben würde.

Das template-Argument ist ein String, der die Quelle für das SQL-Template enthält.

__call__(REQUEST=None, **kw)

Ruft die ZSQL-Methode auf.

Die Argumente zu dieser Methode sollten als Schlüsselwort-Argumente übergeben werden oder aber in einem einzelnen Zuordnungs-Objekt. Werden keine Argumente angegeben und die Methode über das Web aufgerufen, wird die Methode versuchen, das Web-REQUEST-Objekt zu erhalten und als Zuordnungs-Argument zu verwenden.

Die zurückgegebenen Werte sind eine Sequenz von Record-Objekten.

ObjectManager Constructor

manage_addZSQLMethod(id, title, connection_id, arguments, template)

Fügt eine SQL-Methode zum Objekt-Manager hinzu.

Das connection_id-Argument ist die ID einer Datenbank-Verbindung, die sich im aktuellen Ordner oder in einem Ordner über dem aktuellen Ordner befindet. Die Datenbank sollte SQL verstehen.

Das arguments-Argument ist ein String, der eine Spezifizierung eines Argumentes enthält, wie sie auch im Formular zuer Erstellung einer SQL-Methode angegeben werden würde.

Das template-Argument ist ein String, der die Quelle für das SQL-Template enthält.

Modul ZTUtils

ZTUtils: Page Template Utilities (Dienstprogramme für Seitenvorlagen)

Die Klassen in diesem Modul sind von Seitenvorlagen aus verwendbar.

Klasse Batch

Batch - eine Sektion einer grossen Sequenz.

Sie können Batches verwenden um grosse Sequenzen (wie etwa Suchergebnisse) auf verschiedene Seiten aufzuteilen.

Batches stellen Seitenvorlagen bereit, die vergleichbare Funktionen haben wie die, die in standardmässig enthalten sind.

Sie können auf Elemente eines Batches einfach so zugreifen, wie sie das bei Elementen einer Liste tun, z.B:

        >>> b=Batch(range(100), 10)
        >>> b[5]
        4
        >>> b[10]
        IndexError: list index out of range

Batches haben diese öfftentlichen Attribute:

start
Die Nummer des ersten Elements (von 1 weg gezählt).
first
Der erste Element-Index (von 0 weg gezählt). Bitte beachten Sie, dass dies das selbe ist wie start - 1.
end
Die Nummer des letzten Elementes (von 1 weg gezählt).
orphan
Die gewünschte Minimal-Grösse des Batches. Dies kontrolliert, wie Sequenzen in Batches aufgeteilt werden. Käme ein kleineres Batch als die Grösse von orphan vor, würde keine Aufteilung ausgeführt und ein Batch, das grösser ist als die Batch-Grösse käme heraus.
overlap
Die Zahl an Elementen, die sich zwischen zwei Batches überschneiden.
length
Die tatsächliche Länge des Batches. Bitte beachten Sie, dass dies ein anderes Ergebnis als size ergeben kann, je nachdem, welchen Wert orphan hat.
size
Die gewünschte Grösse. Bitte beachten Sie, dass dies ein anderes Ergebnis als die aktuelle Länge des Batches ergeben kann, je nachdem, welchen Wert orphan hat.
previous
Das vorige Batch oder None, falls dies das erste Batch ist.
next
Das nächste Batch oder None, falls dies das letzte Batch ist.

__init__(self, sequence, size, start=0, end=0, orphan=0, overlap=0)

Erstellt ein neues Batch mit der gegebenen Sequenz und der gewünschten Batch-Grösse.

sequence
Die komplette Sequenz.
size
Die gewünschte Batch-Grösse.
start
Der Index des Anfangs des Batches (von 0 weg gezählt).
end
Der Index des Endes des Batches (von 0 weg gezählt).
orphan
Die gewünschte Minimal-Grösse des Batches. Die kontrolliert, wie Sequenzen in Batches aufgeteilt werden. Kommt ein Batch vor, das kleiner ist als die Grösse von orphan, wird keine Aufteilung durchgeführt und ein Batch, das grösser ist als die Batch-Grösse wird zurückgegeben.
overlap
Die Anzahl an Elementen, die sich zwischen Batches überschneiden.

Modul math

math: Python math-Modul

Das math-Modul stellt trigonomische und andere mathematische Funktionen bereit. Es ist ein standardmässiges Python-Modul.

Da Zope 2.4 wird Python 2.2 benötigt, lesen Sie hierzu bitte die Dokumentation von Python 2.1.

Bitte beachten Sie auch die

Python math module-Dokumentation auf Python.org.

module random

random: Python random-Modul

Das random-Modul stellt Funktionen für Pseudo-Zufallszahlen bereit. Mit ihnen können Sie Zufallszahlen erstellen und zufällige Elemente aus Sequenzen auswählen. Dieses Modul ist standardmässig in Python integriert.

Da Zope 2.4 wird Python 2.2 benötigt, lesen Sie hierzu bitte die Dokumentation von Python 2.1.

Bitte beachten Sie auch die

Python random module-Dokumentation auf Python.org

module sequence

sequence: Modul zum Sortieren von Sequenzen

Dieses Modul stellt eine sort-Funktion bereit, die mit DTML, Seitenvorlagen und Python-basierten Skripten verwendet werden kann.

def sort(seq, sort)

Sortiert die Sequenz seq von Objekten anhand des optionalen Sortierschemas sort. sort ist eine Sequenz von (key, func, direction)-Tupeln, die die Sortierreihenfolge beschreiben.

key
Das Attribut des Objektes, nach dem sortiert wird.
func
Definiert die Vergleichsfunktion (optional). Erlaubte Werte:
"cmp"
Standardmässige Vergleichsfunktion von Python
"nocase"
Vergleich unterscheidet nicht nach Gross- und Kleinschreibung
"strcoll" or "locale"
String-Vergleich unter Einbeziehung der Lokalen
"strcoll_nocase" or "locale_nocase"
String-Vergleich unter Einbeziehung der Lokalen ohne Beachtung von Gross- und Kleinschreibung
other
Eine spezifizierte, vom Benutzer definierte Vergleichsfunktion, die 1, 0 oder -1 zurückgeben sollte.
direction
definiert die Sortierreihenfolge für den Schlüssel (optional). (Erlaubte Werte: "asc", "desc")

DTML-Beispiele

Sortiert das child-Objekt (unter Benutzung der objectValues-Methode) anhand der ID (unter Benutzung der getId-Methode), wobei Gross- und Kleinschreibung ignoriert werden:

             
                

Sortiert die child-Objekte anhand des Titels (ohne Gross- und Kleinschreibung) und des Datums (vom neuesten zum ältesten):

             
                 

Beispiele für Seitenvorlagen

Sie können die sequence.sort-Funktion in Python-Ausdrücken verwenden, um Objekte zu sortieren. Hier ein Beispiel, dass das DTML-Beispiel von oben darstellt:

             
title modification date

Dieses Beispiel läuft über eine sortierte Liste von Objekten und zeichnet für jedes Objekt eine Zeile in einer Tabelle. Die Objekte werden anhand des Titels und des Änderungsdatums sortiert.

Bitte beachten Sie auch:

Python cmp function

Modul standard

  1. PythonScripts.standard: Dienstanwendungsfunktionen und -klassen

    Die Funktionen und Klassen dieses Moduls können in Python-basierten Skripten, DTML und Seitenvorlagen verwendet werden.

def structured_text(s)

Konvertiert einen String vom structured-text-Format zu HTML.

Bitte beachten Sie auch:

Structured-Text Rules

def html_quote(s)

Konvertiert Zeichen, in HTML eine besondere Bedeutung haben, zu HTML-Instanzen.

Bitte beachten Sie auch:

Python cgi module_in_cgi_module.html escape-Funktion.

def url_quote_plus(s)

Wie url_quote, aber hier werden auch Leerzeichen durch + ersetzt. Dies wird für die Erstellung von Abfrage-String in einigen Fällen benötigt.

Bitte beachten Sie auch

Python urllib module url_quote_plus-Funktion.

def dollars_and_cents(number)

Stellt einen numerischen Wert mit einem Dollar-Symbol und zwei Nachkommastellen dar.

def sql_quote(s)

Konvertiert einfach Anführungszeichen zu doppelten. Dies wird benütigt, um Werte richtig in SQL-Strings einzufügen.

def whole_dollars(number)

Stellt einen numerischen Wert mit einem Dollar-Zeichen dar.

def url_quote(s)

Konvertiert Zeichen, die in URLs eine besondere Bedeutung haben, in HTML Character-Instanzen um, wobei Dezimalwerte bnutzt werden.

Bitte beachten Sie auch

Python urllib module url_quote-Funktion.

class DTML

DTML - temporäre, durch Sicherheitsrichtlininen eingeschränkte DTML-Objekte

__init__(source, **kw)

Erstellt ein DTML-Objekt inklusive Quelltext und Schlüssel-Variablen. Der Quelltext definiert den DTML-Quellinhalt. Die optionalen Schlüsselwort-Argumente definieren Variablen.

call(client=None, REQUEST={}, **kw)

Rendert die DTML.

Um ihre Aufgaben zu erfüllen, muss die DTML oftmals verschiedene Namen in Objekte auflösen. Beispiel: wenn der Code spam aufzulösen.

Um Namen aufzulösen, müssen Sie einen Namensraum an die DTML übergeben. Dies kann auf verschiedene Arten erreicht werden:

  • Indem ein client-Objekt übergeben wird - Wird das Argument client übergeben, werden Namen als Attribute der Argumente gesucht.
  • Indem eine REQUEST-Zuordnung übergeben wird - Wird das Argument REQUEST übergeben, werden Namen als Elemente eines Arguments gesucht. Ist das Argument keine Zuordnung, wird ein TypeError ausgegeben, sobald ein Suchvorgang gestartet wird.
  • Indem Schlüsselwort-Argumente übergeben werden -- Namen und ihre Werte können als Schlüsselwort-Argumente an die Methode übergeben werden.

Der Namensraum, der an ein DTML-Objekt übergeben wird ist die Zusammenstellung dieser drei Methoden. Sie können jede Anzahl von ihnen oder aber keine der drei Methoden übergeben. Namen werden zuerst im Schlüsselwort-Argument gesucht, dann im Client und schliesslich in der Zuordnung.

def thousand_commas(number)

Fügt alle drei Stellen links vom Dezimalpunkt ein Komma in Werte ein, die Nummern enthalten. Beispiel: Der Wert "12000 widgets" wird zu "12,000 widgets".

def newline_to_br(s)

Konvertiert Zeilenumbrüche zu break-Tags.

Modul string

string: Python string-Modul

Das string-Modul stellt String-Manipulationen, -Konvertierungen und Suchfunktionen bereit. Es ist standardm&auuml;ssig in Python integriert.

Da Zope 2.4 wird Python 2.2 benötigt, lesen Sie hierzu bitte die Dokumentation von Python 2.1.

Bitte beachten Sie auch die

Python string module-Dokumentation auf Python.org