File: /authenbase.py

Klasse AuthenBase

Basisklasse fuer Authentifizierung Die Autentifizierung basiert auf einer Sessionvariable namens user. Ist diese gesetzt gilt der Benutzer als angemeldet

Konstruktor

def __init__(self,session=None):

Konstruktor param  session Sessionobjekt

getUser

def getUser(self):

Liefert den aktuellen User

init

def init(self):

Initialisierung

isAuthenticated

def isAuthenticated(self):

Liefert wahr, wenn benutzer vorhanden ist

getRights

def getRights(self):

ABSTRAKT: liefert eine Liste von Rechten, wenn Benutzer eingelogt

hasRight

def hasRight(self,right=None):

Liefert True, wenn uebergebenens Recht in der Rechteliste vorhanden ist param  right Recht return  [True|False]

getUserinfo

def getUserinfo(self,user=''):

Liefert die Userinformatioenn oder eine leeres Dictionary,wenn nicht gefunden. param  user Benutzername

getPassword

def getPassword(self):

Liefert Passwort des aktuellen Benutzers oder None wenn nicht gefunden

authen

def authen(self):

Setzt die Rechte des Users, wenn eingeloggt

File: /checktype.py

Hintergrund

Stellt einen Typensicherheitsmechanismus zur Verfuegung. Diese Klasse wird ovn dbaccess.core verwendent

Klasse Checktype

Es werden folgende Typen ueberprueft: + String + Integer + Float, Double + Date (Basiierend auf dem Dateconvertert Objekt) + email

isString

def isString(self,value):

Pruefen ob der uebergene Wert ein String ist. param  value return  [True|False]

isInteger

def isInteger(self,value):

Pruefen ob der uebergene Wert ein Integer ist. param  value return  [True|False]

isFloat

def isFloat(self,value):

Pruefen ob der uebergene Wert ein Float ist. param  value return  [True|False]

isDate

def isDate(self,value):

Pruefen auf gueltiges Datum vorhanden ist dies geschieht durch die Klasse Dateconverter param  value return  [True|False]

isEmail

def isEmail(self,a):

MINI emailadressencheck basierend auf http://www.daniweb.com/code/snippet280071.html param  value return  [True|False]

File: /configbase.py

Klasse ConfigBase

Standert Vorgabe wert fuer das Framework. HINT: Diese Klasse wird von Config der Anwendung geerbt und dort angepasst. $APPROOT/WEB-INF/conf/config.py

File: /controller.py

Klasse Controller

Basisklasse fuer eine Controller Die Klasse wird vom Framework automatisch generiert und initialisiert.

render

def render(self,text=''):

Einfuegen String in Buffer. Beispiel: self.render("Hallo Welt") param  text Auszugebender Text

view

def view(self,filename,param=None,importcgi=False):

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

File: /dateconverter.py

Klasse Dateconverter

Die Klasse Dateconverter konvertier Datumseintraege von und nach ASCII

validDate

def validDate(self,value,format):

Prueft ob ein uebergebenes Datum dem Fformat entspricht param  value Datumswert param  formt Formatstring return  [True|False]

_getANSI

def _getANSI(self,secs=False):

Liefert eine Ausgabe eines Timestamps im ISO Format param  secs [True|False] Bei True werden die Sekunden mit ausgegeben

fromString

def fromString(self,value):

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

clear

def clear(self):

Loescht timestamp

initTimestamp

def initTimestamp(self,value=None):

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.

giveAsANSIDate

def giveAsANSIDate(self,value=None,secs=False,nvl=None):

Liefert das aktuelle Datum als ANSI Datum optional koennen die Sekunden mit ausgegeben werden

giveAsANSIDateTime

def giveAsANSIDateTime(self,value=None,secs=False,nvl=None):

Liefert das aktuelle Datum als ANSI Datum und Zeit optional koennen die Sekunden mit ausgegeben werden

giveAsGermanDate

def giveAsGermanDate(self,value=None,format=None,nvl=None):

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

giveAsGermanDateTime

def giveAsGermanDateTime(self,value=None,secs=False,nvl=None):

Liefert das aktuelle Datum als ANSI Datum und Zeit optional koennen die Sekunden mit ausgegeben werden

File: /main.py

Hintergrund

Diese Klasse ist die Hauptsteuerroutine des Frameworks. Sie steuert das gesamte Verhalten. Es werden die Subklassen instanziert

Klasse Mframe

cgiparam

def cgiparam(self,name=None,nvl='',noneifnotused=False):

Liefert aus dem CGI einen benannten Parameter param  name Name des Cgiparmeters param  nvl NullValue wird geliefert, wenn der Parameter nicht uebergeben wurde

Konstruktor

def __init__(self,webini='../../WEB-INF',sessionlifetime=180):

setContainer

def setContainer(self,name=None):

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

setAttribute

def setAttribute(self,name=None,value=None):

Setzt ein Attribut in der Session. param  name Name des Attributes param  value Wert des Attributes

getAttribute

def getAttribute(self,name=None):

Liefert den Wert eines Attributes oder None wenn dieses nicht gefunden wurde aus der Session. param  name Attrbutname return  Attributwert

start_html

def start_html(self):

end_html

def end_html(self):

setEntryDisplay

def setEntryDisplay(self,path=None,mode=True):

Setzte den Displaystatus param  path Patheintrag param  mode True/False (Vorgabewert True

setEntryParam

def setEntryParam(self,path=None,param=[]):

Setzte zusaetzliche Parameter in Entry param  path Patheintrag param  param Zusaetzliche Parameter als Liste

addEntry

def addEntry(self,

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']

configMenu

def configMenu(self,container=None,entry=None):

Liefert ein gerendetes Menue Konfigurieren des Menues: param  container Ein Container in dem die Menueeintraege eingefuegt werden Beispiel: '

' param  entry Ein Format fuer einen Menueeintrag 'Beispiel: {2}
' Parameter: 0 URL 1 aktueller Pfad 2 Anzeigetext

reload

def reload(self,path):

" Liefert einen http-equiv Fuer in Browserreload param  path Pfadeintrag return  gerenderte Eintrag

init

def init(self):

Initaialsierungsroutine des Frameworks HINT: Prueft ob der Benutzer eingelogt ist Ist dies nicht der Fall, wird die Einloggmaske verwendet

appException

def appException(self,controllerfilename,message):

Ausgabe der Standard Fehlermeldung param  controllerfilename Name des Controllers param  message Nachrichtentext

setFlash

def setFlash(self,msg):

% { 'filename':controllerfilename, 'meldung':message } # Setzten des Flashparameters def setFlash(self,msg):

run

def run(self):

self.flash = msg def run(self):

File: /menubase.py

Hintergrund

Abstrakte Klasse fuer die Menudarstellung Sie wird normalerweise von der Klasse Menu im WEB-INF/conf/menu importiert.

Klasse MenuBase

getEntry

def getEntry(self,path,dieifnotfound=True):

truncatepath

def truncatepath(self,path):

getHtml

def getHtml(self,entry):

hasEntryRight

def hasEntryRight(self,entry):

navigation

def navigation(self):

backlink

def backlink(self):

setDisplay

def setDisplay(self,path=None,mode=True):

Setzt den Display Status des Eintrag param  path Patheintrag

setParam

def setParam(self,path=None,param=[]):

Setze dynamisch zusaetzliche Parameter in Menueeintrag param  path Patheintrag param  param Paramter als Liste.

getControllerPath

def getControllerPath(self):

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.

getControllerName

def getControllerName(self):

Behandelt die Verwendung von relativen Pfadangaben im Controller Eintrag Liefert den Dateinamen des Controllers ohne ".py" HINT: Verwendet zur Bildung des Namens os.path

getController

def getController(self):
File: /session.py

Klasse Session

Konstruktor

def __init__(self,sessionpath=None,sessionlifetime=None):

getSessionFileName

def getSessionFileName(self):

lifetime

def lifetime(self):

loadAttributes

def loadAttributes(self):

generateSessionId

def generateSessionId(self):

newSession

def newSession(self):

remove

def remove(self):

purge

def purge(self):

setCookie

def setCookie(self):

loadCookie

def loadCookie(self):

getSID

def getSID(self):

setAttribute

def setAttribute(self,name=None,value=None):

removeAttribute

def removeAttribute(self,name=None):

getAttribute

def getAttribute(self,name=None):
File: /sideboxbase.py

Klasse SideboxBase

getSideboxText

def getSideboxText(self,filepath):

get

def get(self):
File: /taglibbase.py

Hintergrund

Basisklasse fuer Elementen zur Bildschirmdarstellung im Browser

Klasse TaglibBase

Konstruktor

def __init__(self):

getClass

def getClass(self,theClass):

Liefert ein HTML class Attribute wenn nicht None

getStyle

def getStyle(self,theStyle):

Liefert ein HTML style Attribute wenn nicht None

isnull

def isnull(value,nvl):

Wandelt den None in uebergebenen Wert aus nvl um

_getYear

def _getYear(self,year):

Liefert einen Jahreseintrag param  item Jahr als Integer: wird zurueckgeliefert als Kennung: 'now' aktuelles Jahr 'next' aktuelles Jahr + 1 'last' aktuelles Jahr - 1

promptinput

def promptinput(

Liefert ein Input Widget

form

def form(self,name=None,style='display:inline;',css_class=None,method=None):

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')

endform

def endform(self):

Liefert einen End-Form Tag

table

def table(self,name=None,style=None,colgroup=None):

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

tablehead

def tablehead(self,heads,css_class=None,style=None):

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

tablerow

def tablerow(self,values,usezebra=True):

Liefert eine Tabellenzeile

endtable

def endtable(self):

Liefert ein End-Table HTML Tag

hidden

def hidden(self,name=None, value=None):

Liefert eine Hidden Inputtag

gridButtons

def gridButtons(self,id=None,addhidden=[],deletebutton=True,editbutton=True):

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

editButton

def editButton(self,id=None,addhidden=[],idname=None):

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

File: /template.py

Klasse PSP

getField

def getField(self,name=None, nvl=''):

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

Konstruktor

def __init__(self, template=None, filename=None,cgiparam=None,start='<%', end='%>'):

render

def render(self, __namespace=None, **kw):

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

write

def write(self, *args):

say_hello

def say_hello(arg):

t = Templite(template) print t.render(x=8) # Output is:

File: /templateengine.py

Klasse TemplateEngine

Konstruktor

def __init__(self):

readTemplateFile

def readTemplateFile(self):

get

def get(self,map):
File: /utility.py

Hintergrund

Verschiedene Hilfsroutinen

Klasse Utility

objectFactory

def objectFactory(self):

Erzeugen eines leeren Objekts HINT: in Python Golf

fieldsObjectFactory

def fieldsObjectFactory(self,domain,nullisempty=True):

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

File: /version.py

Klasse Version

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

File: /viewhandler.py

Hintergrund

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.

Klasse Viewhandler

Konstruktor

def __init__(self,

getCurrentDomain

def getCurrentDomain(self,domain=None):

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

loadDomain

def loadDomain(self,domain=None,key=None):

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.

showEditMask

def showEditMask(self,loadfrom='cgi',domain=None):

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.

showList

def showList(self,listparam=None,action=None):

Behandelt bei List/Edit layout die Liste param  listparam Ein Dictionary, welches die Parameter fuer List-Viewer enhaelt.

save

def save(self,key=None, domain=None,action=None):

nextDomain

def nextDomain(self,domain=None,where=None,orderby=None,onRead=None):

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.

gridrow

def gridrow(self,editmask=None,listrow=None,list=None,taglib=None,addhidden=[]):

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.

handleListEdit

def handleListEdit(self):

Shot and forget Funktion fuer Behandlung eines List-Edit Layouts

isEditMask

def isEditMask(self,idfieldname,domainvalue):

Prueft ob ein Eingabemaske angezeigt werden soll param  idfieldname Name des ID Fields

handleGrid

def handleGrid(self):

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.

viewHelper

def viewHelper():

run

def run(self,layout=None):

Allgemeiner Aufruf des Viewhandlers. In der Opton layout wird festgelegt ob Grid oder List/Edit angewendet werden soll.

File: /__init__.py

Modulbeschreibung

Dieses Package enthaelt die Klassen des Frameworks

File: /dbaccess/core.py

Hintergrund

Basismodul fuer alle Datenbakrelevaten Klassen. HINT: Die Klassen SqlConverter und EachDomain sind nicht dafuer gedacht direkt verwendet zu werden.

Klasse Database

Allgemeines Datenbank Objekt. Vorbereitet fuer + oracle + sqLite + mySql

Konstruktor

def __init__(self,dbtype,*args) :

Initialisierung der Datenbank. param  dbtype Fuer jede vorhanden Datenbank wird ein Type angegeben. param  args Parameterliste: fuer unterschiedliche Datenbanken werden unterschiedliche Initialisierungstypen verwendet.

cursorFactory

def cursorFactory(self):

Liefert eine Cursor auf die aktuelle Datenbank

Klasse Domain

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.

Konstruktor

def __init__(self,db=None) :

onCgiField

def onCgiField(self,fieldname,value):

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

afterCgi

def afterCgi(self):

Wird nach dem Einlesen aller Felder aus dem CGI aufgerufen. return  [True|False]

onDelete

def onDelete(self):

Wird aufgerufen vor Loeschen eines Datensatzens return  [True|False]

onInsert

def onInsert(self):

Wird aufgerufen vor Einfuegen eines Datensatzens False beendet die Aktion return  [True|False]

onUpdate

def onUpdate(self):

Wird aufgerufen vor Veraendern eines Datensatzens False beendet die Aktion return  [True|False]

onWrite

def onWrite(self,mode=None):

Wird vor jeder schreibenden Operation aufgerfuen. param  mode Enthaelt insert/update/delete return  [True|False]

addError

def addError(self,msg=''):

Erweitert die Fehlermeldungsliste um die uebergebene Meldung param  msg Fehlermeldung

getRownum

def getRownum(self):

Liefert die pseudospalte rownum bei eachDomain. Diese Methode kann dafuer verwendet werden um zu pruefen, ob die eachDomain Methode daten geliefert hat.

raiseTypeError

def raiseTypeError(self,fldtype,name,value):

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

getDomainFieldNames

def getDomainFieldNames(self):

Liefert eine Liste mit den Domainfeldern

__setattr__

def __setattr__(self,name,value):

Pruefen auf Typengueltigkeit. HINT: geht die Pruefung fehl, so wird ein Fehler geworfen. param  name Domainfeldname param  value Wert

getFieldnames

def getFieldnames(self,cursor) :

Liefert eine Liste mit Datenbank-Feldname fuer den Cursor. param  cursor Cursor auf eine Datenbanktabelle

set

def set(self,name=None,value=None):

Setzt den Inhalt eines Feldes der Domain param  name Domainfeldnamen param  value zu setzender Wert

eachDomain

def eachDomain(self,where=None,orderby=None,limit=None) :

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

clear

def clear(self):

setzt alle Attribute welche als Datenbankfelder deklariert wurden auf None. Diese Method kann dazu verwenden werden das Domain-Objekt wiederzuverwenden.

getPK

def getPK(self):

Gibt den Domain-Felnamen des Primary Keys zurueck

getDbPK

def getDbPK(self):

Gibt den Namen des Primary Key der Datenbanktabelle zurueck.

getDbFieldName

def getDbFieldName(self,fld):

Liefert den Namen des Datenbankfeldes auf basis des Domainfeldnamen param  fld Domainfeldname return  Datenbankfeldname

get

def get(self,id=None,where=None):

Setzt die Domain auf den angegebnen Datensatz. HINT: wenn nicht gefunden wird isOk auf False gesetzt param  id Primary Key param  where Where Klausel

writedb

def writedb(self,cgiparam=None,flash=None,action=None,id=None):

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

usedFields

def usedFields(self,cgiparam=None):

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

fromCgi

def fromCgi(self,cgiparam=None,flds=None,typecheckStrict=True):

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

delete

def delete(self):

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

deleteAll

def deleteAll(self,where=None):

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.

update

def update(self,usedFields=None):

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

insert

def insert(self):

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

count

def count(self,where=None):

Liefert die Anzahl der Datensaetze ggf. basierend auf where param  where Where Klausel return  Wert oder None

sum

def sum(self,fld,where=None):

Liefert die Summenfunktion ggf. basierend auf where param  where Where Klausel return  Wert oder None

min

def min(self,fld,where=None):

Liefert die Summenfunktion ggf. basierend auf where param  where Where Klausel return  Wert oder None

max

def max(self,fld,where=None):

Liefert die Summenfunktion ggf. basierend auf where param  where Where Klausel return  Wert oder None

avg

def avg(self,fld,where=None):

Liefert die Summenfunktion ggf. basierend auf where param  where Where Klausel return  Wert oder None

getDomain

def getDomain(self,where=None) :

Gibt genau eine Domain oder None zurueck, wenn nicht gefunden. param  where Whereklausel

getValue

def getValue(self,fld):

Liefert den Inhalt eines Feldes auf Grund eines Domain-Feldnamen param  fld Feldnamen

__del__

def __del__(self):

Klasse EachDomain

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

Konstruktor

def __init__(self,domain,where=None,orderby=None,limit=None) :

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.

__iter__

def __iter__(self) :

Gibt Iterator zurueck.

next

def next(self) :

durchlaufen des Datenstromes bis keine weiteren Datensaetze mehr gefunden werden.

Klasse SqlConverter

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"

convert

def convert(domain,klausel):

Konvertierroutine, kann als Klassenmethode aufgerufen werden. param  domain Domainobjekt param  klausel Zu konvertierende Klausel return  veraenderte Whereklausel

File: /dbaccess/dbmysql.py

Klasse DbMySql

SQL Datenbankverbindung spezialisiert fuer mySQL

Konstruktor

def __init__(self,host,port,user,passwd,db):

__del__

def __del__(self):
File: /dbaccess/dboracle.py

Klasse DbOracle

Anbindung an eine Oracle Datenbankname Die Anbindung wird ueber einen TNS-Names String bewerkststelligt. HINT: Autocommit wird eingeschalten! Static Methods: giveInsert giveUpate

Konstruktor

def __init__(self,username,password,sid,host,port) :

giveInsert

def giveInsert(tablename=None,fields=None):

Liefert eine Oracle spezelles form eines prepared statments param  tablename Tabellenanmen param  fields Eine Liste von Feldnamen return  insertstatement Oracle spezialisiert

giveUpdate

def giveUpdate(tablename=None,fields=None,primarykey=None):

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

__del__

def __del__(self):
File: /dbaccess/dbsqlite3.py

Klasse DbSqlite3

SQL Datenbankverbindung spezialisiert fuer SQLite HINT: Die Datenbank wird automatisch auf Autocommit gesetzt

Konstruktor

def __init__(self,filename) :

Konsturktor: fuer sqlite ist nur der Datenbankpfad notwendig. param  filename Dateiname und Pfad auf die Datenbankdatei.

__del__

def __del__(self):
File: /dbaccess/__init__.py

Modulbeschreibung

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

File: /_test/test_checktype.py

hasException

def hasException (code):

Hintergrund

Prueft ob bei uebergebenen Code eine Exception auftritt

Klasse Person

errmsg

def errmsg(self,type,name,value):

setValue

def setValue(self,name,value):

__setattr__

def __setattr__(self,name,value):
File: /_test/test_dateconverter.py

hasException

def hasException (code):

Hintergrund

Prueft ob bei uebergebenen Code eine Exception auftritt

File: /_test/test_dbaccess.py

Klasse LovDomain

getLovValueUpper

def getLovValueUpper(self):

hasException

def hasException (code):

Prueft ob bei uebergebenen Code eine Exception auftritt

File: /_test/test_oracle_access.py

hasException

def hasException (code):

Hintergrund

Prueft ob bei uebergebenen Code eine Exception auftritt