# coding: utf-8 import json import cherrypy from .projekt import Projekt_cl, ProjektKomponenten_cl, Komponente_cl from .staff import QsMitarbeiter_cl, SwEntwickler_cl from .error import KatFehler_cl, KatUrsache_cl, Fehler_cl from .eval import ProList_cl, KatList_cl from .database import KatfehlerDatabase_cl, KatursacheDatabase_cl, FehlerDatabase_cl, KomponenteDatabase_cl, QsMitarbeiterDatabase_cl, SwEntwicklerDatabase_cl, ProjektDatabase_cl #---------------------------------------------------------- class Application_cl(object): #---------------------------------------------------------- exposed = True # gilt für alle Methoden #------------------------------------------------------- def __init__(self): #------------------------------------------------------- self.database_o = { 'projekt': ProjektDatabase_cl(), 'komponente': KomponenteDatabase_cl(), 'qsmitarbeiter': QsMitarbeiterDatabase_cl(), 'swentwickler': SwEntwicklerDatabase_cl(), 'katfehler': KatfehlerDatabase_cl(), 'katursache': KatursacheDatabase_cl(), 'fehler': FehlerDatabase_cl() } self.handler_o = { 'projekt': Projekt_cl(self.database_o), 'projektkomponenten': ProjektKomponenten_cl(self.database_o), 'komponente': Komponente_cl(self.database_o), 'qsmitarbeiter': QsMitarbeiter_cl(self.database_o), 'swentwickler': SwEntwickler_cl(self.database_o), 'katfehler': KatFehler_cl(self.database_o), 'katursache': KatUrsache_cl(self.database_o), 'fehler': Fehler_cl(self.database_o), 'prolist': ProList_cl(self.database_o), 'katlist': KatList_cl(self.database_o) } # es wird keine index-Methode vorgesehen, weil stattdessen # die Webseite index.html ausgeliefert wird (siehe Konfiguration) #------------------------------------------------------- def GET(self, path_spl = 'projekt', id=None, **data_opl): #------------------------------------------------------- retVal_o = { 'data': None } if path_spl in self.handler_o: if path_spl == 'fehler': retVal_o = self.handler_o[path_spl].GET(id, **data_opl) else: retVal_o = self.handler_o[path_spl].GET(id) if retVal_o['data'] == None: cherrypy.response.status = 404 return json.dumps(retVal_o) #------------------------------------------------------- def POST(self, path_spl = 'projekt', **data_opl): #------------------------------------------------------- retVal_o = { 'id': None } # data_opl: Dictionary mit den gelieferten key-value-Paaren # hier müsste man prüfen, ob die Daten korrekt vorliegen! if path_spl in self.handler_o: retVal_o = self.handler_o[path_spl].POST(data_opl) if retVal_o['id'] == None: cherrypy.response.status = 409 return json.dumps(retVal_o) #------------------------------------------------------- def PUT(self, path_spl = 'projekt', **data_opl): #------------------------------------------------------- # Sichern der Daten: jetzt wird keine vollständige Seite # zurückgeliefert, sondern nur noch die Information, ob das # Speichern erfolgreich war retVal_o = { 'id': None } # data_opl: Dictionary mit den gelieferten key-value-Paaren # hier müsste man prüfen, ob die Daten korrekt vorliegen! if path_spl in self.handler_o: retVal_o = self.handler_o[path_spl].PUT(data_opl) if retVal_o['id'] == None: cherrypy.response.status = 404 return json.dumps(retVal_o) #------------------------------------------------------- def DELETE(self, path_spl = 'projekt', id=None): #------------------------------------------------------- # Eintrag löschen, nur noch Rückmeldung liefern retVal_o = { 'id': id } if path_spl in self.handler_o: retVal_o = self.handler_o[path_spl].DELETE(id) if retVal_o['id'] == None: cherrypy.response.status = 404 return json.dumps(retVal_o) #------------------------------------------------------- def default(self, *arguments, **kwargs): #------------------------------------------------------- msg_s = "unbekannte Anforderung: " + \ str(arguments) + \ ' ' + \ str(kwargs) raise cherrypy.HTTPError(404, msg_s) # EOF