diff --git a/Praktikum3/bt/app/__pycache__/navigation.cpython-36.pyc b/Praktikum3/bt/app/__pycache__/navigation.cpython-36.pyc index 6e67770..9e0547f 100644 Binary files a/Praktikum3/bt/app/__pycache__/navigation.cpython-36.pyc and b/Praktikum3/bt/app/__pycache__/navigation.cpython-36.pyc differ diff --git a/Praktikum3/bt/app/__pycache__/staff.cpython-36.pyc b/Praktikum3/bt/app/__pycache__/staff.cpython-36.pyc index e9c9f81..4cc09ce 100644 Binary files a/Praktikum3/bt/app/__pycache__/staff.cpython-36.pyc and b/Praktikum3/bt/app/__pycache__/staff.cpython-36.pyc differ diff --git a/Praktikum3/bt/app/navigation.py b/Praktikum3/bt/app/navigation.py index 29bfc84..232fcb6 100755 --- a/Praktikum3/bt/app/navigation.py +++ b/Praktikum3/bt/app/navigation.py @@ -36,7 +36,8 @@ class Navigation_cl(object): {'action': 'fehler' , 'text': 'Bearbeitung Fehlerdaten'}, {'action': 'projekt' , 'text': 'Pflege Projekte'}, {'action': 'komponente' , 'text': 'Pflege Komponenten'}, - {'action': 'mitarbeiter' , 'text': 'Pflege Daten Mitarbeiter'}, + {'action': 'qsmitarbeiter' , 'text': 'Pflege Daten QS-Mitarbeiter'}, + {'action': 'swentwickler' , 'text': 'Pflege Daten SW-Entwickler'}, {'action': 'kategorien' , 'text': 'Pflege Kategorien'}, {'action': 'prolist' , 'text': 'Auswertung Projekte/Fehler'}, {'action': 'catlist' , 'text': 'Auswertung Kategorien/Fehler'} diff --git a/Praktikum3/bt/app/staff.py b/Praktikum3/bt/app/staff.py index 743e976..a9efd3d 100644 --- a/Praktikum3/bt/app/staff.py +++ b/Praktikum3/bt/app/staff.py @@ -3,14 +3,27 @@ import json import cherrypy -#from .database import SourceDatabase_cl, EvaluatedDatabase_cl +from .database import QsMitarbeiterDatabase_cl, SwEntwicklerDatabase_cl # Method-Dispatching! # Übersicht Anforderungen / Methoden # (beachte: / relativ zu /navigation, siehe Konfiguration Server!) +#------------------------------------------------------- +def adjustId_p(id_spl, data_opl): +#------------------------------------------------------- + if id_spl == None: + data_opl['id'] = '' + elif id_spl == '': + data_opl['id'] = '' + elif id_spl == '0': + data_opl['id'] = '' + else: + data_opl['id'] = id_spl + return data_opl + """ Anforderung GET PUT POST DELETE ----------------------------------------------------------------------------------------- @@ -32,27 +45,87 @@ class QsMitarbeiter_cl(object): #------------------------------------------------------- def __init__(self): #------------------------------------------------------- - pass + self.db_o = QsMitarbeiterDatabase_cl() #------------------------------------------------------- - def GET(self): + def GET(self, id = None): #------------------------------------------------------- - return json.dumps(retVal_o) + retVal_o = { + 'data': None + } + if id == None: + # Anforderung der Liste + retVal_o['data'] = self.db_o.read_px() + else: + # Anforderung eines Dokuments + data_o = self.db_o.read_px(id) + if data_o != None: + retVal_o['data'] = adjustId_p(id, data_o) + + return retVal_o #------------------------------------------------------- - def PUT(self): + def PUT(self, data_opl): #------------------------------------------------------- - return json.dumps(retVal_o) + # 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! + + id_s = data_opl["id_s"] + data_o = { + 'name': data_opl["name_s"], + 'id': data_opl["id_s"] + } + # Update-Operation + retVal_o['id'] = id_s + if self.db_o.update_px(id_s, data_o): + pass + else: + retVal_o['id'] = None + + return retVal_o #------------------------------------------------------- - def POST(self): + def POST(self, data_opl): #------------------------------------------------------- - return json.dumps(retVal_o) + retVal_o = { + 'id': None + } + + # data_opl: Dictionary mit den gelieferten key-value-Paaren + + # hier müsste man prüfen, ob die Daten korrekt vorliegen! + + data_o = { + 'name': data_opl["name_s"] + } + # Create-Operation + id_s = self.db_o.create_px(data_o) + retVal_o['id'] = id_s + + return retVal_o #------------------------------------------------------- - def DELETE(self): + def DELETE(self, id): #------------------------------------------------------- - return json.dumps(retVal_o) + # Eintrag löschen, nur noch Rückmeldung liefern + retVal_o = { + 'id': id + } + + if self.db_o.delete_px(id): + pass + else: + retVal_o['id'] = None + + return retVal_o @@ -75,26 +148,86 @@ class SwEntwickler_cl(object): #------------------------------------------------------- def __init__(self): #------------------------------------------------------- - pass + self.db_o = SwEntwicklerDatabase_cl() #------------------------------------------------------- - def GET(self): + def GET(self, id = None): #------------------------------------------------------- - return json.dumps(retVal_o) + retVal_o = { + 'data': None + } + if id == None: + # Anforderung der Liste + retVal_o['data'] = self.db_o.read_px() + else: + # Anforderung eines Dokuments + data_o = self.db_o.read_px(id) + if data_o != None: + retVal_o['data'] = adjustId_p(id, data_o) + + return retVal_o #------------------------------------------------------- - def PUT(self): + def PUT(self, data_opl): #------------------------------------------------------- - return json.dumps(retVal_o) + # 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! + + id_s = data_opl["id_s"] + data_o = { + 'name': data_opl["name_s"], + 'id': data_opl["id_s"] + } + # Update-Operation + retVal_o['id'] = id_s + if self.db_o.update_px(id_s, data_o): + pass + else: + retVal_o['id'] = None + + return retVal_o #------------------------------------------------------- - def POST(self): + def POST(self, data_opl): #------------------------------------------------------- - return json.dumps(retVal_o) + retVal_o = { + 'id': None + } + + # data_opl: Dictionary mit den gelieferten key-value-Paaren + + # hier müsste man prüfen, ob die Daten korrekt vorliegen! + + data_o = { + 'name': data_opl["name_s"] + } + # Create-Operation + id_s = self.db_o.create_px(data_o) + retVal_o['id'] = id_s + + return retVal_o #------------------------------------------------------- - def DELETE(self): + def DELETE(self, id): #------------------------------------------------------- - return json.dumps(retVal_o) + # Eintrag löschen, nur noch Rückmeldung liefern + retVal_o = { + 'id': id + } + + if self.db_o.delete_px(id): + pass + else: + retVal_o['id'] = None + + return retVal_o # EOF \ No newline at end of file diff --git a/Praktikum3/bt/data/qsmitarbeiter/1.dat b/Praktikum3/bt/data/qsmitarbeiter/1.dat new file mode 100644 index 0000000..f051322 --- /dev/null +++ b/Praktikum3/bt/data/qsmitarbeiter/1.dat @@ -0,0 +1,4 @@ +{ + "name": "QS-Mitarbeiter1", + "id": "1" +} \ No newline at end of file diff --git a/Praktikum3/bt/data/qsmitarbeiter/2.dat b/Praktikum3/bt/data/qsmitarbeiter/2.dat new file mode 100644 index 0000000..af54c23 --- /dev/null +++ b/Praktikum3/bt/data/qsmitarbeiter/2.dat @@ -0,0 +1,4 @@ +{ + "name": "QS-Mitarbeiter2", + "id": "2" +} \ No newline at end of file diff --git a/Praktikum3/bt/data/qsmitarbeiter/3.dat b/Praktikum3/bt/data/qsmitarbeiter/3.dat new file mode 100644 index 0000000..40b2719 --- /dev/null +++ b/Praktikum3/bt/data/qsmitarbeiter/3.dat @@ -0,0 +1,4 @@ +{ + "name": "QS-Mitarbeiter3", + "id": "3" +} \ No newline at end of file diff --git a/Praktikum3/bt/data/qsmitarbeiter/4.dat b/Praktikum3/bt/data/qsmitarbeiter/4.dat new file mode 100644 index 0000000..8ca0776 --- /dev/null +++ b/Praktikum3/bt/data/qsmitarbeiter/4.dat @@ -0,0 +1,4 @@ +{ + "name": "QS-Mitarbeiter4", + "id": "4" +} \ No newline at end of file diff --git a/Praktikum3/bt/data/qsmitarbeiter/maxid.dat b/Praktikum3/bt/data/qsmitarbeiter/maxid.dat index c227083..7813681 100755 --- a/Praktikum3/bt/data/qsmitarbeiter/maxid.dat +++ b/Praktikum3/bt/data/qsmitarbeiter/maxid.dat @@ -1 +1 @@ -0 \ No newline at end of file +5 \ No newline at end of file diff --git a/Praktikum3/bt/data/swentwickler/1.dat b/Praktikum3/bt/data/swentwickler/1.dat new file mode 100644 index 0000000..3f29f53 --- /dev/null +++ b/Praktikum3/bt/data/swentwickler/1.dat @@ -0,0 +1,4 @@ +{ + "name": "SW-Entwickler1", + "id": "1" +} \ No newline at end of file diff --git a/Praktikum3/bt/data/swentwickler/2.dat b/Praktikum3/bt/data/swentwickler/2.dat new file mode 100644 index 0000000..c9b2369 --- /dev/null +++ b/Praktikum3/bt/data/swentwickler/2.dat @@ -0,0 +1,4 @@ +{ + "name": "SW-Entwickler2", + "id": "2" +} \ No newline at end of file diff --git a/Praktikum3/bt/data/swentwickler/3.dat b/Praktikum3/bt/data/swentwickler/3.dat new file mode 100644 index 0000000..6499972 --- /dev/null +++ b/Praktikum3/bt/data/swentwickler/3.dat @@ -0,0 +1,4 @@ +{ + "name": "SW-Entwickler3", + "id": "3" +} \ No newline at end of file diff --git a/Praktikum3/bt/data/swentwickler/5.dat b/Praktikum3/bt/data/swentwickler/5.dat new file mode 100644 index 0000000..5fdf5bd --- /dev/null +++ b/Praktikum3/bt/data/swentwickler/5.dat @@ -0,0 +1,4 @@ +{ + "name": "SW-Entwickler5", + "id": "5" +} \ No newline at end of file diff --git a/Praktikum3/bt/data/swentwickler/maxid.dat b/Praktikum3/bt/data/swentwickler/maxid.dat index c227083..7813681 100755 --- a/Praktikum3/bt/data/swentwickler/maxid.dat +++ b/Praktikum3/bt/data/swentwickler/maxid.dat @@ -1 +1 @@ -0 \ No newline at end of file +5 \ No newline at end of file diff --git a/Praktikum3/bt/static/js/app.js b/Praktikum3/bt/static/js/app.js index 0d763b5..a273d31 100755 --- a/Praktikum3/bt/static/js/app.js +++ b/Praktikum3/bt/static/js/app.js @@ -27,6 +27,12 @@ APP.Application_cl = class { this.listKomponente_o = new APP.ListView_cl('komponente', '/komponente/', 'komponentelist.tpl'); this.detailKomponente_o = new APP.DetailView_cl('komponente', '/komponente/', 'komponentedetail.tpl'); + this.listQsMitarbeiter_o = new APP.ListView_cl('qsmitarbeiter', '/qsmitarbeiter/', 'qsmitarbeiterlist.tpl'); + this.detailQsMitarbeiter_o = new APP.DetailView_cl('qsmitarbeiter', '/qsmitarbeiter/', 'qsmitarbeiterdetail.tpl'); + + this.listSwEntwickler_o = new APP.ListView_cl('swentwickler', '/swentwickler/', 'swentwicklerlist.tpl'); + this.detailSwEntwickler_o = new APP.DetailView_cl('swentwickler', '/swentwickler/', 'swentwicklerdetail.tpl'); + // this.listSources_o = new APP.ListView_cl('source', '/source/', 'sourceslist.tpl'); // this.detailSources_o = new APP.SourceDetailView_cl('source', '/source/', 'sourcedetail.tpl'); // this.listEvaluated_o = new APP.ListView_cl('evaluated', '/evaluated/', 'evaluatedlist.tpl'); @@ -69,6 +75,28 @@ APP.Application_cl = class { // Detailformular im Content-Bereich anzeigen self_opl.setContent_p(self_opl.detailKomponente_o, data_apl[1]); break; + case 'qsmitarbeiter': + self_opl.setContent_p(self_opl.listQsMitarbeiter_o, data_apl[1]); + break; + case 'qsmitarbeiter.add': + // (leeres) Detailformular im Content-Bereich anzeigen + self_opl.setContent_p(self_opl.detailQsMitarbeiter_o, data_apl[1]); + break; + case 'qsmitarbeiter.edit': + // Detailformular im Content-Bereich anzeigen + self_opl.setContent_p(self_opl.detailQsMitarbeiter_o, data_apl[1]); + break; + case 'swentwickler': + self_opl.setContent_p(self_opl.listSwEntwickler_o, data_apl[1]); + break; + case 'swentwickler.add': + // (leeres) Detailformular im Content-Bereich anzeigen + self_opl.setContent_p(self_opl.detailSwEntwickler_o, data_apl[1]); + break; + case 'swentwickler.edit': + // Detailformular im Content-Bereich anzeigen + self_opl.setContent_p(self_opl.detailSwEntwickler_o, data_apl[1]); + break; default: console.warn('[Application_cl] unbekannte app-Notification: '+data_apl[0]); break; diff --git a/Praktikum3/bt/templates/.DS_Store b/Praktikum3/bt/templates/.DS_Store index 4d51cc9..8790c54 100644 Binary files a/Praktikum3/bt/templates/.DS_Store and b/Praktikum3/bt/templates/.DS_Store differ diff --git a/Praktikum3/bt/templates/qsmitarbeiterdetail.tpl b/Praktikum3/bt/templates/qsmitarbeiterdetail.tpl new file mode 100644 index 0000000..d017ab6 --- /dev/null +++ b/Praktikum3/bt/templates/qsmitarbeiterdetail.tpl @@ -0,0 +1,20 @@ + +
+

+ Pflege QS-Mitarbeiter +

+
+ + +
+ + +
+ +
+
+ + +
+
+ \ No newline at end of file diff --git a/Praktikum3/bt/templates/qsmitarbeiterlist.tpl b/Praktikum3/bt/templates/qsmitarbeiterlist.tpl new file mode 100755 index 0000000..258cb8d --- /dev/null +++ b/Praktikum3/bt/templates/qsmitarbeiterlist.tpl @@ -0,0 +1,25 @@ + +
+

+ Pflege QS-Mitarbeiter +

+
+ + + @var rows_o = context['data'];@ + @for var key_s in rows_o@ + + @var row_o = rows_o[key_s];@ + + + @endfor@ +
NameID
#row_o['name']##row_o['id']#
+
+
+ + + +
+
+ + \ No newline at end of file diff --git a/Praktikum3/bt/templates/swentwicklerdetail.tpl b/Praktikum3/bt/templates/swentwicklerdetail.tpl new file mode 100644 index 0000000..e8d18f7 --- /dev/null +++ b/Praktikum3/bt/templates/swentwicklerdetail.tpl @@ -0,0 +1,20 @@ + +
+

+ Pflege SW-Mitarbeiter +

+
+ + +
+ + +
+ +
+
+ + +
+
+ \ No newline at end of file diff --git a/Praktikum3/bt/templates/swentwicklerlist.tpl b/Praktikum3/bt/templates/swentwicklerlist.tpl new file mode 100755 index 0000000..15b7c76 --- /dev/null +++ b/Praktikum3/bt/templates/swentwicklerlist.tpl @@ -0,0 +1,25 @@ + +
+

+ Pflege SW-Mitarbeiter +

+
+ + + @var rows_o = context['data'];@ + @for var key_s in rows_o@ + + @var row_o = rows_o[key_s];@ + + + @endfor@ +
NameID
#row_o['name']##row_o['id']#
+
+
+ + + +
+
+ + \ No newline at end of file