From 9eb1a4c9b76db27504f93083af09139f2df492fb Mon Sep 17 00:00:00 2001 From: Holger Trampe Date: Thu, 5 Dec 2019 00:12:11 +0100 Subject: [PATCH] =?UTF-8?q?-=20Standards=20und=20Aufgaben=20fertig=20-=20B?= =?UTF-8?q?ei=20den=20Standards=20ist=20was=20mit=20den=20Bildern,=20das?= =?UTF-8?q?=20geht=20nur=20beim=20Admin=20-=20Wichtig:=20Wenn=20was=20gel?= =?UTF-8?q?=C3=B6scht=20wird=20protected=20noch=20die=20Datenbank,=20hier?= =?UTF-8?q?=20entsprechende=20=C3=84nderungen=20des=20zu=20l=C3=B6schenend?= =?UTF-8?q?en=20Models=20=C3=BCbernehmen!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- areas/__pycache__/__init__.cpython-38.pyc | Bin 154 -> 154 bytes areas/__pycache__/admin.cpython-38.pyc | Bin 266 -> 266 bytes areas/__pycache__/apps.cpython-38.pyc | Bin 372 -> 372 bytes areas/__pycache__/forms.cpython-38.pyc | Bin 867 -> 867 bytes areas/__pycache__/models.cpython-38.pyc | Bin 1390 -> 1390 bytes areas/__pycache__/urls.cpython-38.pyc | Bin 899 -> 899 bytes areas/__pycache__/views.cpython-38.pyc | Bin 4180 -> 4180 bytes .../__pycache__/0001_initial.cpython-38.pyc | Bin 1441 -> 1441 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 165 -> 165 bytes areas/templates/areas/areas_update.html | 9 +- .../__pycache__/__init__.cpython-38.pyc | Bin 164 -> 164 bytes .../__pycache__/settings.cpython-38.pyc | Bin 2980 -> 4087 bytes .../__pycache__/urls.cpython-38.pyc | Bin 1528 -> 1688 bytes .../__pycache__/views.cpython-38.pyc | Bin 356 -> 356 bytes .../__pycache__/wsgi.cpython-38.pyc | Bin 583 -> 583 bytes standards/__pycache__/__init__.cpython-38.pyc | Bin 158 -> 158 bytes standards/__pycache__/admin.cpython-38.pyc | Bin 199 -> 274 bytes standards/__pycache__/apps.cpython-38.pyc | Bin 384 -> 384 bytes standards/__pycache__/models.cpython-38.pyc | Bin 196 -> 1699 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 169 -> 169 bytes tasks/__pycache__/__init__.cpython-38.pyc | Bin 154 -> 154 bytes tasks/__pycache__/admin.cpython-38.pyc | Bin 195 -> 266 bytes tasks/__pycache__/apps.cpython-38.pyc | Bin 372 -> 372 bytes tasks/__pycache__/forms.cpython-38.pyc | Bin 854 -> 1168 bytes tasks/__pycache__/models.cpython-38.pyc | Bin 1326 -> 1335 bytes tasks/__pycache__/urls.cpython-38.pyc | Bin 668 -> 902 bytes tasks/__pycache__/views.cpython-38.pyc | Bin 1816 -> 4576 bytes tasks/admin.py | 3 +- tasks/forms.py | 21 ++--- .../__pycache__/0001_initial.cpython-38.pyc | Bin 1314 -> 1314 bytes .../0002_tasks_name.cpython-38.pyc | Bin 588 -> 588 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 165 -> 165 bytes tasks/urls.py | 8 +- tasks/views.py | 86 ++++++++++++++++-- users/__pycache__/__init__.cpython-38.pyc | Bin 154 -> 154 bytes users/__pycache__/admin.cpython-38.pyc | Bin 299 -> 299 bytes users/__pycache__/apps.cpython-38.pyc | Bin 519 -> 519 bytes users/__pycache__/models.cpython-38.pyc | Bin 2985 -> 2985 bytes users/__pycache__/signals.cpython-38.pyc | Bin 1070 -> 1070 bytes users/__pycache__/urls.cpython-38.pyc | Bin 1357 -> 1357 bytes users/__pycache__/usersforms.cpython-38.pyc | Bin 3182 -> 3182 bytes users/__pycache__/views.cpython-38.pyc | Bin 7019 -> 7019 bytes .../__pycache__/0001_initial.cpython-38.pyc | Bin 1847 -> 1847 bytes .../0002_auto_20191204_0857.cpython-38.pyc | Bin 794 -> 794 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 165 -> 165 bytes 45 files changed, 95 insertions(+), 32 deletions(-) diff --git a/areas/__pycache__/__init__.cpython-38.pyc b/areas/__pycache__/__init__.cpython-38.pyc index 3ff9165446ebb00592cac02f68b94e6289c870f1..30d31c2dc3b489bf787129931174db75fe0749fa 100644 GIT binary patch delta 29 jcmbQmIE#@xl$V!_0SFXNKA*_##ul1al$w|`G29sdW#b42 delta 29 jcmbQmIE#@xl$V!_0SNxzem0TYjm;xJCq1=jVz@H^bYuwc diff --git a/areas/__pycache__/admin.cpython-38.pyc b/areas/__pycache__/admin.cpython-38.pyc index c67ec552f61826b88ab750f12a9eadc0b42d5925..cda1b662bbb38cfe7310d8062f6e08a53a3a9f29 100644 GIT binary patch delta 29 jcmeBT>SE#!<>lpK00PC6&nI$kWed$KN=?j}c+3R=XgvtW delta 29 jcmeBT>SE#!<>lpK0D}LwpH1Z6%I1-ulb%{M@t6w$cD@O) diff --git a/areas/__pycache__/apps.cpython-38.pyc b/areas/__pycache__/apps.cpython-38.pyc index e7a6b788707ede82f983f1105cea9a3dc78988b8..ef3a5a09399afac8392bdb2183aea745fef88bbd 100644 GIT binary patch delta 29 jcmeyu^o5B#l$V!_0SFXNKA*^apDi@6C^a!>;)fOhfzJvr delta 29 jcmeyu^o5B#l$V!_0SNxzem0T&KAT5=PI_w5#1Ab1kWdR4 diff --git a/areas/__pycache__/forms.cpython-38.pyc b/areas/__pycache__/forms.cpython-38.pyc index c9f46acf804bdbbb80bdcadd5ec68ddb1e9eb1ed..42894cbae48f6c54780d75c5a90f1993c6fb248d 100644 GIT binary patch delta 31 lcmaFN_Lz+;l$V!_0SFXNZsby8VhhbHN=?k!Y{X>92mpFb2c-Z2 delta 31 lcmaFN_Lz+;l$V!_0SHtxH*zU4v3ca@q^A~bHexbl1ORi&2SWe= diff --git a/areas/__pycache__/models.cpython-38.pyc b/areas/__pycache__/models.cpython-38.pyc index 83d08a83a8a57c8e6677c312a7d028b8c26dafe7..0f8b47fdbbb6f54633a099eb85d9838fd7644951 100644 GIT binary patch delta 32 mcmaFI^^S`>l$V!_0SFXNKHtb)&cqg)SCpEVv$=!m8501Q5(*6f delta 32 mcmaFI^^S`>l$V!_0SNxzezuXjoQcgNKPNr4XmbbCGbRA3R0{S0 diff --git a/areas/__pycache__/urls.cpython-38.pyc b/areas/__pycache__/urls.cpython-38.pyc index ddff2d14dbbf441c927891c51fa832017ea49def..4a41cf24d02435519f9f1e6d7faeee5ce02bdf7e 100644 GIT binary patch delta 31 lcmZo>Z)WEX<>lpK00PC6&o^?*GqZ)}6{RNTOg3N+1^{io2hIQh delta 31 lcmZo>Z)WEX<>lpK0D}LwpKaupXJ+%r&q+@$nry%v3;=!?2)6(L diff --git a/areas/__pycache__/views.cpython-38.pyc b/areas/__pycache__/views.cpython-38.pyc index f424ff3b982c80428dae68669d0824b9389c5fae..34faae456738713ee59e4db72b62674e011060df 100644 GIT binary patch delta 31 lcmcbja7BSDl$V!_0SFXNZsgKoW(&Y{M+U3jlz82kZa< diff --git a/areas/migrations/__pycache__/0001_initial.cpython-38.pyc b/areas/migrations/__pycache__/0001_initial.cpython-38.pyc index 4b1a5c3426be9d4c054b36a3e3156f9bb1043bd9..7fdd250fda6270815659e137d1527556638b4076 100644 GIT binary patch delta 32 mcmZ3;y^xzbl$V!_0SFXNKHtdQz`_=qSCpEVvw0$m03!f|y$G}b delta 32 mcmZ3;y^xzbl$V!_0SGp{c(#$dfrZT@KPNr4X!ArC0Y(6k3<+BR diff --git a/areas/migrations/__pycache__/__init__.cpython-38.pyc b/areas/migrations/__pycache__/__init__.cpython-38.pyc index 1f7cdb4d4fdbe0be01509c72db6600777d561f19..b38d0f03cd95cc29b1eac68e029c037750ecc25c 100644 GIT binary patch delta 29 jcmZ3=xRjAQl$V!_0SFXNKA*_##ul1al$w|`G29OTXjTX( delta 29 jcmZ3=xRjAQl$V!_0SNxzem0TYjm;xJCq1=jVz?gwcGn3I diff --git a/areas/templates/areas/areas_update.html b/areas/templates/areas/areas_update.html index cb2e1ba..9ba7364 100644 --- a/areas/templates/areas/areas_update.html +++ b/areas/templates/areas/areas_update.html @@ -2,9 +2,6 @@ {% load static %} {% load crispy_forms_tags %} {% block content %} - - -

Bereich aktualisieren


@@ -117,11 +114,7 @@ $("#addusertoareabtn").prop('disabled', true); } - //Ajax-Call to add a User to Area - function addUser(numb){ - console.log("USER HINZU: " + numb); - } - + //Check for valid input on inputfield function checkValue(){ var g = $('#searchusers').val(); diff --git a/digitaleagentur/__pycache__/__init__.cpython-38.pyc b/digitaleagentur/__pycache__/__init__.cpython-38.pyc index f932871733a77d6ad81880de62bc990e9c8b7a3e..ac75e045bf7d7b03630250033dbc2d3aa421e9ed 100644 GIT binary patch delta 29 jcmZ3&xP*~Al$V!_0SFXNKA*_##ul1al$w|`G29mbXdMV7 delta 29 jcmZ3&xP*~Al$V!_0SNxzem0TYjm;xJCq1=jVz@5=cAg0h diff --git a/digitaleagentur/__pycache__/settings.cpython-38.pyc b/digitaleagentur/__pycache__/settings.cpython-38.pyc index e37347064192fb1bcb05b31d7ca928c0578a1661..df45778108a8aa1eea1d04477dbedb049732548a 100644 GIT binary patch delta 1462 zcmYjROH&(15N4NU5t6{XG1wSCu`xz6j-3Z_5=%k?fk2>@g6ZHWEA_Ap+T9WRuz`#2 zxutaF;H2^oIOQMYl**ZFE;;y=q$*WZDx@W3!cI+3e?9&DrfPp2`Fmoz(A^zuqwklY z-(N*W+S-0=fXm-7ffuyhU%#8q*02xzjUEW%01o014&w-3#ZjXZLO2Ftyk@kag4b~z zZ{P&pG!!o3ts}*dpc`*P58i<*co%w6fj+zk{d5lCBn;wxe1KE<5U25xLEbpi&@h5g ze2lYXe_{migCiMhPw^RkNQRH_W0IfX9LZ1dIevzpllBF^z?jk3bd6&I=MA~3CozQ! zxQJ;(Y2qbZ#!TyO1y?cK(${bubEsh+3;3m>Hhnj!^h?}4qETR|Mx6qFMQaOR;nznU zWE{pKenWE>QE$ppQ8Z%#UqZR@`29R@8SY%ybUR|i!SzEftW(hMkZVIrt$Pd9nF2BDJf z^0Mn4n9PN)f=!*7+-4NvIlRK4OY=)^+2K_WLYiM?P78!{%o49zN;sD8P01&Uty}D* zgL}-PJXPJ%4M(r;KzP-+O3Y!H;jRbaxNn-wYoX3;&G(Sm9<@V-=?unAQLgOy!lTLw zhv^=h=dU5O^Hxa0}+Ru|ow~sF?>k;~aU$bIz5VXF?#O+lH?j z3_57cO3ei&Lno*OyMa&C785jnlM(fNKu}VG+6y$K#t+$vS{9~oXwp2}_Yw`AYAl>9 z9i9-T3xO4VpIhV%L2XC8X?EnEsN8m$<3UH-qAqICk=IKmgPuj<@I%V3n>nAbs#)A* z2gG@mmAP&vc60~2)+i)StW-{=D2!~iK{xP1k=8{7{2|#By>zozLcqOY4PXZnId( zWnl2aSXj$sWAnweSbh;kFRZzwmd~XV`C^>>wPX&4FI}w{(z#?&%g0hF7>sRb#b(|{ z!0JLVR-i=xdrzcSVhhP)JVx=W^U!;dCXroDr5Cj0-L7ZS*i-r!It_7}PRwl;h-!DM zU=w9#{ik4BdRK1`O?FDMB>$oG*B^zZm)jLtky=Y8yBs`|6S=iWDPNJ_DQC)f{beZgANAA8)&Kwi delta 345 zcmYk1OG^S_6o%&;rzUmA@qWv@rrBh6vx}=hh=d>_Bskb2c*nsIB&XK>hM28HMZ0#n z4C;ThZP7l2pjDr)dJoS7FPyVDKk284-cnVUz|%3l&fdL(@Hr{}qwuoFv6Nf==*CpY z1t0tfAczpch?p|D5hVpNQ-Fjx=8-@WDO2h)q=%BpNJWM`$RdY4p8^(89L{tZX((Zl zZb4Sr;P2}uWpMK z?5grO>Z>&tukhyw6a6+D^>)iL23Gr^-!qMY{pM-1J9|zmI>wUMu4y`x?Pu-q56Bc% AnE(I) diff --git a/digitaleagentur/__pycache__/urls.cpython-38.pyc b/digitaleagentur/__pycache__/urls.cpython-38.pyc index a77585bdaa2c23fc19297bab894ac7e9c7a92e95..2ada6cba46191e5757b4cb2cedeba5b82d16c141 100644 GIT binary patch delta 575 zcmZXR%}T>S5P-97)Fx@#XlrU?>%Y}nZN-b=Nf57IqzLt=l+Gf?v?-fZr56u5c#wh; z1Rp|AzJPDw-Kz&5z>A0n$GHB0JM1#wH@iCv`>I^4g|e#30uJN-d3Uc*5S~8a@6Zrd zaXPKb!uBZ$5V7J7t)dZuhC!lzX1_TAGALaFQBb>Kv@uG|gqie0n8&FInn$3Y*9MRi z$VtwF$U1V0^AK_x+2A~k9R{&OCg^aQ<$46Qj(RlEW899TO`)9#>?F5SXot{F2R6s; z3{}z11}@Lt9PKsJP~bF=Pg(GY7ur`V29?a=3zA_LHK>A+!I_0(H?%BN3@B|1`9=SP zY{_}@*xPPdb`AUoa+8xCx7LIj1EW35#T$`0T`gdCW zx{R{m4BoDSU2ivN)2%Ywb~o}PepW{)c-?A2lUwSZ^e5fi#yoo^0vOVvQu^_ nb9Ty2Mr)RT*0a7;#7dNCB>Ee&j=9D|Ctr~yF%o?d;}P-!4$hKe delta 410 zcmbQi`-59Ml$V!_0SMYspU19aV_M6#iz$6alE5AdoKv?&0q#it(TzC z&}6*DnwXM1c@3lYWJabno3Ai+F-~q|5oVN`Je6hYWDnN;Qqn+WMIhprtFu*1XmM&$ sag0ZPPI_w5WJNYt9Sxui52FAh4-9gO0a*fID8>kZB8+@rS$H`Z0bR&iZ~y=R diff --git a/digitaleagentur/__pycache__/views.cpython-38.pyc b/digitaleagentur/__pycache__/views.cpython-38.pyc index ecd32fe2c0dc36dd462ef0984d435a882ca5a65e..a73478d8bedd835798243b66dbb76937b4983fe8 100644 GIT binary patch delta 29 jcmaFD^n{5!l$V!_0SFXNKA*_FjV&~;_)gC^@splSw9##^k3DY=<>FBu^`&ft>7yp+VElwv z{1Pb2pvicPH8CYOGtWlpK00PC6&nI#}XA8|MN=?j}_@e^=X%Pus delta 29 jcmZo*ZeZpP<>lpK0D}LwpH1X`&gPMylb%{M@ka*$cajQ5 diff --git a/standards/__pycache__/models.cpython-38.pyc b/standards/__pycache__/models.cpython-38.pyc index 8733a2b9473d68e4e138f03324c21961054b2371..f0076c4065573798fbb6a057dcfae3e15ce83076 100644 GIT binary patch literal 1699 zcmZux&2rl|5azE)Nt7-B#CDuC?ex;op?ZK!rxR6<(@Yz;6U!HjG8~A2B}yRa0%RLy zI=wVkJwcx!Z_-O&0LS*yTzl-PyU>p{amm5*!(tcM{dU2tR;yvb^UveIU;W`*)?YZ; zems~wfuVi@!7OGAE3=7hBX)$7xx_Wt6<+2O-(XMFvVa5z`y$Nhq;7CcG_odX8XSly zYmt`0q1YiiuwPy5W^K~8t!EZ%u;yEfHMu?A`_(1;EWETj(R+x&>e#xL6^si7sQ&ff z#kc1v7YruemEsbYdt;s_b3lRQKXR!!K))wBMHhcS)l6LgI(nHVlL3ESUfqa-vNRu? zof14{`>Da?2@Lfo2yPLZS;XP))Z;$L8nYJ;3Cuj)%}*vy-NBIYocdCXt9q{Vkw zjRh?1Y2%AsS#@T^FxjOV2qK6^eGvUHr5RB#F{R#tMjj#v$s zJ=wjP>mY_iWE?-jV;vBd{bp~&Xm_=GCsMp>CenQXC0sS;K)iNpGk4)Y%-+SD_U5?H zs~ZNyXy;}Inbc-KQ8`w?E%vIskKzyornD5tfOLDz%b1Q-A*zzcl@y+3%e_)ioq7 znacpR9tCzK7KL~v+(=#TPpC8(P#%C*){Spc*%YZ zfR4zQXV=Vbi9Eq19-z1_f`LeE&@m1I+zkBcrF z8JfvXndb8>;oW85Nf-9frz<05O{SwRt;)&T02w3^ULLhpnesGOKF|%yv=51}G#ewV z7KyM#8x>Yfeuny!WX4%q7Ba5PKa|TZ+)BaJvV8sv{85_}{*MJ6ezEMNFY%Tt?EA>x JenUHQ{sYh5!p;By delta 155 zcmZ3?dxWt*l$V!_0SNxzeimy3q#uJg$bbpRaRB0C0U(jWkiwY5kjogw$jFew6wIK> z{1Pb2pvicPEjK?UHK*85lj#;`N>*ZCdcIytQV~e=N`@j9AO$9VIXYX#gche36~}nw c=cK0=O;%zy7UHl0YA(%5wPOUT`wYYk07Ob5asU7T diff --git a/standards/migrations/__pycache__/__init__.cpython-38.pyc b/standards/migrations/__pycache__/__init__.cpython-38.pyc index 29deb7ee2a04effbfec9bcfb4eea3999c5c09dd9..b2c215d4cdbac6d80b8be83486d44b86c869e08c 100644 GIT binary patch delta 29 jcmZ3oWQZR%)%_~Yx%$fKh QMgT4gR#L<{IfhXJ00jyY9{>OV delta 75 zcmeyu^o5B#l$V!_0SNxzem0SN3gfMb3(TZAf&3y6@ypuTDkiizwWv78BR?lSwP@mp Q7y-B}SVIKKV*{ZcPlcgXSL z!TlWp!Yln@kOTytf$&9e4kD1GU~`s)B0PaOS`_g~OpJG=WTtbAaec6>gWki9goFr4 zC_)iI5sJ=f!Y-go1QYx`O!x(GNIZn~7T+K4U9XWW;kL?V3hy&dJll>4MbzVozkE#I zZ$(IaBd zIHknRf4;9a@mEeTtOm!86?OwZeTbo^Ur^Fl@{U!cqBYEE!D>>|kAy(Q3$O5NRs=;@ zM1p=GH53iOwjo^;fKqwe@F})|CN{EJPmc1lG@T5blDKKuWIQpRo=&7v0dkozP5YyM zm8QzK$6)-bka?x8#Ilmg1QRvJtu%h-zzjvO4OjVkD%F{mRm=_7vg{h3sUB7i-q=-b z0nFf%m?%y2GSeCdI5A=}`c0C@e;r^<(*jFt~Q`Syp zeR3{35YxJX&t+MzC>+lYz+F&|%__A-+Ik(*^@h{lj-%xt`e-w0X7;u156425+WDY@ OXSPE>`-0lO;nd8F(Ew48jz>3lw{v+h z&_hgKnOU-Gi=Rfb-t8pXB;9B{>}!*?cW>+|tLzR2Wfm9sOkvT7uWT&hG66eylg$S7MAyVQ_svtUIfpyYoa;zxi0 diff --git a/tasks/__pycache__/models.cpython-38.pyc b/tasks/__pycache__/models.cpython-38.pyc index 20ff2e893ef0aceebe48873d079bf6cd500d1886..c2a188230593a9a6d01a66ba3e96f2bd4e225478 100644 GIT binary patch delta 127 zcmZ3-wVjJQl$V!_0SJtxUTowxVl)*@VeDm!5=v#x5>6G#63r4zVNc-(iiiV6B!Fz5 zUdAZN6y6lR7KSLP6#f(eAT2$)i17+rXkJljV$NhArtge0lUl`G>eVhityf%*V*6KKTuc69AiCAn*VH delta 118 zcmdnawT_EBl$V!_0SFkgo^RwfVl-t-VeDm!5=>>z5=s@$63G%xVNc-(iiiP4#DQ#{ zUdAYi6y6lR7KSLv6#f(eAT2eyi17-WM}AIvYSCmLrtgf>lUm$8{Kg)fD>ml>#lAF6Q!3>&W6Sp`svP}G;pvWJRSe#w#lA4oR zk{XtoT7C;65L%Fu2oabp&Nwl#O0)!|Oy4Fmuf(b#+fF|Ptf7hrEUXLV@uMk%N#`c! zC8noVaV8d}CMISjR_Ispf>i2)*kwRF{WJw8uVyR^ECK~!5jT*y#hzFk50Z)!0;!Bo zOi2No9S_oSi@UTary#MUB(*57cqK!T2uK%*_+{;E6%$&VT2vepng_HiXR<$&wFF3p XhmnU-fKh^xhfRi221rXV^8E$?UOIZ; delta 228 zcmZo;pTnvh%FD~e00av&p2yB%Vqka-;vfTdAjbiSi(4jYTLv&Pq_Ctg<#6RPM=>)p zq%x+krLw26H#4SkWO1i(q;U2!HZ!JhrEvE$1Lb(2a-2XpUZ@-&NG_cziYJ9Xm_buu z;xA`Lrpb1U3X>ZcCoubI@=h*fDm1>uo>&}TmYG_9i@UTary#MUB(*57cqK!T5YQoD r;+M6vRZM7cYEf~FM}AIvYSCn4W@{lnpfnF752FAO^03J;%KQTWL0dE? diff --git a/tasks/__pycache__/views.cpython-38.pyc b/tasks/__pycache__/views.cpython-38.pyc index 78dd4fe77df14994692901ae2be79695decc800d..581a33675911f98ab6bc47ebc937f8e4a857974c 100644 GIT binary patch literal 4576 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 diff --git a/tasks/admin.py b/tasks/admin.py index 8c38f3f..7cf348d 100644 --- a/tasks/admin.py +++ b/tasks/admin.py @@ -1,3 +1,4 @@ from django.contrib import admin - +from .models import Tasks # Register your models here. +admin.site.register(Tasks) \ No newline at end of file diff --git a/tasks/forms.py b/tasks/forms.py index 44cf0a1..7095ce8 100644 --- a/tasks/forms.py +++ b/tasks/forms.py @@ -1,27 +1,22 @@ from django import forms from django.forms import ModelForm from .models import Tasks +from areas.models import Areas class TasksAddTaskForm(forms.ModelForm): - visible = forms.CheckboxInput() class Meta: - model = Tasks + model =Tasks labels = { "name" : "Aufgabenname", "area" : "Übergeordneter Bereich", "desc" : "Beschreibung", "visible": "Im Organigramm sichtbar" + } + fields = ['name', 'area', 'desc', 'visible'] - } - fields['visible'] = forms.HiddenInput() - fields = ['name', 'area', 'desc', 'visible'] - + def __init__(self, *args, **kwargs): + user = kwargs.pop('user') + super(TasksAddTaskForm, self).__init__(*args, **kwargs) + self.fields['area'].queryset = Areas.objects.filter(agency__pk=user.profile.agency.pk) - - - #def __init__(self, user=None, *args, **kwargs): - # super().__init__(*args, **kwargs) - # if(user != None): - # users_of_agency = User.objects.filter(profile__agency__pk=user.profile.agency.pk) - # self.fields['usersfield'].queryset = users_of_agency \ No newline at end of file diff --git a/tasks/migrations/__pycache__/0001_initial.cpython-38.pyc b/tasks/migrations/__pycache__/0001_initial.cpython-38.pyc index ff347341b1a376f3917e514b8221dc48bd3aeb78..a488890802ab43fe0cac6b00dd247b62acf2050b 100644 GIT binary patch delta 30 kcmZ3)wTO!=l$V!_0SFXNZsd|;VGGSGN=?j}ti|#J0A#TT#Q*>R delta 30 kcmZ3)wTO!=l$V!_0SG>(ZRC<-Ve`n(Nlz`Bti|#J0Bh_BEC2ui diff --git a/tasks/migrations/__pycache__/0002_tasks_name.cpython-38.pyc b/tasks/migrations/__pycache__/0002_tasks_name.cpython-38.pyc index d481111ee86006fe867a4659e3188b41bafe7c21..a063065091637b9a8a430895716d8b8703c6b711 100644 GIT binary patch delta 30 kcmX@Za)yN~l$V!_0SFXNZseNC$QGJcl$w|`c_HI!0CV05r~m)} delta 30 kcmX@Za)yN~l$V!_0SMT#HgZj5Wb??+Nlz`BypVA<0BgPoC;$Ke diff --git a/tasks/migrations/__pycache__/__init__.cpython-38.pyc b/tasks/migrations/__pycache__/__init__.cpython-38.pyc index ded374bebddf4dfa0f78d8b3d455f9479c40f2c8..11e65aad8f8576c58319c7f8e59d8cdd721dbdba 100644 GIT binary patch delta 29 jcmZ3=xRjAQl$V!_0SFXNKA*_##ul1al$w|`G29OTXjTX( delta 29 jcmZ3=xRjAQl$V!_0SNxzem0TYjm;xJCq1=jVz?gwcGn3I diff --git a/tasks/urls.py b/tasks/urls.py index 7919907..41a892a 100644 --- a/tasks/urls.py +++ b/tasks/urls.py @@ -1,7 +1,7 @@ from django.urls import path from django.contrib.auth import views as auth_views from django.contrib.auth.decorators import login_required, permission_required -from .views import TasksManagement, TasksAddTask +from .views import TasksManagement, TasksAddTask, TasksDeleteView, TasksUpdateView from . import views ''' Permissions definiert in models.py bei USERS und dann hier vor die View geschrieben! @@ -10,7 +10,7 @@ Permissions definiert in models.py bei USERS und dann hier vor die View geschrie urlpatterns = [ path('', permission_required('users.tasks_management')(TasksManagement.as_view(template_name="tasks/tasks_management.html")), name='tasks-management'), path('addtask/', permission_required('users.tasks_management')(TasksAddTask.as_view(template_name="tasks/tasks_add.html")), name='tasks-addtask'), - + path('tasks//delete', permission_required('users.tasks_management')(TasksDeleteView.as_view()), name='tasks-delete'), + path('tasks//', permission_required('users.tasks_management')(TasksUpdateView.as_view()), name='tasks-manage'), + path('areaajax/', views.task_addtasks_ajax, name="task-ajaxview") ] - - diff --git a/tasks/views.py b/tasks/views.py index 7abdd65..f78c9aa 100644 --- a/tasks/views.py +++ b/tasks/views.py @@ -1,9 +1,11 @@ from django.shortcuts import render from django.contrib.auth.mixins import LoginRequiredMixin +from django.contrib.auth.models import User from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView, View from .models import Tasks from .forms import TasksAddTaskForm from django.contrib import messages +from django.http import HttpResponse, JsonResponse # Create your views here. class TasksManagement(LoginRequiredMixin, ListView): @@ -23,17 +25,16 @@ class TasksAddTask(LoginRequiredMixin, CreateView): success_url = '/tasks' form_class = TasksAddTaskForm - #def get(self,request,*args, **kwargs): - # # User ist der hier Aufgerufene, bzw. das Profil! - # return render (request, self.template_name, {'form':self.form_class(self.request.user), 'active_link': 'areasmanagement'}) + def get_form_kwargs(self): + kwargs = super(TasksAddTask, self).get_form_kwargs() + kwargs['user'] = self.request.user + return kwargs - - # Adding active_link def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update({'active_link' : 'tasksmanagement'}) return context - + def form_valid(self, form): # Send message to the site messages.success(self.request, f'Aufgabe angelegt!') @@ -41,3 +42,76 @@ class TasksAddTask(LoginRequiredMixin, CreateView): form.instance.agency = self.request.user.profile.agency form.instance.created_area_by = self.request.user return super().form_valid(form) + +class TasksDeleteView(LoginRequiredMixin, DeleteView): + model = Tasks + success_url = '/tasks' + template_name = 'tasks/tasks_confirm_delete.html' + + def get_context_data(self, **kwargs): + context = super(TasksDeleteView, self).get_context_data(**kwargs) + context['active_link'] = 'tasksmanagement' + return context + +# Hier andere Nutzer ändern, wenn man Usersmanagement darf! +class TasksUpdateView(LoginRequiredMixin, UpdateView): + model = Tasks + template_name = 'tasks/tasks_update.html' + success_url = '/tasks' + form_class = TasksAddTaskForm + + def get_form_kwargs(self): + kwargs = super(TasksUpdateView, self).get_form_kwargs() + kwargs['user'] = self.request.user + return kwargs + + def form_valid(self, form): + # Send message to the site + messages.success(self.request, f'Aufgabe aktualisiert!') + return super().form_valid(form) + + def get_context_data(self, **kwargs): + context = super(TasksUpdateView, self).get_context_data(**kwargs) + tasks = Tasks.objects.get(pk=context['object'].pk) + # User still in Area + context['added_users'] = tasks.usersfield.all() + # Get all Users from same Agency which are NOT in context_added_users + possible_users = User.objects.filter(profile__agency__pk=self.request.user.profile.agency.pk).exclude(pk__in=context['added_users']) + context['possible_users'] = possible_users + # Active-Link for Base-Design + context['active_link'] = 'tasksmanagement' + # Area ID + context['objectid'] = context['object'].pk + return context + +def task_addtasks_ajax(request): + if request.method == 'GET': + + # ADD USER TO MANY-TO-MANY USERSFIELD + if request.GET['action'] == 'adduser': + task = Tasks.objects.get(pk=request.GET['objectid']) + task.usersfield.add(User.objects.get(pk=request.GET['userid'])) + task.save() + # REMOVE USER TO MANY-TO-MANY USERSFIELD + elif request.GET['action'] == 'remuser': + task = Tasks.objects.get(pk=request.GET['objectid']) + task.usersfield.remove(User.objects.get(pk=request.GET['userid'])) + task.save() + userid = request.GET['userid'] + workinguser = User.objects.get(pk=userid) + username_clean = workinguser.first_name + " " + workinguser.last_name + + # Getting Remaining-Users + task = Tasks.objects.get(pk=request.GET['objectid']) + added_users = task.usersfield.all() + possible_users = User.objects.filter(profile__agency__pk=request.user.profile.agency.pk).exclude(pk__in=added_users) + possible_users_js = list(possible_users.values()) + # Cleaned out, that only data is neede will send to the side (first/last-name and id) + final_possible_users = {} + for ele in possible_users_js: + final_possible_users.update({'first_name':ele['first_name'],'last_name':ele['last_name'],'id':ele['id']}) + # Counter for remaining users to show/hide "Keine Mitarbeiter"-Div + remaining_users_counter = len(added_users) + return JsonResponse({'userid' : userid, 'username_clean' : username_clean, 'remaining_users':possible_users_js, 'remaining_users_counter' : final_possible_users}) + else: + return HttpResponse("Request method is not a GET") diff --git a/users/__pycache__/__init__.cpython-38.pyc b/users/__pycache__/__init__.cpython-38.pyc index 1988400f604d060f1d1b78fe675e7ff1ed970e9e..a18065bbe162459ba20d443b64fcfbfe16584c28 100644 GIT binary patch delta 29 jcmbQmIE#@xl$V!_0SFXNKA*_##ul1al$w|`G29sdW#b42 delta 29 jcmbQmIE#@xl$V!_0SNxzem0TYjm;xJCq1=jVz@H^bYuwc diff --git a/users/__pycache__/admin.cpython-38.pyc b/users/__pycache__/admin.cpython-38.pyc index a7ab0e1e1313e2fd4d027cd9c106cdd77dd0fe2e..ecc0bbdc00707a6d327d6f47fed5ba4c02413b9f 100644 GIT binary patch delta 29 jcmZ3@w3>-Kl$V!_0SFXNKA*^ag)KC%C^a!>;!`&OaS91Z delta 29 jcmZ3@w3>-Kl$V!_0SNxzem0T&3Y$lMPI_w5#HVfme~St- diff --git a/users/__pycache__/apps.cpython-38.pyc b/users/__pycache__/apps.cpython-38.pyc index cea3da864bc17e16e9627b47fef36ce08d588109..eb52b101aaed1a41b4714691ce2387685bb39555 100644 GIT binary patch delta 31 lcmZo?X=mXM<>lpK00PC6&o^?jGO~r{6{RNTOcrDO2moy22sQu! delta 31 lcmZo?X=mXM<>lpK0D}LwpKau3Wn}Zn&q+@$nk>fn5deKV2_FCe diff --git a/users/__pycache__/models.cpython-38.pyc b/users/__pycache__/models.cpython-38.pyc index a25dac1c75fa34cc89d803e468f4efe53c41b23d..02990ae034ac14b8c90442aa252cb4e78f864848 100644 GIT binary patch delta 34 ocmZ1}zEYewl$V!_0SMY2K97CAk@pZ2TWDTUYGTgjt4voo0Jo?M?f?J) delta 34 ocmZ1}zEYewl$V!_0SL-`p2xn~$a{#1%_Bc2J+)}_Ri-N(0IHq~NB{r; diff --git a/users/__pycache__/signals.cpython-38.pyc b/users/__pycache__/signals.cpython-38.pyc index c3ecb59112e9f934d517c3c71944e490f989f7f9..09da039d75a81ed1ce18edd9e91534cca8abf570 100644 GIT binary patch delta 32 mcmZ3-v5tc~l$V!_0SFXNKHtdQ$HW$zSCpEVvw1#KKO+E%2?<{S delta 32 mcmZ3-v5tc~l$V!_0SNxzezuXjkBQAAKPNr4X!CrgentSAOA1H; diff --git a/users/__pycache__/urls.cpython-38.pyc b/users/__pycache__/urls.cpython-38.pyc index 6495e0a8f1140f21aa140ca044a4cf64188caf7b..16ecda055f401474efcf30234421fbcba15061c9 100644 GIT binary patch delta 31 lcmX@hb(V`el$V!_0SJ^&KHtcFpM@GzFDC$+7YZ8y delta 32 mcmaDS@lJv}l$V!_0SK7xJln{fz{KW}pOc(ZRCn$V)Mw)Nlz`BoX4~V0BsZqOaK4? diff --git a/users/migrations/__pycache__/__init__.cpython-38.pyc b/users/migrations/__pycache__/__init__.cpython-38.pyc index e100748a11ca364e362201503434b91decf1dbfc..593ee649dea0532ee9713851e5e6805a11e12f0d 100644 GIT binary patch delta 29 jcmZ3=xRjAQl$V!_0SFXNKA*_##ul1al$w|`G29OTXjTX( delta 29 jcmZ3=xRjAQl$V!_0SNxzem0TYjm;xJCq1=jVz?gwcGn3I