fishished

This commit is contained in:
darthsandmann
2017-01-19 17:28:35 +01:00
parent 0f6cd32fa7
commit 2f677551bb
75 changed files with 322 additions and 230 deletions

View File

@@ -8,6 +8,7 @@ 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):
@@ -18,20 +19,29 @@ class Application_cl(object):
#-------------------------------------------------------
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(),
'projektkomponenten': ProjektKomponenten_cl(),
'komponente': Komponente_cl(),
'projekt': Projekt_cl(self.database_o),
'projektkomponenten': ProjektKomponenten_cl(self.database_o),
'komponente': Komponente_cl(self.database_o),
'qsmitarbeiter': QsMitarbeiter_cl(),
'swentwickler': SwEntwickler_cl(),
'qsmitarbeiter': QsMitarbeiter_cl(self.database_o),
'swentwickler': SwEntwickler_cl(self.database_o),
'katfehler': KatFehler_cl(),
'katursache': KatUrsache_cl(),
'fehler': Fehler_cl(),
'katfehler': KatFehler_cl(self.database_o),
'katursache': KatUrsache_cl(self.database_o),
'fehler': Fehler_cl(self.database_o),
'prolist': ProList_cl(),
'katlist': KatList_cl()
'prolist': ProList_cl(self.database_o),
'katlist': KatList_cl(self.database_o)
}
# es wird keine index-Methode vorgesehen, weil stattdessen
@@ -40,6 +50,7 @@ class Application_cl(object):
#-------------------------------------------------------
def GET(self, path_spl = 'projekt', id=None, **data_opl):
#-------------------------------------------------------
retVal_o = {
'data': None
}
@@ -71,6 +82,7 @@ class Application_cl(object):
if retVal_o['id'] == None:
cherrypy.response.status = 409
return json.dumps(retVal_o)

View File

@@ -10,19 +10,6 @@ import json
class Database_cl(object):
#----------------------------------------------------------
# Daten in dieser Variante dauerhaft (persistent) speichern
# dazu jedes Element in einer Datei, die entsprechend der id benannt ist, speichern
# alle Elemente werden zur Laufzeit des Servers zur Vereinfachung auch im
# Hauptspeicher abgelegt
# die nächste zu vergebende Id wird ebenfalls dauerhaft gespeichert
# zur Vereinfachung wird hier fest vorgegebenen, dass sich die Daten
# im Unterverzeichnis "data/<type>" befinden (siehe Konstruktor)
# es wird ferner angenommen, dass die Datei "data/<type>/maxid.dat" bereits existiert
# und als einzigen Eintrag den aktuellen Wert der maximalen Id enthält
#-------------------------------------------------------
def __init__(self, type_spl):
#-------------------------------------------------------
@@ -122,6 +109,23 @@ class Database_cl(object):
return maxId_s
#----------------------------------------------------------
class LoadDatabase_cl(Database_cl):
#----------------------------------------------------------
#-------------------------------------------------------
def __init__(self):
#-------------------------------------------------------
super().__init__('projekt')
super().__init__('komponente')
super().__init__('qsmitarbeiter')
super().__init__('swentwickler')
super().__init__('projekt')
super().__init__('fehler')
super().__init__('katursache')
super().__init__('katfehler')
#----------------------------------------------------------
class ProjektDatabase_cl(Database_cl):
#----------------------------------------------------------
@@ -162,10 +166,14 @@ class KomponenteDatabase_cl(Database_cl):
#-------------------------------------------------------
def deleteDependencies_px(self, id):
#-------------------------------------------------------
komponenten = {}
for komponente in list(self.data_o):
print(komponente)
if self.data_o[komponente]['projektid'] == id:
self.delete_px(komponente)
return id
komponenten[komponente] = komponente
return komponenten
#----------------------------------------------------------
class QsMitarbeiterDatabase_cl(Database_cl):
@@ -272,10 +280,8 @@ class FehlerDatabase_cl(Database_cl):
#-------------------------------------------------------
# hier zur Vereinfachung:
# Aufruf ohne id: alle Einträge liefern
print(self.data_o)
data_o = {}
for entry in self.data_o:
print(self.data_o[entry])
if self.data_o[entry]['status'] != "geprueft":
data_o[entry] = self.data_o[entry]
@@ -286,12 +292,16 @@ class FehlerDatabase_cl(Database_cl):
#-------------------------------------------------------
# hier zur Vereinfachung:
# Aufruf ohne id: alle Einträge liefern
print(self.data_o)
data_o = {}
for entry in self.data_o:
print(self.data_o[entry])
if self.data_o[entry]['status'] == "geprueft":
data_o[entry] = self.data_o[entry]
return data_o
#-------------------------------------------------------
def deleteDependencies_px(self, id):
#-------------------------------------------------------
for fehler in list(self.data_o):
if self.data_o[fehler]['komponenteid'] == id:
self.delete_px(fehler)
# EOF

View File

@@ -43,9 +43,9 @@ class KatFehler_cl(object):
exposed = True # gilt für alle Methoden
#-------------------------------------------------------
def __init__(self):
def __init__(self, database_o):
#-------------------------------------------------------
self.db_o = KatfehlerDatabase_cl()
self.db_o = database_o
#-------------------------------------------------------
def GET(self, id=None):
@@ -55,10 +55,10 @@ class KatFehler_cl(object):
}
if id == None:
# Anforderung der Liste
retVal_o['data'] = self.db_o.read_px()
retVal_o['data'] = self.db_o['katfehler'].read_px()
else:
# Anforderung eines Dokuments
data_o = self.db_o.read_px(id)
data_o = self.db_o['katfehler'].read_px(id)
if data_o != None:
retVal_o['data'] = adjustId_p(id, data_o)
@@ -85,7 +85,7 @@ class KatFehler_cl(object):
}
# Update-Operation
retVal_o['id'] = id_s
if self.db_o.update_px(id_s, data_o):
if self.db_o['katfehler'].update_px(id_s, data_o):
pass
else:
retVal_o['id'] = None
@@ -107,7 +107,7 @@ class KatFehler_cl(object):
'name': data_opl["name_s"]
}
# Create-Operation
id_s = self.db_o.create_px(data_o)
id_s = self.db_o['katfehler'].create_px(data_o)
retVal_o['id'] = id_s
return retVal_o
@@ -120,7 +120,7 @@ class KatFehler_cl(object):
'id': id
}
if self.db_o.delete_px(id):
if self.db_o['katfehler'].delete_px(id):
pass
else:
retVal_o['id'] = None
@@ -146,9 +146,9 @@ class KatUrsache_cl(object):
exposed = True # gilt für alle Methoden
#-------------------------------------------------------
def __init__(self):
def __init__(self, database_o):
#-------------------------------------------------------
self.db_o = KatursacheDatabase_cl()
self.db_o = database_o
#-------------------------------------------------------
def GET(self, id = None):
@@ -158,10 +158,10 @@ class KatUrsache_cl(object):
}
if id == None:
# Anforderung der Liste
retVal_o['data'] = self.db_o.read_px()
retVal_o['data'] = self.db_o['katursache'].read_px()
else:
# Anforderung eines Dokuments
data_o = self.db_o.read_px(id)
data_o = self.db_o['katursache'].read_px(id)
if data_o != None:
retVal_o['data'] = adjustId_p(id, data_o)
@@ -188,7 +188,7 @@ class KatUrsache_cl(object):
}
# Update-Operation
retVal_o['id'] = id_s
if self.db_o.update_px(id_s, data_o):
if self.db_o['katursache'].update_px(id_s, data_o):
pass
else:
retVal_o['id'] = None
@@ -210,7 +210,7 @@ class KatUrsache_cl(object):
'name': data_opl["name_s"]
}
# Create-Operation
id_s = self.db_o.create_px(data_o)
id_s = self.db_o['katursache'].create_px(data_o)
retVal_o['id'] = id_s
return retVal_o
@@ -223,7 +223,7 @@ class KatUrsache_cl(object):
'id': id
}
if self.db_o.delete_px(id):
if self.db_o['katursache'].delete_px(id):
pass
else:
retVal_o['id'] = None
@@ -252,14 +252,9 @@ class Fehler_cl(object):
exposed = True # gilt für alle Methoden
#-------------------------------------------------------
def __init__(self):
def __init__(self, database_o):
#-------------------------------------------------------
self.db_o = FehlerDatabase_cl()
self.dbKomponente_o = KomponenteDatabase_cl()
self.dbQsMitarbeiter_o = QsMitarbeiterDatabase_cl()
self.dbSwEntwickler_o = SwEntwicklerDatabase_cl()
self.dbKatFehler_o = KatfehlerDatabase_cl()
self.dbKatUrsache_o = KatursacheDatabase_cl()
self.db_o = database_o
#-------------------------------------------------------
def GET(self, id=None, type=None):
@@ -271,21 +266,21 @@ class Fehler_cl(object):
# Anforderung der Liste
print('true')
if type == 'erkannt':
retVal_o['data'] = self.db_o.readErkannt_px()
retVal_o['data'] = self.db_o['fehler'].readErkannt_px()
elif type == 'behoben':
retVal_o['data'] = self.db_o.readBehoben_px()
retVal_o['data'] = self.db_o['fehler'].readBehoben_px()
else:
retVal_o['data'] = self.db_o.read_px()
retVal_o['data'] = self.db_o['fehler'].read_px()
else:
# Anforderung eines Dokuments
data_o = self.db_o.read_px(id)
data_o = self.db_o['fehler'].read_px(id)
if data_o != None:
retVal_o['data'] = adjustId_p(id, data_o)
retVal_o['komponente'] = self.dbKomponente_o.read_px()
retVal_o['qsmitarbeiter'] = self.dbQsMitarbeiter_o.read_px()
retVal_o['swentwickler'] = self.dbSwEntwickler_o.read_px()
retVal_o['katfehler'] = self.dbKatFehler_o.read_px()
retVal_o['katursache'] = self.dbKatUrsache_o.read_px()
retVal_o['komponente'] = self.db_o['komponente'].read_px()
retVal_o['qsmitarbeiter'] = self.db_o['qsmitarbeiter'].read_px()
retVal_o['swentwickler'] = self.db_o['swentwickler'].read_px()
retVal_o['katfehler'] = self.db_o['katfehler'].read_px()
retVal_o['katursache'] = self.db_o['katursache'].read_px()
return retVal_o
@@ -322,7 +317,7 @@ class Fehler_cl(object):
data_o['zeitbehoben'] = datetime.now().strftime("%d.%m.%Y-%H:%M")
# Update-Operation
retVal_o['id'] = id_s
if self.db_o.update_px(id_s, data_o):
if self.db_o['fehler'].update_px(id_s, data_o):
pass
else:
retVal_o['id'] = None
@@ -356,7 +351,7 @@ class Fehler_cl(object):
}
# Create-Operation
id_s = self.db_o.create_px(data_o)
id_s = self.db_o['fehler'].create_px(data_o)
retVal_o['id'] = id_s
return retVal_o
@@ -369,7 +364,7 @@ class Fehler_cl(object):
'id': id
}
if self.db_o.delete_px(id):
if self.db_o['fehler'].delete_px(id):
pass
else:
retVal_o['id'] = None

View File

@@ -26,11 +26,9 @@ class ProList_cl(object):
exposed = True # gilt für alle Methoden
#-------------------------------------------------------
def __init__(self):
def __init__(self, database_o):
#-------------------------------------------------------
self.dbFehler_o = FehlerDatabase_cl()
self.dbProjekt_o = ProjektDatabase_cl()
self.dbKomponente_o = KomponenteDatabase_cl()
self.db_o = database_o
#-------------------------------------------------------
def GET(self, id=None):
@@ -38,11 +36,11 @@ class ProList_cl(object):
data_o = {}
retVal_o = {}
retVal_o['data'] = {}
data_o['Fehler'] = self.dbFehler_o.read_px()
data_o['Projekt'] = self.dbProjekt_o.read_px()
data_o['Komponente'] = self.dbKomponente_o.read_px()
data_o['Fehler'] = self.db_o['fehler'].read_px()
data_o['Projekt'] = self.db_o['projekt'].read_px()
data_o['Komponente'] = self.db_o['komponente'].read_px()
for projektid in data_o['Projekt']:
print(projektid)
projekt = data_o['Projekt'][projektid]['name']
retVal_o['data'][projekt] = 'None'
for komponente in data_o['Komponente']:
@@ -61,13 +59,11 @@ class ProList_cl(object):
retVal_o['data'][projekt][fehler]['fehlerstatus'] = 'erkannt'
else:
retVal_o['data'][projekt][fehler]['fehlerstatus'] = 'beseitigt'
print(retVal_o)
return retVal_o
"""
Anforderung GET PUT POST DELETE
-----------------------------------------------------------------------------------------
@@ -81,10 +77,9 @@ class KatList_cl(object):
exposed = True # gilt für alle Methoden
#-------------------------------------------------------
def __init__(self):
def __init__(self, database_o):
#-------------------------------------------------------
self.dbFehler_o = FehlerDatabase_cl()
self.dbKatFehler_o = KatfehlerDatabase_cl()
self.db_o = database_o
#-------------------------------------------------------
def GET(self, id=None):
@@ -92,10 +87,8 @@ class KatList_cl(object):
data_o = {}
retVal_o = {}
retVal_o['data'] = {}
data_o['Fehler'] = self.dbFehler_o.read_px()
data_o['Kategorie'] = self.dbKatFehler_o.read_px()
print(data_o)
data_o['Fehler'] = self.db_o['fehler'].read_px()
data_o['Kategorie'] = self.db_o['katfehler'].read_px()
for kategorieid in data_o['Kategorie']:
kategorie = data_o['Kategorie'][kategorieid]['name']
@@ -103,7 +96,7 @@ class KatList_cl(object):
for fehler in data_o['Fehler']:
if retVal_o['data'][kategorie] == 'None':
retVal_o['data'][kategorie] = {}
retVal_o['data'][kategorie][fehler] = 'None'
retVal_o['data'][kategorie][fehler] = 'None'
if data_o['Fehler'][fehler]['katfehlerid'] == kategorieid:
if retVal_o['data'][kategorie][fehler] == 'None':
retVal_o['data'][kategorie][fehler] = {}
@@ -112,6 +105,8 @@ class KatList_cl(object):
retVal_o['data'][kategorie][fehler]['fehlerstatus'] = 'erkannt'
else:
retVal_o['data'][kategorie][fehler]['fehlerstatus'] = 'beseitigt'
print (retVal_o)
print (retVal_o)
return retVal_o

View File

@@ -3,7 +3,7 @@
import json
import cherrypy
from .database import ProjektDatabase_cl, KomponenteDatabase_cl
from .database import ProjektDatabase_cl, KomponenteDatabase_cl, FehlerDatabase_cl
# Method-Dispatching!
# Übersicht Anforderungen / Methoden
@@ -44,11 +44,9 @@ class Projekt_cl(object):
exposed = True # gilt für alle Methoden
#-------------------------------------------------------
def __init__(self):
def __init__(self, database_o):
#-------------------------------------------------------
self.db_o = ProjektDatabase_cl()
self.dbKomponente_o = KomponenteDatabase_cl()
self.db_o = database_o
#-------------------------------------------------------
def GET(self, id = None):
#-------------------------------------------------------
@@ -57,10 +55,10 @@ class Projekt_cl(object):
}
if id == None:
# Anforderung der Liste
retVal_o['data'] = self.db_o.read_px()
retVal_o['data'] = self.db_o['projekt'].read_px()
else:
# Anforderung eines Dokuments
data_o = self.db_o.read_px(id)
data_o = self.db_o['projekt'].read_px(id)
if data_o != None:
retVal_o['data'] = adjustId_p(id, data_o)
@@ -87,7 +85,7 @@ class Projekt_cl(object):
}
# Update-Operation
retVal_o['id'] = id_s
if self.db_o.update_px(id_s, data_o):
if self.db_o['projekt'].update_px(id_s, data_o):
pass
else:
retVal_o['id'] = None
@@ -109,7 +107,7 @@ class Projekt_cl(object):
'name': data_opl["name_s"]
}
# Create-Operation
id_s = self.db_o.create_px(data_o)
id_s = self.db_o['projekt'].create_px(data_o)
retVal_o['id'] = id_s
return retVal_o
@@ -123,7 +121,8 @@ class Projekt_cl(object):
}
if self.db_o.delete_px(id):
self.dbKomponente_o.deleteDependencies_px(id)
kid = self.db_o['komponente'].deleteDependencies_px(id)
self.db_o['fehler'].deleteDependencies_px(kid)
else:
retVal_o['id'] = None
@@ -145,9 +144,9 @@ class ProjektKomponenten_cl(object):
exposed = True # gilt für alle Methoden
#-------------------------------------------------------
def __init__(self):
def __init__(self, database_o):
#-------------------------------------------------------
self.db_o = KomponenteDatabase_cl()
self.db_o = database_o
#-------------------------------------------------------
def GET(self):
@@ -157,10 +156,10 @@ class ProjektKomponenten_cl(object):
}
if id == None:
# Anforderung der Liste
retVal_o['data'] = self.db_o.read_px()
retVal_o['data'] = self.db_o['komponente'].read_px()
else:
# Anforderung eines Dokuments
data_o = self.db_o.read_px(id)
data_o = self.db_o['komponente'].read_px(id)
if data_o != None:
retVal_o['data'] = adjustId_p(id, data_o)
@@ -187,13 +186,12 @@ class Komponente_cl(object):
exposed = True # gilt für alle Methoden
#-------------------------------------------------------
def __init__(self):
def __init__(self, database_o):
#-------------------------------------------------------
self.db_o = KomponenteDatabase_cl()
self.dbProjekt_o = ProjektDatabase_cl()
self.db_o = database_o
#-------------------------------------------------------
def GET(self, id = None):
def GET(self, database, id = None):
#-------------------------------------------------------
retVal_o = {
'data': None,
@@ -201,14 +199,14 @@ class Komponente_cl(object):
}
if id == None:
# Anforderung der Liste
retVal_o['data'] = self.db_o.read_px()
retVal_o['data'] = self.db_o['komponente'].read_px()
else:
# Anforderung eines Dokuments
data_o = self.db_o.read_px(id)
data_o = database['komponente'].read_px(id)
if data_o != None:
retVal_o['data'] = adjustId_p(id, data_o)
retVal_o['projekt'] = self.dbProjekt_o.read_px()
retVal_o['projekt'] = self.db_o['projekt'].read_px()
return retVal_o
@@ -234,7 +232,7 @@ class Komponente_cl(object):
}
# Update-Operation
retVal_o['id'] = id_s
if self.db_o.update_px(id_s, data_o):
if self.db_o['komponente'].update_px(id_s, data_o):
pass
else:
retVal_o['id'] = None
@@ -257,7 +255,7 @@ class Komponente_cl(object):
'projektid': data_opl["projektid_s"]
}
# Create-Operation
id_s = self.db_o.create_px(data_o)
id_s = self.db_o['komponente'].create_px(data_o)
retVal_o['id'] = id_s
return retVal_o
@@ -270,7 +268,7 @@ class Komponente_cl(object):
'id': id
}
if self.db_o.delete_px(id):
if self.db_o['komponente'].delete_px(id):
pass
else:
retVal_o['id'] = None

View File

@@ -43,9 +43,9 @@ class QsMitarbeiter_cl(object):
exposed = True # gilt für alle Methoden
#-------------------------------------------------------
def __init__(self):
def __init__(self, database_o):
#-------------------------------------------------------
self.db_o = QsMitarbeiterDatabase_cl()
self.db_o = database_o
#-------------------------------------------------------
def GET(self, id = None):
@@ -55,10 +55,10 @@ class QsMitarbeiter_cl(object):
}
if id == None:
# Anforderung der Liste
retVal_o['data'] = self.db_o.read_px()
retVal_o['data'] = self.db_o['qsmitarbeiter'].read_px()
else:
# Anforderung eines Dokuments
data_o = self.db_o.read_px(id)
data_o = self.db_o['qsmitarbeiter'].read_px(id)
if data_o != None:
retVal_o['data'] = adjustId_p(id, data_o)
@@ -85,7 +85,7 @@ class QsMitarbeiter_cl(object):
}
# Update-Operation
retVal_o['id'] = id_s
if self.db_o.update_px(id_s, data_o):
if self.db_o['qsmitarbeiter'].update_px(id_s, data_o):
pass
else:
retVal_o['id'] = None
@@ -107,7 +107,7 @@ class QsMitarbeiter_cl(object):
'name': data_opl["name_s"]
}
# Create-Operation
id_s = self.db_o.create_px(data_o)
id_s = self.db_o['qsmitarbeiter'].create_px(data_o)
retVal_o['id'] = id_s
return retVal_o
@@ -120,7 +120,7 @@ class QsMitarbeiter_cl(object):
'id': id
}
if self.db_o.delete_px(id):
if self.db_o['qsmitarbeiter'].delete_px(id):
pass
else:
retVal_o['id'] = None
@@ -146,9 +146,9 @@ class SwEntwickler_cl(object):
exposed = True # gilt für alle Methoden
#-------------------------------------------------------
def __init__(self):
def __init__(self, database_o):
#-------------------------------------------------------
self.db_o = SwEntwicklerDatabase_cl()
self.db_o = database_o
#-------------------------------------------------------
def GET(self, id = None):
@@ -158,10 +158,10 @@ class SwEntwickler_cl(object):
}
if id == None:
# Anforderung der Liste
retVal_o['data'] = self.db_o.read_px()
retVal_o['data'] = self.db_o['swentwickler'].read_px()
else:
# Anforderung eines Dokuments
data_o = self.db_o.read_px(id)
data_o = self.db_o['swentwickler'].read_px(id)
if data_o != None:
retVal_o['data'] = adjustId_p(id, data_o)
@@ -188,7 +188,7 @@ class SwEntwickler_cl(object):
}
# Update-Operation
retVal_o['id'] = id_s
if self.db_o.update_px(id_s, data_o):
if self.db_o['swentwickler'].update_px(id_s, data_o):
pass
else:
retVal_o['id'] = None
@@ -210,7 +210,7 @@ class SwEntwickler_cl(object):
'name': data_opl["name_s"]
}
# Create-Operation
id_s = self.db_o.create_px(data_o)
id_s = self.db_o['swentwickler'].create_px(data_o)
retVal_o['id'] = id_s
return retVal_o
@@ -223,7 +223,7 @@ class SwEntwickler_cl(object):
'id': id
}
if self.db_o.delete_px(id):
if self.db_o['swentwickler'].delete_px(id):
pass
else:
retVal_o['id'] = None