From 2f677551bba194fc8c32530d017b494d65ae15ab Mon Sep 17 00:00:00 2001 From: darthsandmann Date: Thu, 19 Jan 2017 17:28:35 +0100 Subject: [PATCH] fishished --- Praktikum3/.DS_Store | Bin 6148 -> 6148 bytes Praktikum3/bt/.DS_Store | Bin 10244 -> 10244 bytes .../__pycache__/application.cpython-36.pyc | Bin 2344 -> 2761 bytes .../app/__pycache__/database.cpython-36.pyc | Bin 6757 -> 7368 bytes .../bt/app/__pycache__/error.cpython-36.pyc | Bin 5237 -> 5205 bytes .../bt/app/__pycache__/eval.cpython-36.pyc | Bin 2422 -> 2403 bytes .../bt/app/__pycache__/projekt.cpython-36.pyc | Bin 3479 -> 3577 bytes .../bt/app/__pycache__/staff.cpython-36.pyc | Bin 2815 -> 2917 bytes Praktikum3/bt/app/application.py | 32 ++++++--- Praktikum3/bt/app/database.py | 48 ++++++++------ Praktikum3/bt/app/error.py | 61 ++++++++---------- Praktikum3/bt/app/eval.py | 33 ++++------ Praktikum3/bt/app/projekt.py | 46 +++++++------ Praktikum3/bt/app/staff.py | 28 ++++---- Praktikum3/bt/data/.DS_Store | Bin 10244 -> 10244 bytes Praktikum3/bt/data/fehler/14.dat | 14 ---- Praktikum3/bt/data/fehler/25.dat | 14 ++++ Praktikum3/bt/data/fehler/26.dat | 14 ++++ Praktikum3/bt/data/fehler/27.dat | 14 ++++ Praktikum3/bt/data/fehler/{15.dat => 28.dat} | 12 ++-- Praktikum3/bt/data/fehler/29.dat | 14 ++++ Praktikum3/bt/data/fehler/maxid.dat | 2 +- .../bt/data/katfehler/{1.dat => 12.dat} | 2 +- .../bt/data/katfehler/{2.dat => 13.dat} | 2 +- .../bt/data/katfehler/{3.dat => 14.dat} | 2 +- Praktikum3/bt/data/katfehler/5.dat | 4 -- Praktikum3/bt/data/katfehler/6.dat | 4 -- Praktikum3/bt/data/katfehler/maxid.dat | 2 +- Praktikum3/bt/data/katursache/1.dat | 4 -- Praktikum3/bt/data/katursache/14.dat | 4 ++ Praktikum3/bt/data/katursache/15.dat | 4 ++ Praktikum3/bt/data/katursache/16.dat | 4 ++ Praktikum3/bt/data/katursache/2.dat | 4 -- Praktikum3/bt/data/katursache/3.dat | 4 -- Praktikum3/bt/data/katursache/4.dat | 4 -- Praktikum3/bt/data/katursache/6.dat | 4 -- Praktikum3/bt/data/katursache/7.dat | 4 -- Praktikum3/bt/data/katursache/maxid.dat | 2 +- Praktikum3/bt/data/komponente/24.dat | 5 ++ Praktikum3/bt/data/komponente/25.dat | 5 ++ Praktikum3/bt/data/komponente/26.dat | 5 ++ Praktikum3/bt/data/komponente/27.dat | 5 ++ Praktikum3/bt/data/komponente/28.dat | 5 ++ Praktikum3/bt/data/komponente/maxid.dat | 2 +- Praktikum3/bt/data/projekt/19.dat | 4 ++ Praktikum3/bt/data/projekt/20.dat | 4 ++ Praktikum3/bt/data/projekt/21.dat | 4 ++ Praktikum3/bt/data/projekt/4.dat | 4 -- Praktikum3/bt/data/projekt/7.dat | 4 -- Praktikum3/bt/data/projekt/maxid.dat | 2 +- Praktikum3/bt/data/qsmitarbeiter/1.dat | 4 -- Praktikum3/bt/data/qsmitarbeiter/10.dat | 4 ++ Praktikum3/bt/data/qsmitarbeiter/2.dat | 4 -- Praktikum3/bt/data/qsmitarbeiter/3.dat | 4 -- Praktikum3/bt/data/qsmitarbeiter/4.dat | 4 -- Praktikum3/bt/data/qsmitarbeiter/8.dat | 4 ++ Praktikum3/bt/data/qsmitarbeiter/9.dat | 4 ++ Praktikum3/bt/data/qsmitarbeiter/maxid.dat | 2 +- Praktikum3/bt/data/swentwickler/1.dat | 4 -- Praktikum3/bt/data/swentwickler/10.dat | 4 ++ Praktikum3/bt/data/swentwickler/2.dat | 4 -- Praktikum3/bt/data/swentwickler/3.dat | 4 -- Praktikum3/bt/data/swentwickler/5.dat | 4 -- Praktikum3/bt/data/swentwickler/8.dat | 4 ++ Praktikum3/bt/data/swentwickler/9.dat | 4 ++ Praktikum3/bt/data/swentwickler/maxid.dat | 2 +- Praktikum3/bt/doc/Praktikum4.html | 1 - Praktikum3/bt/doc/Praktikum4.md | 4 +- Praktikum3/bt/static/js/detail.js | 35 ++++++++++ Praktikum3/bt/templates/fehlerlist.tpl | 7 +- Praktikum3/bt/templates/fehlerqsdetail.tpl | 2 +- Praktikum3/bt/templates/fehlerqspdetail.tpl | 2 +- Praktikum3/bt/templates/fehlerswdetail.tpl | 2 +- Praktikum3/bt/templates/katlist.tpl | 2 + Praktikum3/bt/templates/prolist.tpl | 2 + 75 files changed, 322 insertions(+), 230 deletions(-) delete mode 100644 Praktikum3/bt/data/fehler/14.dat create mode 100644 Praktikum3/bt/data/fehler/25.dat create mode 100644 Praktikum3/bt/data/fehler/26.dat create mode 100644 Praktikum3/bt/data/fehler/27.dat rename Praktikum3/bt/data/fehler/{15.dat => 28.dat} (50%) create mode 100644 Praktikum3/bt/data/fehler/29.dat rename Praktikum3/bt/data/katfehler/{1.dat => 12.dat} (70%) rename Praktikum3/bt/data/katfehler/{2.dat => 13.dat} (70%) rename Praktikum3/bt/data/katfehler/{3.dat => 14.dat} (70%) delete mode 100644 Praktikum3/bt/data/katfehler/5.dat delete mode 100644 Praktikum3/bt/data/katfehler/6.dat delete mode 100644 Praktikum3/bt/data/katursache/1.dat create mode 100644 Praktikum3/bt/data/katursache/14.dat create mode 100644 Praktikum3/bt/data/katursache/15.dat create mode 100644 Praktikum3/bt/data/katursache/16.dat delete mode 100644 Praktikum3/bt/data/katursache/2.dat delete mode 100644 Praktikum3/bt/data/katursache/3.dat delete mode 100644 Praktikum3/bt/data/katursache/4.dat delete mode 100644 Praktikum3/bt/data/katursache/6.dat delete mode 100644 Praktikum3/bt/data/katursache/7.dat create mode 100644 Praktikum3/bt/data/komponente/24.dat create mode 100644 Praktikum3/bt/data/komponente/25.dat create mode 100644 Praktikum3/bt/data/komponente/26.dat create mode 100644 Praktikum3/bt/data/komponente/27.dat create mode 100644 Praktikum3/bt/data/komponente/28.dat create mode 100644 Praktikum3/bt/data/projekt/19.dat create mode 100644 Praktikum3/bt/data/projekt/20.dat create mode 100644 Praktikum3/bt/data/projekt/21.dat delete mode 100644 Praktikum3/bt/data/projekt/4.dat delete mode 100644 Praktikum3/bt/data/projekt/7.dat delete mode 100644 Praktikum3/bt/data/qsmitarbeiter/1.dat create mode 100644 Praktikum3/bt/data/qsmitarbeiter/10.dat delete mode 100644 Praktikum3/bt/data/qsmitarbeiter/2.dat delete mode 100644 Praktikum3/bt/data/qsmitarbeiter/3.dat delete mode 100644 Praktikum3/bt/data/qsmitarbeiter/4.dat create mode 100644 Praktikum3/bt/data/qsmitarbeiter/8.dat create mode 100644 Praktikum3/bt/data/qsmitarbeiter/9.dat delete mode 100644 Praktikum3/bt/data/swentwickler/1.dat create mode 100644 Praktikum3/bt/data/swentwickler/10.dat delete mode 100644 Praktikum3/bt/data/swentwickler/2.dat delete mode 100644 Praktikum3/bt/data/swentwickler/3.dat delete mode 100644 Praktikum3/bt/data/swentwickler/5.dat create mode 100644 Praktikum3/bt/data/swentwickler/8.dat create mode 100644 Praktikum3/bt/data/swentwickler/9.dat diff --git a/Praktikum3/.DS_Store b/Praktikum3/.DS_Store index 08cdf652e24ecf193e7ed1baf02f899bb8b733cc..14634223fbd0017913d37f21ff8140e1040af703 100644 GIT binary patch delta 48 zcmV-00MGw~FoZC$Lj(cGlg9;s2^M>MFf1T7IWd#b1RVjFlkWr{0hqH71^5DyfCRG# G2>lO@WDqt0 delta 35 rcmZoMXffE}%rf~9Yb&Rrg^8t(f|-H&0NMY9P=rvh&=He&8PSuS626m15QURh7D}@w6xj>22O#&JSNKC(#Dhx&*MY|%qe6q_cS1WmfxB2HWIP(f?TS=o~1 zkaD+KI6zS6T=dXOf&78~hyH^81YUc}U&yI5lKhC9LxBL5F(1jHIO5EFM!S0t}aLdC7JEBpZVbFS#eA*E{j?{nBCv%;6Sp z2QuA)4e#ZB$5c%i^-~+yyu>^9WV*No+DT?>RlSwjTvfG}J6~1rys-b(nf9t5s}uD+ zG%LCu#&P~o=#7a&(nRlPDEhe6Lvf*5nr?P1#R!FB`WDu{dxkZ3b4As{*k1u;MhAjKI_ z@Tob~Tr;tz+Q6KVq?EUI-frY=Id3a@Tg}_eyshQ!R@QR;DOhmpT!YQhL&%sp&gi7< z;ete}@<2vQzNoT11#abJQKjKL$FOFRSXIpO?%1LQ&arxKcWHGbwqZiF5q1#HA)H5e z4S?ZJLSPj$!76r~hG^hy4Pgrb4z4CD2vvkl0A}+!(_(>16?mFO0ilRsB3K9|1RDYK zAj$x$bmEOTQa*NwGNd2&|IoynF!Ow`b5Ht0c7|Tixe+9t?+(7~90_lj1j9+R*Evo) z-gt~M&-UfFm4UHMvlILV{B=z6I(%2r8wXuw!ObAVLv&jB60RTVtD;PR z5Kb<3T6SX?!Rq8&FLdKH>=|5u1p=eD2O=^5 znqg5JLbt8g^fH9)tiBdB*iui&7vVt$U_Xu2K6LU((M6;#uEl~*=^_@Na(yKhG>rv4 z6b{%4eqV`#adhWySG)ykaS7pVgm)0$1#pbiZSfu|-beTV0jag(879UcSq4*<<_vAEWib2Pq8^}=c%1LxVq^&?2^`NEX~W-( zHdKeHj{Qe8ApPD_dnZxPIj}SN)?rf zNS#xqo89iwfe^9CS*c2%xIc;DQkSYYJcWT|g-G6aq>*d?T(>(nJ@pRuDD^AgqR*7xwe%^Z{zmlrrwLCxK+L&-1V2p_; zeWXu`OFaVH?7j4vMgERf_n3E3Co!QB8n=( zD^HNBVdX}@9|r9v52Bvi4llZH&yKtvH=GtWn-K?Uz8M?oiQ{oZPWRY0;?q~k~@kWK>GDl4Ksg*1mWk96Ro z1+ZNK#5o|M=o*zwIVb7zuymjh@g>`Okmj(TJ{(At`u+b+;S9uC5l^(8hkr%S-m2ZL zHERD>Bc49A#gLTNNC2~?4M0ZG|%5?4noewHN&nHFh5&j zxb819jPsdMeT2V3IxMz;3QJ*l9XpRS4LhA|9vp}m!|95u=w)ir5-n4cq20EAjW8W+ pK@{nor6e1*w){3v{f7lj^sC*-8-)IK1ta4qby=5ZBvS$?KLHa~vxxuz diff --git a/Praktikum3/bt/app/__pycache__/database.cpython-36.pyc b/Praktikum3/bt/app/__pycache__/database.cpython-36.pyc index 366196545925a3ca41ccc9c70fe467ac566f1417..b1d0a91b7fa62cb6abff506537622897eaf9b92b 100644 GIT binary patch delta 1948 zcmb7EO>7%g5PolW?QGV&&iV)cl%POE2o_QdN<%5+$0?2TLy{&flqeDcr@JMt)5Lwd zZK`UcB2uVOg-|sJaRDK5;8qEY1P3G#2wEhlxFIcHx_pE8)QZY5=L7IY$me75N_d4Isr?)loG;W0YMOH!7TQ1J z3jEui*!xEAFr(7 zTlj>%OsiHYxo3n^I=*cC?P%BC@SgTW*ICM)iHb=&Z+y;Yg0GxUC8b;lzKJE_ok-{X zgLqKrr20vrI1(yV5&iIW;t*Y5Q8?~gzMS{zYN95 zWL^x>RHYiz zc)%FEK#@tFMR6ujmDz@LZrEiW7I>2%VlO?uA-j?nl$3m)oMjfzGLKgzVWLOAy(fEk zYLJ~aUu2$y<&$Q`L5!DEd}XEVxI)DjKU5XvRaf)`8L*EXRE}G;{LlRP8by>PSwO{P^@pG#k_bDy*p0b7ckoK zLOpd7rtZUzNBLK9tz)jQMd6AFP$T?1g)0W=Z<%9xv41z{KSDTmyKvj+H{f#Ya4Yn2 z1o*xQeLO&)jvvg6r+0(?8+;d^Z~pe1FqW8Zg-%WMYZLkeqF>631G_=~8@%L^X5@ch zD>>5&c@hC`H6c$Ta+VL`Fzf2ELRR=9TMSukmWpfGYPU38+kzpdV#7xKSP|yqLwWJk zZvN>OjHH%g0kw2dz?(rs`|w%nD)ucbrH{=~JmeKW*N1#z$f<`nB(glI&LvB#$U@)t zc-)haM>_I|M!7sIrt!Y7zG_#+8T*8rOO{m<1S&}4zDMmkUb?(U$g zPeUSdAH^b~GRed^=X;C61P493m$%~--ZOESZqAXq7xAa?(0?dFVglkPR9%e-^5>#( vGy7N<4OKw{LJ&&@kws9?3ThuQ1wDHn>CB+1;>1xURW_GR(~O&4D8chT=ACM! delta 1514 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 X=e~Z5v`s_U!s$DM zN>~}Vp*yIC)qxj!gIZV{_@R&c72$qlge!LpQ5D`thVYVLYKL{`HQ__|S#LmJ5drjo z^;Ka$G+Omf;Dxc@GLJqHSGL1Wj zN!h&i_8BclgYjsX46}unSALYNog5z)9w9+NO^&-Bgwusl<)!PcQ0vmXU`3rD&GkrS1l>?k_inzh(35Tw^qfZX%j zxDe>GYd*Jt2qC#KF?vSNgf|Eoc)qIji8(c&+Y=jYY`L4E^~9c9y3NFb&(=PiMV7W~ zc>!-#Rhh&X_78Y?TaLU4qgScTf+I2BlinS9lFZsTlU#XyrLoR6*N&cx0GK)^i9-HTVLFt0any)=1h99v$3< zJza+|s-Ejvt{EUv8>WTmm!d}Fv!i|k56|Ef1SsMKv~~`m4G5iyQv%J=vB@vuLHP;< z@{ZA~bpYQ&6dWN(!2xh6OHnuve)#a@?(MyI_YU?l^rL-rJb1`Md||;y-Hs+A{%bVT z823o|Q8XBd<9-rFDu|*d$8kTuQ%yb?kJ3cQOL)6{nZ%b#e1*hUNz9$$E1JWS0Dm1v zN=3l49owt;YyK5$hwpg1l%|qFKf%(lYf} z&x7K4DEMEJlX*G1ywKJEv>wUJ@FOor@+I<{Dt);W=~;Qkgk<=BMPZy#f+(Bkqqp^M z)gW5#s0QgdskKuz2vz9QYmhD=`8?%0O9eHb2l7jFo!6ZCY(1~$aB}{ZLOiGDEQR^` z7ah5AW&r1v8=hEyq5zhv&H5rf|K)NcsYoHKiuFt<(b6=a`Tpm^w|SKzMpw$6d6}un z*U(&UlK2{luakJ8QbJ|q7dRG5iASY`?tD(Aq*ic^bI8rN(D#hoWEPVgJ9GG4$y`2H zGmp=;%;)pUj06SJ#nW7FWEEGcA=>u}N(nndxX!I@|3GsdU<1@~_II*gj6$ixQN5<$0x|g`4EYjG#ef*sdqhd5rb(oO zc=B~D*PtU93Y!?%lRv=jzVGgCXsDqw1$HM$L2xcL*6 z9q`RwHP>9$yj-iYR?9VyH9yyC&}{HMf1m5Cax!_Ggw;eI#lvBys_o=()J}%VKPrGy z^(X0IzTr?o`V?D|e3zkWN3%^1o+)-Vtrb-n%kD7Ke565aa!>aGYNc4;)m;(EEXuq5 z1_oGulLWCLd5r||<5^{73hHFf#>uBw{~9QIN^@NkP=dNi$Bc@Cn&p4iNqr9g@@hbJ z;Vm5L?;vK}?5x!QHs>mBiz+N#mQ|J>%Nk3cVblb-l~+O2hgI?^++nX`0Q{Jm)~m15ITa zb;(iHSaegl+DR3ZT~ZgyTJE4)DY>VW+&Os%LnyD4xJQB(t&_&4 z*xDRyZT|Gy=G~i{_mQJSo0L5qJyjSP`Ix>2==%2=R`*RxVVV!K9ffP2{tK)t<~nLw zzSAhB^74vbr1BVVTuf!8Ew&mjn!+L|QnNlaIf-ej!YO%btFoG>BW0rIK}3V)cS!7z z_%4YzNqmpQEfU`+app*u5=HJ(E1IN|_F!_41nrD9WOwQ69TJS&4{(*^B;O_LeG;^3 z`YinAK0&mBhiSKT8XVWO%yozNP>p$w`M)um0eMTqY0Mc-bM9BpW~_Z|nf`M+(?U0Y z!!f5bKK4bgdmEDOw3^E4rK6$p@EJ_XXZYCT@MPf$L|@YQdl@hJyvA!PK`eq<15*Uv u5GZ%l?j@a!H(X4WxP!BHYs%Zvo4+?{ZRf8^^l`#719PM5U1`4G?EMpEA{{mW diff --git a/Praktikum3/bt/app/__pycache__/eval.cpython-36.pyc b/Praktikum3/bt/app/__pycache__/eval.cpython-36.pyc index a00997dc6a97ff3ee41eb1a0e08f24758c2f7c11..94ec9b83260e8bbe4adcc216d5c6c0f6bb9f0648 100644 GIT binary patch literal 2403 zcmbtW%WoS+9G=;?9mjdOq2U?IOO~n_sR%As6+uf5t*i)If>w%Fo6IC#zt)-EAh)t5 zq~y>8haNd|gTJIF)B~pxH%`6q2lRmWe!G6fiI4zW^V^xsyP9#UEdM|Lte1 zjQzo8J{IQN7|DGI!31wJKYwzc3qzP~qhtDJ$MUU??b{v4cR1T&!V>m56Sj2EOy9%W z5iZtlwk`<%HLH3rk&!iCa>%NsSH6^w+EU#K)9@fnWN_HltGg<0%2qn7yLK<`^y04U zrgBzYxfiBK^9c^A!1!ZgvW=14fRGH$Gv5&0H)#{+%(sLqY~h@9-xe0Nr;8|mKT1-x z^5D=w6n*GP;|q+W2r=LT7T`n>!W&htEpZUURYO~eY#-^O81E zT47Y%iPGBM-Op>gDr}`u>$G#Lc97P>Uauy<3)@@0$Jz^ms2in0@D>%!x-g!sO*`8f z+Z&S>J$O18S&P5ocq2A6FwBSzOu_4Hz?w`L8?4FC*Z{j9X{?FH9%-D3#;vnwyx)hn zy}|BazTX^LsWGt5IHw%Y4iGQA4K}nzf$BhmJczmtyE}^dc<796@Gi6r^-JDW?wxxM zP*)TwBkWK6ub?$4e*e#*JIxI{y2@<>j+T(e+$RDa$;w zt2z5(W=GYm*URzc3!N>YyXBUNE`Aa#bD37_?BuyvyGpyqPM%_Xwa0MMW_Hphu34pl zONMKuo&3gYCx?!9dpTZw7x#mJql>KxTKwV^Ioj%m9jUDbfTRnfs7UD2)E%p0o}OI& zg^^RXC{Nw8JWi5^>1m?9W7$)u@+j4=RIRYvO?4^HF>)vz$V5hIbevXAMb}ijN`@ln z^|jqoQ8%r6sz7Q35Xu|g>(dKhj2)H4FX*Zf=(<> z+cYl)!O3aZ9$8%3@5PA}Y7w;+wK3CP)+qI;T!_~&5(24bTBc`by8la8pum4kSJ|&n zHL_DzL}xP{XU)=9cB$Dh^-QZ=K|QoJ8zZBh-Tz2Epo|h=of8e)|7&RFtBhbk4ImhI z43|3V|30CI7Z=FI1r_`-1$`ZFpK%nyb^=f$8v-zqO?%b@ddl(JG{>bl#Lh(&F60G? ziG>XKo1!%52@2^}MESCI4EB>Yz`s2Q{-uU0*$@YK@#K zWM7!rBcbTtsp}**NW4zs4H9ocj6kXARioY}g_~cDcSx~G;#~-zGUjC>;Zylh%_{(z zq2M8clA91SfHZO#5(rBf5GxrF34}Bw7-BQ?FjVg$iF%*J2P8fu@y}@c2rl<9#%MEu zHqup#+G-|oS9^z#q*9ORT|0hRE0gllUmr!cSrJgR6CX6?VVXfT%P<3#3AnXa&&lC7 QrAUb5Jj3JHSC&8d8*JzT`Tzg` literal 2422 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 p^~4*tdqF2Ql4q)*`Gt9UnaDdK2x9S59vFP(9e zHgY7S*2?d^#g(H(>~us+bljH9nQ~R>l(kA5OnIt&%2YY@PDHDW zcc~`uK4IUb;#;g%d4UyK^96^kIobTD=Hn;{^iCKhp#Jq^Q;o6y#tecr2PIQMLZ3|gya=IXpZE%3SXN#&MpGDhGss12^o^l zT8`o^K_npQu9{RO<(=|YNtKm^$5Rukf_qtAQ&rrhasg~An?9FmWO(~rCMlaXlNCIq zJY_zziHW>fHASPN_>AAZ-&-n&e6j7mzU2* zHH#3a;0UV?p@|0tq!B-MKn{_*l(IdhoCUVWPgsf!fZlsUU&>GTu}B5R3jHX-tW=yh z`MA^p4ABG#gq=-3HJxF>)r6kH$Fi~x0}%7f5>RvXbvU(0JyM6sXF=@uGB2-zamZq$ zvAu$kh86;$j&x?lG)SFtj%F_)$KV2UiN>Q@%#ZLef*DAGhbysQ%X0yn><8!AO~n8c zWurvdfX6*?^n3F<~lAhrXvTzA{Ot>8VeJpT>UJ>WO4fcg) z*v)Z*VK;S0I4$KE^&%$g1v2L#wZZ8XkSrRDYYdXR`N`JymsrXWey}O4#HDj|>jINB zvH(Lg7F6ED3+an3-=b`(MD^krO=1AyT;M8?EX16Pv2eZh#^c6zBf$srfL)1j zZSv-S8k^bIVp=g8b8^D3Fw z$qb{hPow~vwCx=3F2Vyoq_No6x%QWq{tZEL!;tx4cGCfNeDEFf(mKV<@d)U(YJ;A#~y>5;} z{g1^fS038fAjocVQe;irYoJ>i=N9(Y70cG|PndF*VqHM|ZwuBamRByta+OrsZTK@` z8B?m+an}A(p&AYNH46AoB+3fKuSJ+ceY!m!=7>D$H!wlJN#-pwOJrV3h2F-DZ_zHQ z5cNO+-96LmX0rWtsP%K4&g=n?&NP}-Nz-w}?xM`=?d*l^#HyF3$s+<$s9q*la}j+& Qvn?Yy2k_~#yfgjPACmte#{d8T delta 1092 zcmb_bPiqrV5P$RD+xoKE*2E@hOk$fRMOj)fLGhp!QE5*SkU%NDl3GN$*QwAEO2L3H*u2OvgP(LQiIH=G@Ta~80bcbQi#0lkAO=^WD~(IBg|Sp5#lsg~4W{v} z$G)Gv$N3Bg%QKW1Dh#vu-Y;T%;^@&i+OOGjiXa4gk#+M2(yV20;ljPaf1QTSGM#d) z_7aouW`sK7cfE5>cMWstR2{l}xaQX+JrM&3nIf%(pK2s4vGNZq!4xC9@?Yt4_{CH*ALy>fIZ%}* zpc+4>t`E+!GaPzEbA@#^-ruoWX36M;B;nLX1t6)r&kOB?m2UrF_vzmLHXixeaE^>@ nm0_NNQ?h67W4TV(uSneQZ" befinden (siehe Konstruktor) - - # es wird ferner angenommen, dass die Datei "data//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 \ No newline at end of file diff --git a/Praktikum3/bt/app/error.py b/Praktikum3/bt/app/error.py index 216eed2..7aac5a5 100644 --- a/Praktikum3/bt/app/error.py +++ b/Praktikum3/bt/app/error.py @@ -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 diff --git a/Praktikum3/bt/app/eval.py b/Praktikum3/bt/app/eval.py index 66521be..5739239 100644 --- a/Praktikum3/bt/app/eval.py +++ b/Praktikum3/bt/app/eval.py @@ -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 diff --git a/Praktikum3/bt/app/projekt.py b/Praktikum3/bt/app/projekt.py index c58578e..bbdd0f8 100644 --- a/Praktikum3/bt/app/projekt.py +++ b/Praktikum3/bt/app/projekt.py @@ -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 diff --git a/Praktikum3/bt/app/staff.py b/Praktikum3/bt/app/staff.py index ca1aa64..fac1a4c 100644 --- a/Praktikum3/bt/app/staff.py +++ b/Praktikum3/bt/app/staff.py @@ -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 diff --git a/Praktikum3/bt/data/.DS_Store b/Praktikum3/bt/data/.DS_Store index e7772fd8c16e133aa020ffc542deb6e3af5e1ae8..993a6ebbbdc645849c46dbe688477f5e4d05d474 100644 GIT binary patch delta 300 zcmZn(XbIR5EWmhta=%~$hgfyBfsTTy<>Utfa*Wd_Gm6PG&X_DOn2%37O6VV_p@oU1 zj)Iwi`Q$|5o%j?#6TxeiqF5t7-S%Q~lY7Lo@hQ0=F0=W*ga-S>28qq=3cpw;^NM=l JQ%{183IHCoU3&lk delta 266 zcmZn(XbIR5EHL@BP%DR#p@FH6g1PbJI|6c(%Y;=X%L(RSm0;&&$Yw}nD48rTC_TAc z=q9?(IoNb*O#UV;IQf%EI5tU@$s%HP*d>g_q$gL1XJeP#FD|+HxP%7#W_E>NER(;A LgkV=jgyFmZ3ADer Eventservice implementiert das "Publish-Subscriber-Muster". Das bedeutet, dass es einen, oder mehrere "Subscriber" und einen "Publisher" gibt. Melden die "Subscriber" sich bei dem System an, erhalten sie jegliche "Notifications", die der "Publisher" sendet. Der Vorteil dieses Systems ist es, dass die Subscriber Nachrichten von Objekten erhalten können, von dessen Existenz sie garnicht wissen.

Templateverarbeitung

Die Templates liegen in Form von modifizierten "HTML-Dateien" vor. Diese wurde um Code der Sprache "Javascript" erweitert und mit einer speziellen Syntax gekennzeichnet. Die Template-Engine kann hiermit dynamisch Inhalt erzeugen.

-

Prüfung Markup und Stilregeln

diff --git a/Praktikum3/bt/doc/Praktikum4.md b/Praktikum3/bt/doc/Praktikum4.md index c5df111..1f3d509 100644 --- a/Praktikum3/bt/doc/Praktikum4.md +++ b/Praktikum3/bt/doc/Praktikum4.md @@ -195,6 +195,4 @@ Der Eventservice implementiert das "Publish-Subscriber-Muster". Das bedeutet, da Der Vorteil dieses Systems ist es, dass die Subscriber Nachrichten von Objekten erhalten können, von dessen Existenz sie garnicht wissen. ### Templateverarbeitung -Die Templates liegen in Form von modifizierten "HTML-Dateien" vor. Diese wurde um Code der Sprache "Javascript" erweitert und mit einer speziellen Syntax gekennzeichnet. Die Template-Engine kann hiermit dynamisch Inhalt erzeugen. - -## Prüfung Markup und Stilregeln \ No newline at end of file +Die Templates liegen in Form von modifizierten "HTML-Dateien" vor. Diese wurde um Code der Sprache "Javascript" erweitert und mit einer speziellen Syntax gekennzeichnet. Die Template-Engine kann hiermit dynamisch Inhalt erzeugen. \ No newline at end of file diff --git a/Praktikum3/bt/static/js/detail.js b/Praktikum3/bt/static/js/detail.js index 6648fa8..d743931 100755 --- a/Praktikum3/bt/static/js/detail.js +++ b/Praktikum3/bt/static/js/detail.js @@ -105,6 +105,41 @@ APP.DetailView_cl = class { } } break; + case "saven": + // Formularinhalt prüfen + if (this.checkContent_p()) { + // kein klassisches submit, es wird auch keine neue Anzeige vorgenommen + var path_s = this.path_s; + var data_s = $("#idForm").serialize(); + console.log(data_s); + var type_s = 'PUT'; + var id_s = $('#id_s').val(); + if (id_s == '') { + type_s = 'POST'; + } + $.ajax({ + context: this, + dataType: "json", + data: data_s, + url: path_s, + type: type_s + }) + .done(function (data_opl) { + // Umwandlung der JSON-Daten vom Server bereits erfolgt + $('#id_s').val(data_opl['id']); + // aktuellen Formularinhalt speichern + // (das Formular wird ja nicht mehr neu geladen!) + this.storeFormContent_p(); + alert("Speichern ausgeführt!"); + }) + .fail(function(jqXHR_opl, textStatus_spl) { + alert( "Fehler bei Anforderung: " + textStatus_spl ); + }); + + } else { + alert("Bitte prüfen Sie die Eingaben in den Formularfeldern!") + } + break; case "saver": // kein klassisches submit, es wird auch keine neue Anzeige vorgenommen var path_s = this.path_s; diff --git a/Praktikum3/bt/templates/fehlerlist.tpl b/Praktikum3/bt/templates/fehlerlist.tpl index 8701989..549b348 100755 --- a/Praktikum3/bt/templates/fehlerlist.tpl +++ b/Praktikum3/bt/templates/fehlerlist.tpl @@ -5,12 +5,15 @@
- + @var rows_o = context['data'];@ @for var key_s in rows_o@ @var row_o = rows_o[key_s];@ - + + + + @endfor@
NameIDKomponente-ID(KatFehler-ID)(KatUrsache-ID)(QS)(SW)Status
NameIDKomponente-IDStatus
#row_o['name']##row_o['id']##row_o['komponenteid']##row_o['katfehlerid']##row_o['katursacheid']##row_o['qsmitarbeiterid']##row_o['swentwicklerid']##row_o['status']##row_o['name']##row_o['id']##row_o['komponenteid']##row_o['status']#
diff --git a/Praktikum3/bt/templates/fehlerqsdetail.tpl b/Praktikum3/bt/templates/fehlerqsdetail.tpl index e97ec14..5ccc63f 100644 --- a/Praktikum3/bt/templates/fehlerqsdetail.tpl +++ b/Praktikum3/bt/templates/fehlerqsdetail.tpl @@ -70,7 +70,7 @@
- +
\ No newline at end of file diff --git a/Praktikum3/bt/templates/fehlerqspdetail.tpl b/Praktikum3/bt/templates/fehlerqspdetail.tpl index 6970daf..88b3ba2 100644 --- a/Praktikum3/bt/templates/fehlerqspdetail.tpl +++ b/Praktikum3/bt/templates/fehlerqspdetail.tpl @@ -57,7 +57,7 @@
- +
diff --git a/Praktikum3/bt/templates/fehlerswdetail.tpl b/Praktikum3/bt/templates/fehlerswdetail.tpl index 3cf142a..91502b3 100644 --- a/Praktikum3/bt/templates/fehlerswdetail.tpl +++ b/Praktikum3/bt/templates/fehlerswdetail.tpl @@ -62,7 +62,7 @@
- +
\ No newline at end of file diff --git a/Praktikum3/bt/templates/katlist.tpl b/Praktikum3/bt/templates/katlist.tpl index 7f86a50..7863017 100755 --- a/Praktikum3/bt/templates/katlist.tpl +++ b/Praktikum3/bt/templates/katlist.tpl @@ -13,8 +13,10 @@ @for var keyFehler_s in rowsFehler_o@ @if rowsFehler_o[keyFehler_s] != 'None'@ + #rowsFehler_o[keyFehler_s]['fehlername']# #rowsFehler_o[keyFehler_s]['fehlerstatus']# + @endif@ @endfor@ diff --git a/Praktikum3/bt/templates/prolist.tpl b/Praktikum3/bt/templates/prolist.tpl index 988e4b0..e94832e 100755 --- a/Praktikum3/bt/templates/prolist.tpl +++ b/Praktikum3/bt/templates/prolist.tpl @@ -13,9 +13,11 @@ @for var keyFehler_s in rowsFehler_o@ @if rowsFehler_o[keyFehler_s] != 'None'@ + #rowsFehler_o[keyFehler_s]['fehlername']# #rowsFehler_o[keyFehler_s]['komponentename']# #rowsFehler_o[keyFehler_s]['fehlerstatus']# + @endif@ @endfor@