Basisklasse fuer Authentifizierung Die Autentifizierung basiert auf einer Sessionvariable namens user. Ist diese gesetzt gilt der Benutzer als angemeldet
Konstruktor param session Sessionobjekt
Liefert den aktuellen User
Initialisierung
Liefert wahr, wenn benutzer vorhanden ist
ABSTRAKT: liefert eine Liste von Rechten, wenn Benutzer eingelogt
Liefert True, wenn uebergebenens Recht in der Rechteliste vorhanden ist param right Recht return [True|False]
Liefert die Userinformatioenn oder eine leeres Dictionary,wenn nicht gefunden. param user Benutzername
Liefert Passwort des aktuellen Benutzers oder None wenn nicht gefunden
Setzt die Rechte des Users, wenn eingeloggt
Stellt einen Typensicherheitsmechanismus zur Verfuegung. Diese Klasse wird ovn dbaccess.core verwendent
Es werden folgende Typen ueberprueft: + String + Integer + Float, Double + Date (Basiierend auf dem Dateconvertert Objekt) + email
Pruefen ob der uebergene Wert ein String ist. param value return [True|False]
Pruefen ob der uebergene Wert ein Integer ist. param value return [True|False]
Pruefen ob der uebergene Wert ein Float ist. param value return [True|False]
Pruefen auf gueltiges Datum vorhanden ist dies geschieht durch die Klasse Dateconverter param value return [True|False]
MINI emailadressencheck basierend auf http://www.daniweb.com/code/snippet280071.html param value return [True|False]
Standert Vorgabe wert fuer das Framework. HINT: Diese Klasse wird von Config der Anwendung geerbt und dort angepasst. $APPROOT/WEB-INF/conf/config.py
Basisklasse fuer eine Controller Die Klasse wird vom Framework automatisch generiert und initialisiert.
Einfuegen String in Buffer. Beispiel: self.render("Hallo Welt") param text Auszugebender Text
Aufrufen Viewer param filename Filenamen des Viewer param param Binding Variable fuer den Viewer, welch dort verwenden werden koennen. param importcgi Felder eine Form werden automatisch aus dem CGI befuellt
Die Klasse Dateconverter konvertier Datumseintraege von und nach ASCII
Prueft ob ein uebergebenes Datum dem Fformat entspricht param value Datumswert param formt Formatstring return [True|False]
Liefert eine Ausgabe eines Timestamps im ISO Format param secs [True|False] Bei True werden die Sekunden mit ausgegeben
Aus einem String wird ein ANSI Datum generiert Tritt ein Fehler auf, wird ein TypeError geworfen. Die Ausgabe erfolgt im ANSI/ISO Format. Werden beim Imputstring Sekunden angegeben, wird dies bei der Ausgabe beachtet sonst werden nur bis zur Minute ausgegeben. param value Datumswert return Datums als ISO/ANSI Foramt
Loescht timestamp
Initialisiert Timestamp param value Datum als Zeichenkette wirft Exception wenn value und timestamp None HINT: Wird als Uebergabewert 'now' oder 'jetzt' eingegeben wird das aktelle Datum angenommen.
Liefert das aktuelle Datum als ANSI Datum optional koennen die Sekunden mit ausgegeben werden
Liefert das aktuelle Datum als ANSI Datum und Zeit optional koennen die Sekunden mit ausgegeben werden
Liefert das aktuelle Datum als ANSI Datum und Zeit optional koennen die Sekunden mit ausgegeben werden param value Wert param format Datumformat Vorgabewert %d.%m.%Y param nvl Defaultwert: ist value None wird dieser Wert eingesetzt der Wert now gibt das aktuelle Datum
Liefert das aktuelle Datum als ANSI Datum und Zeit optional koennen die Sekunden mit ausgegeben werden
Diese Klasse ist die Hauptsteuerroutine des Frameworks. Sie steuert das gesamte Verhalten. Es werden die Subklassen instanziert
Liefert aus dem CGI einen benannten Parameter param name Name des Cgiparmeters param nvl NullValue wird geliefert, wenn der Parameter nicht uebergeben wurde
Setzt den zu verwendenden Container. Ein Container befindet sich normalerweise als Datei in ./WEB-INF/temlate und stellt den aeusseren Rahmen in HTML dar. Er enhaelt Platzhalter in denen die Werte aus dem Framework eingetragen werden. param name Name des Containerfiles
Setzt ein Attribut in der Session. param name Name des Attributes param value Wert des Attributes
Liefert den Wert eines Attributes oder None wenn dieses nicht gefunden wurde aus der Session. param name Attrbutname return Attributwert
Setzte den Displaystatus param path Patheintrag param mode True/False (Vorgabewert True
Setzte zusaetzliche Parameter in Entry param path Patheintrag param param Zusaetzliche Parameter als Liste
Fuegt in die Menueeintraege einen Eintrag dynamisch hinzu param path Der Path unter dem der Eintrag eingetragen werden soll param controller Controller Name Beginnt der Controller name mit "@url:" wird ein Link mit dem Inhalt nach @url: erzeugt param text Anzeigetext (darf nicht leer sein da sonst keine Anzeige erfogt. param addparam eine Liste mit Parameter, welche dem Link hinzugefuegt werden. z.B. ['action=list-edit']
Liefert ein gerendetes Menue Konfigurieren des Menues: param container Ein Container in dem die Menueeintraege eingefuegt werden Beispiel: '
" Liefert einen http-equiv Fuer in Browserreload param path Pfadeintrag return gerenderte Eintrag
Initaialsierungsroutine des Frameworks HINT: Prueft ob der Benutzer eingelogt ist Ist dies nicht der Fall, wird die Einloggmaske verwendet
Ausgabe der Standard Fehlermeldung param controllerfilename Name des Controllers param message Nachrichtentext
% { 'filename':controllerfilename, 'meldung':message } # Setzten des Flashparameters def setFlash(self,msg):
self.flash = msg def run(self):
Abstrakte Klasse fuer die Menudarstellung Sie wird normalerweise von der Klasse Menu im WEB-INF/conf/menu importiert.
Setzt den Display Status des Eintrag param path Patheintrag
Setze dynamisch zusaetzliche Parameter in Menueeintrag param path Patheintrag param param Paramter als Liste.
Liefert eine relativen Pfad auf einen Controller. Wird nur der Namen angeben, so wird dieser aus der Pfad Option und dem Controllernamen des Menueeintrags gebildet. Beginnt der Controller Eintrag mit '/' so wird der Pfad relativ zu WEB-INF gebildet.
Behandelt die Verwendung von relativen Pfadangaben im Controller Eintrag Liefert den Dateinamen des Controllers ohne ".py" HINT: Verwendet zur Bildung des Namens os.path
Basisklasse fuer Elementen zur Bildschirmdarstellung im Browser
Liefert ein HTML class Attribute wenn nicht None
Liefert ein HTML style Attribute wenn nicht None
Wandelt den None in uebergebenen Wert aus nvl um
Liefert einen Jahreseintrag param item Jahr als Integer: wird zurueckgeliefert als Kennung: 'now' aktuelles Jahr 'next' aktuelles Jahr + 1 'last' aktuelles Jahr - 1
Liefert ein Input Widget
Liefert einen Form-Tag param name Name der Form. Default: 'edit' param style Styleattribut. Default: 'display:inline' param css_class Classattribute. Default: Kein class param method HTTP Form method (Vorgabewert 'post')
Liefert einen End-Form Tag
Liefert eine Table-Tag param name Name der Table param style Style Atritbute. Default nichts param colgroup Liefert nach dem Table-Tag ein Colgroup Tag mit der Anzahl der Cols mit Breite 1%, Abschliessend wird ein weitere Col Attribute mit dem Wert 99% eingefuegt
Liefert eine Tabellenzeile param heads ist eine Liste von Tabellenkoepfe param css_class CSS Klasse fuer TH Element param style Style Attribut fuer TH Element
Liefert eine Tabellenzeile
Liefert ein End-Table HTML Tag
Liefert eine Hidden Inputtag
Liefert einen Satz von Schaltflaechen in einer Form param id Datensatzkennung param idname Name der Datensatzkennung ist None dann wird 'id' angenommen. param addhidden Zusaetzliche hidden Felder in der Form als Liste von Strings param deletebutton True: Schaltflaeche zum Loeschen anzeigen action=edit param editbutton True: Schaltflaeche zum Bearbeiten anzeigen action=delete
Liefert eine Edit Schaltflaeche in einer Form param id Datensatzkennung param idname Name des ID Feldes (Default 'id') param addhidden Zusaetzliche hidden Felder in der Form als Liste von Strings
Liefert eine Inhalt aus dem Dictionary fields Ist dies nicht moeglich, wird der Wert des Parameters nvl zurueckgegeben. param name Name des Feldes param nvl Vorgabewert
renders the template according to the given namespace. __namespace - a dictionary serving as a namespace for evaluation **kw - keyword arguments which are added to the namespace
t = Templite(template) print t.render(x=8) # Output is:
Verschiedene Hilfsroutinen
Erzeugen eines leeren Objekts HINT: in Python Golf
Kopiert alle Datenfelder eine Domain in ein Objekt und gibt dieses zurueck. param domain Domain param nullisemtpy Ist ein Feld None wird "" geliefert return Ein Objekt mit allen Inhalten der uebergebenen Domain
Updates: -------- 0.10 11.02.2011 Checktype als eingen Klasse gemacht Dateconverter entwickelt Untitest ausgebaut 0.20 ORACLE Unterstuezung eingebaut 0.21 16.05.2012 Verbesserung in der Taglib 0.3 18.05.2012 addEntry um addparam erweitert 0.4 11.06.2012 Bugfix im dbaccess und taglib 0.5 Viewhandler Bugfix 0.6 Aenderung im Menu Option display [True | False] Im Controller kann dies Umgesetzt werden. Siehe Details im menu.py 0.6.1 Grid Layout im Viewhandler 0.7 Handler im Domain eingebaut 0.8 Bugfix in dbaccess.core 0.8.3 + Viewhandler Einbau der Mehode nextDomain um mit Fehler bei der Datenbank umzugehen. + database.core Bugfix 0.8.5 Oracle spezielle Insert Oracle spezielle update 0.9 Release Candidat Oracle support verbessert 0.9.1 in der eachDomain limit eingebaut 0.9.2 bei dbaccess methode get bugfix 0.9.3 Paginate in viewhandler
Routie zum Maskenhandling. Es werden zwei Layouts angeboten List/Edit: Es wird eine Liste angeboten, welche eine Editierbutton enthaelt. Wird dieser betaetigt, so wird eine Editiermaske mit dem gewaehlten Datensatz angezeigt. Dieser kann Veraendert oder geloescht werden.
Gibt die aktuelle domain zurueck. param domain Domainobjekt Ist domain deklariert, wird diese geliefert. Ist domain None, wird versucht die Klassendomain zu liefer. Ist diese auch nicht deklariert wird eine Ausnahme geworfen
Laedt die Domain aus der Datenbank param domain Domain Objekt ist dieser None wird das aktuelle Domainobjekt des Objekts verwendet. param key Wert ueber welchen aus der Datenbak gelesen werde soll. Ist dieser nicht deklariert, wird der Wert aus dem CGI ermittelt.
Anzeigen einer Editiermaske. param loadfrom gibt an, von wo die Felder befuellt werden sollen 'cgi' Daten aus dem CGI 'domain' Daten aus der Domain None Leere Maske wird angezeigt. Als Viewerfile wird edit.tpl angenommen (wenn nicht anders in der Klassenvariable deklariert.
Behandelt bei List/Edit layout die Liste param listparam Ein Dictionary, welches die Parameter fuer List-Viewer enhaelt.
Liefert fuer jeden gefunden Datensatz ein Tupple zurueck. 1 die Domain 2 ein Boolean das angibt, ob eine Daten oder Eingabemaske erzeugt werden soll. param domain Domain Objekt param where SQL Where Klausel param orderby SQL Order By Klausel param onRead Handler wird nach jedem Aufruf einer Domain aufgerufen. Der Routine wird mit der Domain und dem Kennzeichen isEditMask befuellt und liefert die Domain zurueck.
Erzeugen einer Grid Row param editmask Routine welche die Editiermaske beschreibt param listrow Routine welche eine Liste mit Datenzeileneintragen erzeugt param list Routine welche durch die Datenzeilen itteriert. Diese liefert zwei Werte 1) Eine Domain mit den Dateninhalten 2) ein Flag welches angeibt ob die Domain als Datenliste oder als Editiermaske angezeigt werden soll param taglib das aktuelle Taglib Objekt return Ein HTML Fragment, welches die gerenderte Datentabelle liefert.
Shot and forget Funktion fuer Behandlung eines List-Edit Layouts
Prueft ob ein Eingabemaske angezeigt werden soll param idfieldname Name des ID Fields
Shot and forget Funktionen fuer Behandlung eines Grid Layouts. Wird bei der Speicherungsoperaton ein Fehler festgestellt, so wird an den Viewer in der Parameterliste der wert isOK auf Flase uebergeben.
Allgemeiner Aufruf des Viewhandlers. In der Opton layout wird festgelegt ob Grid oder List/Edit angewendet werden soll.
Dieses Package enthaelt die Klassen des Frameworks
Basismodul fuer alle Datenbakrelevaten Klassen. HINT: Die Klassen SqlConverter und EachDomain sind nicht dafuer gedacht direkt verwendet zu werden.
Allgemeines Datenbank Objekt. Vorbereitet fuer + oracle + sqLite + mySql
Initialisierung der Datenbank. param dbtype Fuer jede vorhanden Datenbank wird ein Type angegeben. param args Parameterliste: fuer unterschiedliche Datenbanken werden unterschiedliche Initialisierungstypen verwendet.
Liefert eine Cursor auf die aktuelle Datenbank
Dient zur Verbindung der Domain mit einer Datenbanktabelle Eine Domain enthaelt + Die Felder welche von der Datenbanktabelle verwaltet werden sollen. Es ist nicht notwendig alle Felder zu deklarieren. + Eine Datenstruktur (metah) welche die Datenbanktabelle beschreibt und eine Verbindug zu den Domainfeldern deklariert. + Optional noch Methoden, welche zur Behandlung von Daten oder die Bereitstellung von ORM Methoden ermoeglichen. + HANDLER Handler liefern [True|False] Zurueck. Bei False wird die Datenbankaktion abgebrochen Fehlermeldungen koennen mit self.addError("Meldung") angegben werden.
Wenn die Domain ueber das CGI befuellt wir wird bei jedem Feld dieser Handler aufgerufen. param fieldname Feldname param value Inhalt aus dem CGI param [True|False] wird False uebergeben so bricht das Laden ab
Wird nach dem Einlesen aller Felder aus dem CGI aufgerufen. return [True|False]
Wird aufgerufen vor Loeschen eines Datensatzens return [True|False]
Wird aufgerufen vor Einfuegen eines Datensatzens False beendet die Aktion return [True|False]
Wird aufgerufen vor Veraendern eines Datensatzens False beendet die Aktion return [True|False]
Wird vor jeder schreibenden Operation aufgerfuen. param mode Enthaelt insert/update/delete return [True|False]
Erweitert die Fehlermeldungsliste um die uebergebene Meldung param msg Fehlermeldung
Liefert die pseudospalte rownum bei eachDomain. Diese Methode kann dafuer verwendet werden um zu pruefen, ob die eachDomain Methode daten geliefert hat.
gibt Fehlermeldung bei Typenfehler aus. HINT: Diese Methode wirft eine TypeError mit einer Fehlermeldung param fldtype Typ des Feldes param name Domain-Feldname param value Uebergebener Wert
Liefert eine Liste mit den Domainfeldern
Pruefen auf Typengueltigkeit. HINT: geht die Pruefung fehl, so wird ein Fehler geworfen. param name Domainfeldname param value Wert
Liefert eine Liste mit Datenbank-Feldname fuer den Cursor. param cursor Cursor auf eine Datenbanktabelle
Setzt den Inhalt eines Feldes der Domain param name Domainfeldnamen param value zu setzender Wert
Iterator fuer jedes Vorkommen in der Datenbanktabelle. param where Where Klauses fuer die SQL Anwesung param orderby Sortierklausel param limit Limitiert Datensaetze Kann ein Integer oder ein Tupple sein Wenn Integer wird maximal die Anzahl der genannten Datensaetze ausgegeben Bei einem Tupple wird vom angegebenen bis maximal bis zur angegenen Anzahl der Datensaetze ausgegeben. usage for dom in domain.eachDomain() : print dom
setzt alle Attribute welche als Datenbankfelder deklariert wurden auf None. Diese Method kann dazu verwenden werden das Domain-Objekt wiederzuverwenden.
Gibt den Domain-Felnamen des Primary Keys zurueck
Gibt den Namen des Primary Key der Datenbanktabelle zurueck.
Liefert den Namen des Datenbankfeldes auf basis des Domainfeldnamen param fld Domainfeldname return Datenbankfeldname
Setzt die Domain auf den angegebnen Datensatz. HINT: wenn nicht gefunden wird isOk auf False gesetzt param id Primary Key param where Where Klausel
Behandelt alle schreibenden Datenbankoperationen. Die Methode verwendet eine "Upsert" Strategie. Wird der Datensatz basierdend auf seinem Primary-Keys gefunden wird eine update sonst ein insert Anweisung generiert. Tritt ein Fehler auf, wird False zurueckgeliefert param cgiparam Funktion zur Bearbeitung des CGI param flash Funktion um Nachrichten an das GUI zu uebermitteln param action 'delete': Der Datensatz wird geloescht param id Primary Key
Liefert eine Liste von Feldnamen, welche durch das CGI uebergeben wurden und in der Domain Feldliste vorhanden ist. param cgiparam Methode zum lesen aus dem CGI return Feldlist
Befuellen der Domain aus dem CGI HINT: Typecheck wird ausgeschalten! wirft eine Exception, wenn ein Fehler beim befuellen auftritt param cgiparam Methode zum lesen aus dem CGI param flds eine Liste von Felder, welche verewendet werden soll ist die Liste None, so wird die Feldliste aus den Metadaten uebernommen return [True|Flase] das OK Kennzeichen
loescht aktuellen Datensatz HINT: vor dem Loeschen wird onDelete aufgerufen liefert die Methode False, so wird der Loeschvorgang abgebrochen return [True|Flase] das OK Kennzeichen
Loeschen basierend auf einet Where Klausel HINT: Dieser Vorgang fueht keine Pruefung mit der Methode onDelete durch. param where Eine where Klausel Diese MUSS angegeben werden.
Veraendern des Datensatzes basieren auf den Inhalten der Domain HINT: vor dem Update wird die Methode onUpdate aufgerufen. Liefert diese False zurueck wird der Ueberschreibenvorgang abgebrochen. Der Methode kann eine Feldliste uebergeben werden. Ist diese deklariert, so werden nur die deklarierten Felder zum Update verwendet. return [True|Flase] das OK Kennzeichen
Einfuegen eines Datensatzes Die aktuellen Werte aus der Domain werden in die Datenbank geschrieben. HINT: vor dem Insert wird die Methode onInsert aufgerufen. Liefert diese False zurueck wird der Einfuegevorgang abgebrochen. return [True|Flase] das OK Kennzeichen
Liefert die Anzahl der Datensaetze ggf. basierend auf where param where Where Klausel return Wert oder None
Liefert die Summenfunktion ggf. basierend auf where param where Where Klausel return Wert oder None
Liefert die Summenfunktion ggf. basierend auf where param where Where Klausel return Wert oder None
Liefert die Summenfunktion ggf. basierend auf where param where Where Klausel return Wert oder None
Liefert die Summenfunktion ggf. basierend auf where param where Where Klausel return Wert oder None
Gibt genau eine Domain oder None zurueck, wenn nicht gefunden. param where Whereklausel
Liefert den Inhalt eines Feldes auf Grund eines Domain-Feldnamen param fld Feldnamen
Durchlaufen eines Datenbankstroms. Optional koennen bei der Instanzierung eine Kriterien und eine Sortierung kodieren. Die Daten werden nach dem Lesen in die Domaifelder kopiert. HINT: Diese Klasse wird von der Domain-Klasse verwenden und soll nie direkt verwendet werden. Usage: for lovDom in lov.eachDomain(where='lovID=23','lovClass') print lovDom
Iteration ueber Domain initialisieren param domain Domainobjekt param where where Klausel fuer SQL Anweisung param orderby Sortierklausel param limit Limit Klausel Limit kann ein Integer oder ein Tuple mit zwei Elementen uebergeben werden. Limit mit INteger liefert bis zu der angegebenen Meng von Datensaetzen. Limit mit Tuppel ueberliest die anzahl von Datensaetzen in Element 1 und gibt maximal die Anzahl der Daensaetze im 2. Element zurueck.
Gibt Iterator zurueck.
durchlaufen des Datenstromes bis keine weiteren Datensaetze mehr gefunden werden.
Behandlung von Domainfeldnamen bei where und orderby Optionen. Reagiert auf die Konfigurationsvariable SqlConverter_fieldBegin und SqlConverter_fieldEnd sind beide auf None gesetzt, wird keine Umwandlung durchgefuehrt. Sucht das Vorkommen von [fieldBegin]domainfeldname[fieldEnd] und ersetzt dieses durch den Tabellenfeldnamen Beispiel: fieldBegin = '$' fieldEnd = '' aus Domain fields Definition: 'personID':{dbfield:'PERSON_ID', ...} Ergebnis: "$personID = 23" wird zu "PERSON_ID = 23"
Konvertierroutine, kann als Klassenmethode aufgerufen werden. param domain Domainobjekt param klausel Zu konvertierende Klausel return veraenderte Whereklausel
SQL Datenbankverbindung spezialisiert fuer mySQL
Anbindung an eine Oracle Datenbankname Die Anbindung wird ueber einen TNS-Names String bewerkststelligt. HINT: Autocommit wird eingeschalten! Static Methods: giveInsert giveUpate
Liefert eine Oracle spezelles form eines prepared statments param tablename Tabellenanmen param fields Eine Liste von Feldnamen return insertstatement Oracle spezialisiert
Liefert eine Oracle spezi elles form eines prepared statments param tablename Tabellenanmen param fields Eine Liste von Feldnamen param primarykey Name des Primarykeys in der Datenbank return insertstatement Oracle spezialisiert
SQL Datenbankverbindung spezialisiert fuer SQLite HINT: Die Datenbank wird automatisch auf Autocommit gesetzt
Konsturktor: fuer sqlite ist nur der Datenbankpfad notwendig. param filename Dateiname und Pfad auf die Datenbankdatei.
Modul zur Abfragen und Bearbeitung von Datenbanktabelle. Autor: W. Nagy Startdatum: 16.12.2010 Lizenz: http://creativecommons.org/licenses/by/2.0/at/ Die Daten eines Datensatzes werden in einer Domain gespeichert. Die Domain kann dazu verwendet werden, Datensatzspezifische Funktionen als Methode zu halten. z.B. ORM Naehere Beschreibung am ende der Datei. Dieses Modul ist fuer sqlite Datenbanken optimiert. Es bietet die Grundlegenden Funktionen - Oeffnen der Datenbank - lesen eines Datensatzes ueber seinen Primary Key oder ein beliebige where Klausel - Itteration von Datensaetzen (eachDomain) Mit der Moeglichkeit einen Filter einzusetzen und das Sortierkriterium anzugeben - Einfuegen eines Datensatzes (insert) - Aenderung eines Datensatzes (update) - SQL Aggregatfunktionen (min, max, avg, sum, count) Besonderheiten: eachDomain Angabe von limit Die Option limit bei eachDomain limitiert die gelieferten Datensaetze Sie kann in zwei unteschiedlichen Methoden angegben werden. 1 limit=[ganzzahl] z.B.: .eachDomain(limit=3) liefert maximal 3 Datensaetze 2 limit=([offset,anzahl]) z.B.: .eachDomain(limit(9,16) ueberliest die 1. 9 Daensaetze und liefert maximal 16 zurueck
Prueft ob bei uebergebenen Code eine Exception auftritt
Prueft ob bei uebergebenen Code eine Exception auftritt
Prueft ob bei uebergebenen Code eine Exception auftritt
Prueft ob bei uebergebenen Code eine Exception auftritt