From 566ce3d68cc0f5531bd5809980622ef5ad373e21 Mon Sep 17 00:00:00 2001 From: Holger Trampe Date: Tue, 10 Dec 2019 19:49:09 +0100 Subject: [PATCH] =?UTF-8?q?Zust=C3=A4ndigkeiten=20fertig?= 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__/__init__.cpython-38.pyc | Bin 164 -> 164 bytes .../__pycache__/settings.cpython-38.pyc | Bin 4357 -> 4357 bytes .../__pycache__/urls.cpython-38.pyc | Bin 1945 -> 1945 bytes .../__pycache__/views.cpython-38.pyc | Bin 356 -> 356 bytes .../__pycache__/wsgi.cpython-38.pyc | Bin 583 -> 583 bytes news/__pycache__/__init__.cpython-38.pyc | Bin 153 -> 153 bytes news/__pycache__/admin.cpython-38.pyc | Bin 264 -> 264 bytes news/__pycache__/apps.cpython-38.pyc | Bin 369 -> 369 bytes news/__pycache__/forms.cpython-38.pyc | Bin 1307 -> 1307 bytes news/__pycache__/models.cpython-38.pyc | Bin 1455 -> 1455 bytes news/__pycache__/urls.cpython-38.pyc | Bin 643 -> 643 bytes news/__pycache__/views.cpython-38.pyc | Bin 3493 -> 3493 bytes orga/__pycache__/__init__.cpython-38.pyc | Bin 153 -> 153 bytes orga/__pycache__/admin.cpython-38.pyc | Bin 194 -> 194 bytes orga/__pycache__/apps.cpython-38.pyc | Bin 369 -> 369 bytes orga/__pycache__/models.cpython-38.pyc | Bin 191 -> 191 bytes orga/__pycache__/urls.cpython-38.pyc | Bin 351 -> 351 bytes orga/__pycache__/views.cpython-38.pyc | Bin 1817 -> 1817 bytes standards/__pycache__/__init__.cpython-38.pyc | Bin 158 -> 158 bytes standards/__pycache__/admin.cpython-38.pyc | Bin 274 -> 274 bytes standards/__pycache__/apps.cpython-38.pyc | Bin 384 -> 384 bytes standards/__pycache__/forms.cpython-38.pyc | Bin 3023 -> 3023 bytes standards/__pycache__/models.cpython-38.pyc | Bin 1653 -> 1653 bytes standards/__pycache__/urls.cpython-38.pyc | Bin 1126 -> 1126 bytes standards/__pycache__/views.cpython-38.pyc | Bin 5801 -> 5801 bytes tasks/__pycache__/__init__.cpython-38.pyc | Bin 154 -> 154 bytes tasks/__pycache__/admin.cpython-38.pyc | Bin 266 -> 266 bytes tasks/__pycache__/apps.cpython-38.pyc | Bin 372 -> 372 bytes tasks/__pycache__/forms.cpython-38.pyc | Bin 1168 -> 1168 bytes tasks/__pycache__/models.cpython-38.pyc | Bin 1335 -> 1335 bytes tasks/__pycache__/urls.cpython-38.pyc | Bin 902 -> 902 bytes tasks/__pycache__/views.cpython-38.pyc | Bin 4777 -> 4777 bytes users/__pycache__/__init__.cpython-38.pyc | Bin 154 -> 154 bytes users/__pycache__/admin.cpython-38.pyc | Bin 351 -> 351 bytes users/__pycache__/apps.cpython-38.pyc | Bin 519 -> 519 bytes users/__pycache__/models.cpython-38.pyc | Bin 3108 -> 3108 bytes users/__pycache__/priomodel.cpython-38.pyc | Bin 670 -> 670 bytes users/__pycache__/signals.cpython-38.pyc | Bin 1070 -> 1070 bytes users/__pycache__/urls.cpython-38.pyc | Bin 1697 -> 1697 bytes users/__pycache__/usersforms.cpython-38.pyc | Bin 3194 -> 4088 bytes users/__pycache__/views.cpython-38.pyc | Bin 10989 -> 11583 bytes users/templates/users/base.html | 4 +- users/templates/users/users_areatasks.html | 19 ++-- users/usersforms.py | 22 ++++ users/views.py | 97 ++++++++++++------ 52 files changed, 97 insertions(+), 45 deletions(-) diff --git a/areas/__pycache__/__init__.cpython-38.pyc b/areas/__pycache__/__init__.cpython-38.pyc index 3ff9165446ebb00592cac02f68b94e6289c870f1..3fed7162d68d91bd728d1a576fd560f9afc8b2f4 100644 GIT binary patch delta 29 jcmbQmIE#@xl$V!_0SNw!y`0GH#ul1al$w|`G29sdX<`U7 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..f4e758adddf887535dd07acbe39c5fe7eee5dcf4 100644 GIT binary patch delta 29 jcmeBT>SE#!<>lpK0D}KwFDG(uWed$KN=?j}c+3R=YrF{b 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..9290f60dc3911dbbfa0e9ed6cd8df4d767e4199d 100644 GIT binary patch delta 29 jcmeyu^o5B#l$V!_0SNw!y`0E>pDi@6C^a!>;)fOhg-!}w 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..b1a2c81d59630316b43eb0e3c53af8afb6943d9a 100644 GIT binary patch delta 32 mcmaFN_Lz-3l$V!_0SNw!z1+yH$ixl$V!_0SNw!z1+xM&cqg)SCpEVv$=!m8501U7z#Q7 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..768345688f79b2e8666d8302aa8263e19894e813 100644 GIT binary patch delta 31 lcmZo>Z)WEX<>lpK0D}KwFE?__GqZ)}6{RNTOg3N+1^{uF2m1g3 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 aae0ee2a76fcd62df330337ec0bebd82928f1ef2..0d77c06b96d71406c2cc872717f162a567cfba90 100644 GIT binary patch delta 31 lcmcbja7BSDl$V!_0SMltZ{*TpW(&Y{M+U3jl-02qFLg diff --git a/digitaleagentur/__pycache__/__init__.cpython-38.pyc b/digitaleagentur/__pycache__/__init__.cpython-38.pyc index f932871733a77d6ad81880de62bc990e9c8b7a3e..1ffa4967aa6ad31bc116f53d1659daac2b1a8ac7 100644 GIT binary patch delta 29 jcmZ3&xP*~Al$V!_0SNw!y`0GH#ul1al$w|`G29mbYn%vC 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 0ba5f3079d73a44744fd6dc67963e52fb6c89c3b..c904e7a95576c0c22eb8db16cefca2c4f01c7e07 100644 GIT binary patch delta 31 lcmZowYE|M2<>lpK0D`%DHgc`uXA8|MN=?k!yocYD5deKG2-W}q delta 31 lcmZowYE|M2<>lpK00JTRja+N^**x-d(o>5z@8S1k1ORI`2hacj diff --git a/digitaleagentur/__pycache__/urls.cpython-38.pyc b/digitaleagentur/__pycache__/urls.cpython-38.pyc index d5dc7f2e8bdc5ab118c244370d8bff45ca5daada..797d3e8b96e6f6ed2cd97132d210dbd29790e757 100644 GIT binary patch delta 58 zcmbQqKa-z3l$V!_0SF4q-fiT5%EEYS^G6nTCMhMLP!Wju;_R{py<>lpK0D_C%?R{py<>lpK0D`T~?l$V!_0SFAr-c97b%NCkfl$w|`@m(_jeSrz* delta 29 jcmey!^pS}>l$V!_0SLA_zn{o`m(3$TCq1=j;=5)5f`bY) diff --git a/news/__pycache__/forms.cpython-38.pyc b/news/__pycache__/forms.cpython-38.pyc index 2903330f43d6def8a5aa410a4334eec72409bed8..4f2a0365f5bfabdafa0b824144d0fd0806c03e26 100644 GIT binary patch delta 32 mcmbQuHJgh&l$V!_0SMH3-fiTb#l#kxSCpEVvw1aB0TTd%4haST delta 32 mcmbQuHJgh&l$V!_0SLA_zu(9`i;2x6KPNr4X!B~O0ww^5F9}Bg diff --git a/news/__pycache__/models.cpython-38.pyc b/news/__pycache__/models.cpython-38.pyc index b32eaa5da53c174eade3f3cb11f2636715441a00..bd27abd0cade6d3db163283772d0517504f7e9a5 100644 GIT binary patch delta 32 mcmZ3_y`Gypl$V!_0SF9_z1zq=orx_puP8M!XY&dsc4h#J00{>G delta 32 mcmZ3_y`Gypl$V!_0SLA_zu(9`or%pOKPNr4X!8mtc4h#JJP88; diff --git a/news/__pycache__/urls.cpython-38.pyc b/news/__pycache__/urls.cpython-38.pyc index 329ef6401b4b4f0850f2e6914ddcd3880cf5bef8..4f0ef46f6b77381e9199b17110e24e53494b120c 100644 GIT binary patch delta 31 lcmZo>ZD!>T<>lpK0D|)~-fiSoVPXr-D@skwnQY4B2LN{R2vGn4 delta 31 lcmZo>ZD!>T<>lpK0D^7K?>BO*FtK^$=cK0=O*Uon0|0L}2i^bx diff --git a/news/__pycache__/views.cpython-38.pyc b/news/__pycache__/views.cpython-38.pyc index 069e8d580391f9216dbdc73e3cdef22d401034df..f23ea3487c829563413aefd52b78569309602592 100644 GIT binary patch delta 32 mcmZ1~y;Pbzl$V!_0SMY=z1zs0!^{?%SCpEVv$>X8g9`wR-U$!@ delta 32 mcmZ1~y;Pbzl$V!_0SLA^zu(B6!_4N9pOcCkHeD delta 28 icmbQqIFpepl$V!_0SJ;`PvmlE^T^LhPc51l?gRi^rw4fe diff --git a/orga/__pycache__/admin.cpython-38.pyc b/orga/__pycache__/admin.cpython-38.pyc index 651384684116cf6391eeaeec37f3b8e2222d989e..52eca0c92f3a0ab5173ba7012a825eca6e26877b 100644 GIT binary patch delta 28 icmX@ac!-fJl$V!_0SM-$PUI?P3(YG^P0X3tY!3iq1_#>! delta 28 icmX@ac!-fJl$V!_0SJ;`Pvk0Q^T^LhPc53*Y!3ith6o@4 diff --git a/orga/__pycache__/apps.cpython-38.pyc b/orga/__pycache__/apps.cpython-38.pyc index 52f5b4505120cb964510a077e541ff0b348ef124..bad2d216850ae7c550cb0afabd18b356d7ff6d53 100644 GIT binary patch delta 28 icmey!^pS}xl$V!_0SM-$PUO1B7MfR-nwT^3T{8f3*9lbs delta 28 icmey!^pS}xl$V!_0SJ;`PvpAC=8>P1o?0~VT{8f7R|%Q` diff --git a/orga/__pycache__/models.cpython-38.pyc b/orga/__pycache__/models.cpython-38.pyc index 96f69e5121134d8d361df12e58ad35dbf0925820..0ceedb82a58dcb3efea227223322e5c568536fd7 100644 GIT binary patch delta 28 icmdnbxSx?Ll$V!_0SM-$PUOmG3(YG^P0X2C?*IT|F$c~7 delta 28 icmdnbxSx?Ll$V!_0SJ;`PvpvH^T^LhPc52Q?*IU0u?Q0Y diff --git a/orga/__pycache__/urls.cpython-38.pyc b/orga/__pycache__/urls.cpython-38.pyc index 442122f07be7bd7ca8908f57f3622b4724a469f5..dbd25575fdb0d4f8be448feb683f85986dcbae74 100644 GIT binary patch delta 30 kcmcc5bf1YUl$V!_0SNY$Y~M5jl$V!_0SNw!y`0FslPxr_C^a!>;wcXRZL|px delta 29 jcmbQlG>M5jl$V!_0SNTgyqL(nlg%SPCq1=j;wcXRX#oh% diff --git a/standards/__pycache__/apps.cpython-38.pyc b/standards/__pycache__/apps.cpython-38.pyc index 455238482355b378b9f97e64e9aadd8228fef25a..4506211131a69db5c71ef884880cf05ea1472067 100644 GIT binary patch delta 29 jcmZo*ZeZpP<>lpK0D}KwFDG(8XA8|MN=?j}_@e^=Y>)|x delta 29 jcmZo*ZeZpP<>lpK0D}LwpH1X`&gPMylb%{M@ka*$cajQ5 diff --git a/standards/__pycache__/forms.cpython-38.pyc b/standards/__pycache__/forms.cpython-38.pyc index 26a019c22ec7cbcda0173028b2b24a36f95075c2..a2f4a40024aac8943c6c7448ffb5fa990f26b7bd 100644 GIT binary patch delta 32 mcmX>veqNkAl$V!_0SNw!z1+xM#l#kxSCpEVv$>neg%bdln+bsc delta 32 mcmX>veqNkAl$V!_0SNTgyx7QH#l+^3pOcPf47nQ9}`<>UQudd&Srk*Bu2)l%|$G885z|k3$UdE07xPY Al>h($ delta 45 zcmey$^Oc7?l$V!_0SLA^zu(CHkBQAAKPNr4Xfr=^5+mcS%|$G885z|l3$UdE06r)U Ak^lez diff --git a/standards/__pycache__/urls.cpython-38.pyc b/standards/__pycache__/urls.cpython-38.pyc index 29e42d32824cef7b763b480ffc27da2ccd9c232b..67f12f14a70361083920dd8236a8b0d78441814d 100644 GIT binary patch delta 31 lcmaFH@r;8zl$V!_0SGL5-fiUm#>^I)SCpEVGnt(w9srH22{Hfx delta 31 lcmaFH@r;8zl$V!_0SLA^zu(CHjhW3OKPNr4XfiuXJOGhd31R>M diff --git a/standards/__pycache__/views.cpython-38.pyc b/standards/__pycache__/views.cpython-38.pyc index c6ad04a178585ff2aca471a9d9a31f252aeaf4cb..09985dbc14502f3d0319318116761742364dafa4 100644 GIT binary patch delta 31 lcmZ3fyHb}cl$V!_0SMd*Hga8MVGGSGN=?k!{FLR0AOL_U30MFC delta 31 lcmZ3fyHb}cl$V!_0SLBBZsfYk!sd~mlb%|%`6&g132XoW diff --git a/tasks/__pycache__/__init__.cpython-38.pyc b/tasks/__pycache__/__init__.cpython-38.pyc index 5761d3dff1857e94fb43163bc2a27686a4066d29..ba2b443fd7ed78195251b7a7cf313cd51fff8221 100644 GIT binary patch delta 29 jcmbQmIE#@xl$V!_0SNw!y`0GH#ul1al$w|`G29sdX<`U7 delta 29 jcmbQmIE#@xl$V!_0SNxzem0TYjm;xJCq1=jVz@H^bYuwc diff --git a/tasks/__pycache__/admin.cpython-38.pyc b/tasks/__pycache__/admin.cpython-38.pyc index 64cf5df080695c207ff7757580807ff1d6f53b68..4785bcc4fee12e8b1d443d9e97c0f1206464a5a3 100644 GIT binary patch delta 29 jcmeBT>SE#!<>lpK0D}KwFDG(uWed$KN=?j}c+3R=YrF{b delta 29 jcmeBT>SE#!<>lpK00O-=FD7ztW%J0-Nlz`Bc+3R=X9)%)%_~Yx%$fKh QMgT4gR#L<{IfhXJ01%%OOaK4? delta 75 zcmeyu^o5B#l$V!_0SNxzem0SN3gfMb3(TZAf&3y6@ypuTDkiizwWv78BR?lSwP@mp Q7y-B}SV5tySCpEVv)P@=lL-KSObA^7 delta 32 mcmbQhIf0Wql$V!_0SNTgyx7QX#>D24pOclL-KM*$5i| diff --git a/tasks/__pycache__/models.cpython-38.pyc b/tasks/__pycache__/models.cpython-38.pyc index 45cdb3b3f75e9855664abdae89647cfbdcc328bd..d012e57cba3d8fd90af7af6d3cdc46aa14e2be78 100644 GIT binary patch delta 32 mcmdnawVjJQl$V!_0SNw!z1+xc&BPX(SCpEVv)PB~H4^}emlpK0D}KwFE?^4F|&o{6{RNTOg3f?1^{w<2nPTF delta 31 lcmZo;Z)4{U<>lpK00R9rFE(;3F|&E(=cK0=O*Uo@1^{hb2gU#Z diff --git a/tasks/__pycache__/views.cpython-38.pyc b/tasks/__pycache__/views.cpython-38.pyc index c25b548302f650b741f5d10ac454b716cfa1f038..2d837b99443c36e46f70c281aef455f85a295aff 100644 GIT binary patch delta 32 mcmZ3fx>A)pl$V!_0SNj^-)-a$V`dA@D@skw*__Vo#18A)pl$V!_0SLA^zu(9m#?0oCpOclpK0D}KwFE?_tGO~r{6{RNTOcrDO2mo-q2x9;M 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 6a63d41ca6fa56db0723a6cc98687d3be036b809..0ec8d15c72149e8fce7504e1838d7e5df3da8d31 100644 GIT binary patch delta 32 mcmZ1?u|$G9l$V!_0SLDAyxYiqgo!OQuP8M!XY*Aie@+0D#|iuZ delta 32 mcmZ1?u|$G9l$V!_0SLA^zu(Axgo(`~KPNr4X!BJje@+08aS5;h diff --git a/users/__pycache__/priomodel.cpython-38.pyc b/users/__pycache__/priomodel.cpython-38.pyc index f822ee2fc887b7fcdaa8353e788f877762d21b6b..e0c55668cdfd7fc81180cb7fa1fe9f9de0826cd2 100644 GIT binary patch delta 30 kcmbQoI**krl$V!_0SJ!SZ{%9d$QGJcl$w|`c{k%@0BzR@)c^nh delta 30 kcmbQoI**krl$V!_0SJ;`Z{%9d$mWrslb%{Mc{k%@0CArQ7ytkO diff --git a/users/__pycache__/signals.cpython-38.pyc b/users/__pycache__/signals.cpython-38.pyc index a854aad750ef40765abfa30c8ce0744671d9a9e4..46f176164b72672478bf25262cf342c082611c50 100644 GIT binary patch delta 31 lcmZ3-v5tc)l$V!_0SHbjZRF}_VhhbHN=?k!JfEqb5de3X2zmej delta 31 lcmZ3-v5tc)l$V!_0SJ;`Z{+G{V)Mw)Nlz`>JfEqb5deKQ2-N@p diff --git a/users/__pycache__/urls.cpython-38.pyc b/users/__pycache__/urls.cpython-38.pyc index 8024ef210810e51e848681cbf20ed64619dac273..2a7610d0e42f57b95ac3131161bed2ad4d84e817 100644 GIT binary patch delta 30 kcmZ3;yO5VFl$V!_0SM;q*~q2E#ul1al$w|`*@`V40Bsfr%K!iX delta 30 kcmZ3;yO5VFl$V!_0SNTGHgajPv3ca@q^A~5wqi>M0A4Z%wZ^E08VQL2YO@)&8o9oc#N+WJ_c{_p zj%JZcT@@*sKLDEw7D%A}1pWbHQSJ)y17M5FhI7V_lT>Mot@-B8cg~#GoO7Pf{BtI= zmQE)L{BpnlegD(+e&#g&b^qe$AtTHRQXSi|DS>k$NOv+$hLTSROS05M!cv~Or#e}9 zwpkjU(;oG6z)S&?VOe0ZVrc-y&wSY(CICZ^4QWc zoNmB%&{RpjjBZ1qh`=85h(j51lt*NpGRl;PmZLr*8gVq3H&y0vfN=B<1m7)3#rDUM^s;>>Hult5?GWwYAY6A&Ze3>tYMNSwy%i=$J?gss zcKz;-UERD|yXA4O)!aP0qgSuMV@2ifL0S1#0IA1w=jaXi67G&x-CU`~YAZEIAHbJ! zD^q+0wXrWau5fAg9{65!Af&P03I-mRW}o-q=t-lo5#oSIrQhbbw`6h~*W@~`I;l2- zfX6Ea`(`vjI08}?11>d;pknbV%057-A$*7madbk)0SW#kQW^%w<90mO-627-K)Zxy z)FLe^7R}I0$^zVz@oDGOi>lCwWV& h3O=?2uLgrc1dgXo?J@T6X+jx1e^HA3(M z)fHdR1t5V0>fd;Q1UtkU3A$p=ZTbME#g>o9XXehF8PBg{TMc*7aViD6q95Ov7tD3H z#on#YJbZeuzzuG`E^sr}UzK_meOI_e-&V|?*~B=+*xVt;88R+0F87G>hKxsy&#S~# ziSg-Fl?RUsotiANp8RT!NnVp?t3i_9 zyg)tS04x9!bww5CuF!2uWkLxk_^-kuGE4vtmsV?149e|kYeL)RhE`=yP9VWaz$D-l z;55OAk?8P^5#;5hzY-^zsDnAEiKg_*<8x}f@3nu&d*C2jloHMi?a>%pYK$A&lzdzM zRBof-ak;EdGGD&b>nj})X8|*Sa{x7t^RQ+KMl@o;hepH{;Lt8Q^0(f;sJakm5Iw5h zX>!21BYK)dw>Kl>Ly^^`Z(aA)A@zGNQ`jBZvo1aUd*O0D40#%bp+H3LgkhBQvn+~} zgt)z;x5z70rVC_UrDtbRDgsQm6Ud+LAXXchn-5YRC-bQo2yB7CbOqGrnj&#xU-Dg< exp8BV^5;o>lTk#5eYDy3?K8XN8-WqHLGTAD8>fH( diff --git a/users/__pycache__/views.cpython-38.pyc b/users/__pycache__/views.cpython-38.pyc index 0fc6dae709a198ac3a8a80cee8fc6109e1885209..92b93853f01087b2d13916ffb37b9197e611c6b3 100644 GIT binary patch delta 4843 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 delta 4279 zcma)9Yit}>6`ngg`||p+e%tHU#;k1p=gk#1DQHspXurj@Mos z#IEL>bI-YtbI<50{mz^9 zd1?mCCaYO*COT+FtQNh6=rXg_YSY_*_VSR~X0_|>R)^j}vT`$O?b3G)b{^-iKI z%`U53@3wmM9;;XHC0>=e+v?N%hz^@Et6%R2+RLlW{D2kL<0Pmt_gI7aAknqvkTs+a z5nX2vTO;}i(e>tDYoET4=mv9CADvQoBX7E)@Ft^X&7-N5MvP9ty*0;h-f z0;hMQ&mrLK=6%5F15N|4$}BW|EKsKK6pdX5Az{Dd}Bb-pXLg0 zFpua*_z2$%f}?yNABFcZzMqf5`#3+q$KicKo>8wdul!KeAC7t+sKMRf+)r3k^vOSY zKZx{0>%=;9E9R3aGhwGpBkh>iV&$S<{@mBl-V9<_vy)d0H;_u(PBJ}bxW43qk)FFI zBJ!WUaW*Ok{B6FI8FRr9a@s%0#^tJiku}Ia`=haO9AA-0%$Z5so-<4{kq}P;uK)*; znndW8LxFnM`|x-m#MlWr6Fk5=q=tD*-f-%6Gz z9Yd(lhBRq{jOC3QvkK zlZ`Kc0PSIG00E|X#Rb?|ot)N!a;W@VJqCv8Lx>?@WPDO5f6-Jc-zz_Q2=_0Z2Z(uS z&xOTM{dEtiFTQ|1NcW=J8(Q~Q{H=Zf#k58oDO~8K3-V*{g}m5<42ncC2xP26)FWpY zVJFM&LqP<<)zV4J5c{z`hJfA>7<4hUpwtt{DA5PyDR}HU07aFbR*obdYty69MI1vQ z>*CnQoA?q)Ux3HP5(*|}`sP;+-;26YfIy(Q$pNXi5%b9Rb7(+0o zLM$idGr|%l|$1lTUqdgV1jD;ca=`Z8emFx_K$m!~DKDPj3v50`Sn~wQKiOrf&hH>cn%;c#UF$&jSsSM((53tH9JtIGMS{WO~7X z)oD4(F!KCq`T5%3e$1mn3D78&C?+jr7S$jP#vb0UZDBsjK~sKMcbdgzQ~klgB=)_G zi`TgtPt7^vMQFHQGi5vWf3NvUeG_Yu->PrX(G#v85;&boFBCoG`h;O+t{4T!QAD@m z?7>2KQgmm5LD{3%WDQ}ZY&(@n+X*w1|mY>9H4fgv#X3mTHb#k6{C(aOu2rbd?Eh?Jnb+2n$!lFjj5J0$^`6U!`UJ0XAE z9NA{K-!~sSTcTP6DnzxDbRn(Qkhhb`u7ltsc+h6h zSn&V&XsF_$BSsUWcUyipd;{3qEc_}m{)dIt)^T344Lqg`+o(W_V&MO^FfR8Oc(w)t z?(0?g-PZM}iSx|@tTR18DVWGEi<7``m6#6-)k53(JXx`rida&%9C38)VbF_R2-651 z2t^N4-3k_J{S1m|%-50nD#GgsUqg5Up~S*$QXXm_XSd`^`%fEDVb?Qt{G7N6lAV~wbRUTzynF}G+t0xHKjIJi#9eCKbP6CnF5YPWHl zNjn<`le1l?^KXG5)>P1*_CXda*+(aI+HwiGgH4=Pyp8Z}0JnBd7;qZ#1m5jpaz9PaLld$kydx(u&X8)^osdZ zI%y_^VXv5u?Xr}}K}X&17*^IWjcrEzN%tvsUw+y>!*0tnJ+Zzi=m};f57F_48;!Ao z-M3o%UQaCl0AzC*M~{A3YXb1#A!NG%j-G zY&cl7p@ZG_bFH#FBP^)^?4_LDr0Q9Z~xj*O0`E!9> zkO$uJu9i8qIfVyvWow?Z@LhIRiIwH2#b&BfdI|>-Z0oBLguc~b0|8HMFybrx&Q}T`e@5_Ay zjYCz?6k&vFgc^ie1iWCnm3#@VESW+4J`kx{__De-5T%;w1~)`}Ry1ONIw`T3yW!12 z!WgvR+l=nJq6KB44cVgOWCayg%sa}!f^+Rb$XL99p@sEw^6(>86lVx#^H9vF6BT7W z{3!i5hf?k6!p`Lz%dI#mm=g0}52cN(n>~B5leT1M(xMkgfoUr)AY4MA7??+D86l5w rT{#ShhoYddF?W|S)D}L%fs@9Y< diff --git a/users/templates/users/base.html b/users/templates/users/base.html index 4bf0ce9..9fafef0 100644 --- a/users/templates/users/base.html +++ b/users/templates/users/base.html @@ -188,7 +188,7 @@ + +{% endblock content %} \ No newline at end of file diff --git a/users/usersforms.py b/users/usersforms.py index 8c1c265..a70ccf4 100644 --- a/users/usersforms.py +++ b/users/usersforms.py @@ -4,6 +4,8 @@ from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm from .models import Profile, Agency from django.contrib.auth.models import Permission +from areas.models import Areas +from tasks.models import Tasks # Standard-User-Formular - NUR Username und Password wird hier genutzt class UsersAddNewUser(UserCreationForm): @@ -75,3 +77,23 @@ class UsersPermForm(forms.Form): else: self.fields[ele[0]] = forms.BooleanField(required=False, initial=False, help_text=(ele[1])) +class UserAreaTaskForm(forms.Form): + def __init__(self, user, *args, **kwargs): + super().__init__(*args, **kwargs) + + + areas = Areas.objects.filter(agency__pk=user.profile.agency.pk) + tasks = Tasks.objects.filter(agency__pk=user.profile.agency.pk) + + for area in areas: + if user in area.usersfield.all(): + self.fields['area_'+str(area.pk)] = forms.BooleanField(required=False, initial=True, label="

Bereich "+area.name+"

") + else: + self.fields['area_'+str(area.pk)] = forms.BooleanField(required=False, initial=False, label="

Bereich "+area.name+"

") + + for task in tasks: + if task.area == area: + if user in task.usersfield.all(): + self.fields['task_'+str(task.pk)] = forms.BooleanField(required=False, initial=True, label="
"+task.name+"
") + else: + self.fields['task_'+str(task.pk)] = forms.BooleanField(required=False, initial=False, label="
"+task.name+"
") \ No newline at end of file diff --git a/users/views.py b/users/views.py index 2c3e141..e8e7e3c 100644 --- a/users/views.py +++ b/users/views.py @@ -2,7 +2,7 @@ from django.shortcuts import render, redirect, reverse from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin from django.contrib.auth.decorators import login_required from django.conf import settings -from .usersforms import UsersAddNewUser, UsersAddProfileForm, UsersChangeProfil, AgencyUpdateForm, UsersPermForm +from .usersforms import UsersAddNewUser, UsersAddProfileForm, UsersChangeProfil, AgencyUpdateForm, UsersPermForm, UserAreaTaskForm from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView, View from django.contrib import messages from django.contrib.auth.models import User @@ -328,42 +328,71 @@ def searchStandardRouter(request): def UsersAreaTaskUpdate(request, pk): + user = User.objects.get(pk=pk) - - finaldata = {} - - if(user.profile.agency.pk != request.user.profile.agency.pk): - return HttpResponseRedirect('users-dashboard') + if request.user.profile.agency.pk != user.profile.agency.pk: + return redirect('dashboard') else: - areas = list(Areas.objects.filter(agency__pk=request.user.profile.agency.pk)) - tasks = list(Tasks.objects.filter(agency__pk=request.user.profile.agency.pk)) - - # Build final JSON-Form-Input - # User in area/task 1, User NOT in area/task 0 - for area in areas: - finaldata.update({'areapk': area.pk, 'areaname' : area.name, 'areauserstat' : 0, 'tasks' : {}}) - if(user in area.usersfield.all()): - print(finaldata['areapk']) - # finaldata['areapk'][len(finaldata)]['areauserstat'] = 1 - #for task in tasks: - # if(task.area == area): - # finaldata['areapk'][len(finaldata)]['tasks'].update({task.pk : {}}) - # finaldata['areapk'][len(finaldata)]['tasks'][task.pk].update({'taskname' : task.name, 'userstat' : 0}) - # if(user in task.usersfield.all()): - # finaldata['areapk'][len(finaldata)]['tasks'][task.pk]['userstat'] = 1 - - print(finaldata) - - user_first_name = user.first_name - user_last_name = user.last_name - user_id = user.pk + finaldata = {} context = { - 'active_link' : '', - 'finaldata' : finaldata, - 'user_first_name' : user_first_name, - 'user_last_name' : user_last_name, - 'user_id' : user_id - } + 'active_link' : 'usersmanagement', + 'user_id' : user.pk, + } + + if request.method == 'POST': + form = request.POST + areatask_formdata = list(form) + # CRSF-Token löschen + del areatask_formdata[0] + + area_ids = [] + task_ids = [] + + for ar in areatask_formdata: + tempdata = ar.split("_") + if(tempdata[0] == 'area'): + area_ids.append(int(tempdata[1])) + elif(tempdata[0] == 'task'): + task_ids.append(int(tempdata[1])) + print(area_ids) + print(task_ids) + + areas = Areas.objects.filter(agency__pk=user.profile.agency.pk) + tasks = Tasks.objects.filter(agency__pk=user.profile.agency.pk) + + for area in areas: + if area.pk in area_ids: + area.usersfield.add(user) + else: + area.usersfield.remove(user) + area.save() + + for task in tasks: + if task.pk in task_ids: + prio = Prio(user=User.objects.get(pk=pk), task=task) + prio.save() + task.usersfield.add(user) + else: + task.usersfield.remove(user) + Prio.objects.filter(user__pk=pk).filter(task__pk=task.pk).delete() + task.save() + + + username_message = user.first_name + " " + user.last_name + messages.success(request, f'Zuständigkeiten für {username_message} aktualisiert!') + return redirect('users-management') + else: + form = UserAreaTaskForm(user) + user_first_name = user.first_name + user_last_name = user.last_name + user_id = user.pk + context = { + 'active_link' : '', + 'user_first_name' : user_first_name, + 'user_last_name' : user_last_name, + 'user_id' : user_id, + 'form' : form + } return render(request, 'users/users_areatasks.html', context)