ZopeFax Dokumentation: Dokumentation der T-Systems GEI GmbH Business Unit Sachsen, Version 1.02 (27.11.2003) | ||
---|---|---|
<<< Previous | Implementierung | Next >>> |
Das Zope-Objekt userCheck dient dem Abgleich der persönlichen Faxboxen der Nutzer mit gültigen LDAP-Nutzern. Durch dieses Skript werden alle Faxboxen ermittelt, deren Bezeichnung nicht mit einem LDAP-Nutzerkürzel übereinstimmen.
Das Skript wird ausgeführt, indem ein Fax-Manager aus der Manager-Inbox den Link "Faxnutzerordner" (Link im oberen Seitenbereich) aktiviert.
Im Folder initMethods sind zwei Skripte enthalten, die zur Erzeugung einer Fax-Instanz benötigt werden. Die Skripte initFolders und initObjects generieren die benötigten Zope-Objekte einer Fax-Instanz.
Das Skript initFolders erzeugt ein Folder für die Fax-Manager-Inbox, ein Folder in dem die perönlichen Inboxen der Nutzer angelegt werden und die Folder für das Upload der Faxe in die Zope-Umgebung und den Ordner, der den Papierkorb repräsentiert. Neben der Erzeugung der Folder werden noch die benötigten Zope-Rollen für die Fax-Instanz angelegt und mit den jeweiligen Rechten ausgestattet.
Das Skript initObjects generiert Zope-Objekte speziellen Typs innerhalb der Fax-Instanz, indem bereits vorliegende Template-Objekte in die oberste Verzeichnisebene der Fax-Instanz kopiert werden. Objekte die durch initObjects angelegt werden sind:
Mail Host
LDAPUserFolder-Objekt acl_users
Xron-Objekt faxAge
Die geschriebenen externen Python-Methoden realisieren spezielle Funktionen für den Einsatz im Fax-Produkt. Um diese Funktionalitäten zu implementieren griff man auf Python-Module zurück, deren Einsatz die Entwicklung der Fax-spezifischen Skripte wesentlich verkürzt hat. Aufgrund der verwendeten Python-Module mussten nicht alle Teilaufgaben selbst implementiert werden, sondern man nutzt die von den Modulen bereitgestellten Funktionen.
Folgende Python-Module werden für die Abarbeit der externen Methoden benötigt:
ldap
gzip
os
PIL (Perl Imaging Library)
popen2
re
string
StringIO
sys
time
traceback
ZODB
Zope
Die externe Python-Methode rotateFax ist Bestandteil des Python-Moduls rotateFax.py, welches im Verzeichnis /usr/local/Zope/Extensions abgelegt wurde. Im Zope-Produkt Fax wird diese Methode im Verzeichnis methods eingebunden.
Die Methode rotateFax ermöglicht es dem Nutzer, ein Fax um 90 bzw. 180 Grad zu drehen. Diese Option wird angeboten, wenn der Nutzer ein Fax zum Betrachten geöffnet hat. Das Skript erwartet als Übergabeparameter das Faxobjekt und die Angabe der Gradzahl, um die das Fax gedreht werden soll. Weitere im Skript verwendete Variablen sind innerhalb von Zope global definiert (Propertysheet Konfiguration).
Diese Methode greift sowohl auf verschiedene Python-Module (siehe benötigte Python-Module) zurück als auch auf Tools (pstops, ps2pdf13, tiff2ps, tiffsplit, tiff2png), welche vom Betriebssystem (Red Hat Linux) mitgeliefert wurden. Um die korrekte Funktion des Moduls zu gewährleisten, ist darauf zu achten, dass diese Tools und Module auf dem System verfügbar sind.
tiffsplit - Splitten des Originals entsprechend Seitenanzahl
tiff2png - Aufbereiten der Einzelseiten für Webanzeige
tiff2ps - Zwischenkonvertierung für PDF-Erzeugung
pstops - Tool zur Rotation der PS-Files
ps2pdf13 - Erzeugen eines PDF-Dokumentes aus PS-File
Methoden-Aufruf und Übergabe-Parameter:
rotateFax(faxId, grad)
faxId - Objekt-ID des Faxobjektes
grad - Gradanzahl (90 oder 180) für die Drehung des Faxes
Die Methode faxRecover innerhalb des Python-Moduls faxRecover.py gibt den Administratoren des Zope-Systems die Möglichkeit, aus dem Fax-Quellfile (im tif-Format) sowohl das PDF als auch die PNGs neu zu erzeugen.
Als Übergabeparameter erwartet diese Methode den Namen des Faxobjektes (Objekt-ID des jeweiligen Fax-Folders innerhalb von Zope).
Diese Methode nutzt ebenfalls die Module und Tools, die im Abschnitt zur Methode rotateFax beschrieben wurden.
Methoden-Aufruf und Übergabe-Parameter:
faxRecover(faxId)
faxId - Objekt-ID des Faxobjektes
Um diese Methode der Wiederherstellung eines Faxes anzuwenden, muss sich ein autorisierter Nutzer in die Zope Management Umgebung einloggen und in die Faxinstanz navigieren. Auf der obersten Ebene der Faxinstanz ist ein Tab zu sehen, auf dem Rebuild steht. Klickt man auf diesen Tab, so kann man in zwei Schritten das jeweilige Fax im jeweiligen Faxnutzerordner wiederherstellen lassen.
Die externen Python-Methoden genPNG, genGZ und genPDF sind Helfer-Methoden, die an den Prozessen des Faxrotierens und Faxwiederherstellens beteiligt sind. Der Quellcode dieser Methoden befindet sich in der Datei libRotate.py unter /usr/local/Zope/Extensions/. In diesen Methoden sind Teilaufgaben des Rotations- bzw. Wiederherstellungsprozesses ausgegliedert.
Die Methode genPNG repräsentiert die Funktion genPNG() im File libRotate.py und generiert aus dem ursprünglichen TIFF-File die einzelnen PNG-Dateien, welche für die Browseransicht eines Faxes benötigt werden.
Methoden-Aufruf und Übergabe-Parameter:
genPNG(file,ctx)
file - tiff-File-Objekt in Zope
ctx - Kontext des tiff-File-Objekt in Zope (Ordner in dem tiff-File liegt)
Die Methode genGZ repräsentiert die Funktion genGZ() im File libRotate.py und generiert aus dem ursprünglichen TIFF-File ein PS-Dokument, welches für die spätere Erzeugung eines PDF-Dokumentes benötigt wird, und ein GZ-Archiv, welches dieses PS-Dokument enthält. Das GZ-Archiv enthält immer das ursprüngliche PS-File (generiert aus dem originalen tiff-File).
Methoden-Aufruf und Übergabe-Parameter:
genGZ(file,ctx)
file - tiff-File-Objekt in Zope
ctx - Kontext des tiff-File-Objekt in Zope (Ordner in dem tiff-File liegt)
Die Methode genPDF repräsentiert den Aufruf der Methode rwpopen() im File libRotate.py mit dem Kommando ps2pdf13 (und speziellen Argumenten) als Übergabeparameter. Die Methode rwpopen() ist eine Lösung zum deadlock-freien Absetzen von Systemaufrufen (z.B. Kommandozeilen-Tools), bei denen man Daten auf Standardeingabe schreiben und das Ergebnis von Standardausgabe lesen kann. Als Übergabeparameter verlangt die Funktion einen Kommando-String, eine Liste von Argumenten (wobei das erste Listenelement nochmals das Kommando sein muss) und die Daten (in einem StringIO-Objekt), welche auf Standardeingabe geschrieben werden sollen.
Methoden-Aufruf und Übergabe-Parameter:
genPDF(COMMAND,ARGS,input)
COMMAND - Kommandozeilen-Aufruf (string)
ARGS - Liste von Argumenten (Liste)
input - Daten für Standardeingabe (StringIO-Objekt)
Die externe Methode searchLDAPsort wird benötigt, um Nutzerinformationen aus einem LDAP-System abzufragen. Diese Methode befindet sich im Modul searchLDAP_sort.py. Wie schon das oben erwähnte Modul rotateFax.py, liegt auch dieses Modul im Verzeichnis /usr/local/Zope/Extensions. Innerhalb des Zope-Produktes Fax ist diese externe Methode im Verzeichnis methods plaziert worden. Es verbindet sich zu einem LDAP-Server und stellt eine Anfrage, welche folgende Daten liefert:
Nutzerkürzel (uid)
Vornamen (givenName)
Nachnamen (sn)
Methoden-Aufruf und Übergabe-Parameter:
searchLDAPsort()
Der Aufruf der Methode erfolgt ohne die Angabe von Übergabe-Parametern. Der Rückgabewert dieses Skriptes ist eine geordnete Liste, welche die obigen Informationen enthält.
Diese Art der Abfrage von Nutzern erwies sich als effizientere Alternative zum Gebrauch des Zope-Produktes LDAPUserFolder, da deutliche Geschwindigkeitsvorteile zu erkennen waren.
Dieses Skript wird u.a. eingesetzt, um dem Fax-Manager in der Manager-Inbox alle Nutzer aufzulisten, an die ein Fax weitergeleitet werden kann.
<<< Previous | Home | Next >>> |
Implementierung | Up | DTML-Dokumente und DTML-Methoden |