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}unSALY`E-VC*5rE)h|7Kx;M<8b~{IleReGJ5kETHINrjM
z?m|p3a7UJ07v{ti){ZfJ0~QmO*9yzau-LGCyRdi@L${vL066=~P*ztc^ZIX$mZjXT
zh|+PNha-+gNog5z)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