From eac471b5049c0b6c3e5e111a01b66545de4dcf97 Mon Sep 17 00:00:00 2001 From: Holger Trampe Date: Wed, 11 Dec 2019 19:25:33 +0100 Subject: [PATCH] =?UTF-8?q?L=C3=B6schabl=C3=A4ufe=20gecheckt=20und=20ferti?= =?UTF-8?q?g=20implementiert=20-=20BITTE=20CHECKEN!=20E-Mail-Tempates=20Re?= =?UTF-8?q?gistrierung,=20Passwort=20vergessen=20und=20neue=20Nutzer=20dri?= =?UTF-8?q?nnen?= 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 -> 4502 bytes areas/views.py | 7 ++ .../__pycache__/__init__.cpython-38.pyc | Bin 164 -> 164 bytes .../__pycache__/settings.cpython-38.pyc | Bin 4375 -> 4399 bytes .../__pycache__/urls.cpython-38.pyc | Bin 2012 -> 2055 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 -> 6123 bytes .../templates/standards/standards_single.html | 1 + standards/views.py | 7 ++ 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 -> 5097 bytes tasks/views.py | 7 ++ 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 -> 1091 bytes users/__pycache__/urls.cpython-38.pyc | Bin 1745 -> 1743 bytes users/__pycache__/usersforms.cpython-38.pyc | Bin 4737 -> 4737 bytes users/__pycache__/views.cpython-38.pyc | Bin 12809 -> 13593 bytes users/signals.py | 5 +- users/templates/users/newusers_email.html | 29 ++++++++ .../templates/users/password_reset_mail.html | 24 ++++--- users/templates/users/register_mail.html | 13 +++- users/views.py | 64 ++++++++++++++---- 57 files changed, 130 insertions(+), 27 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..bf32680fe31316eccd9c793cd3ddb111f3b8dc00 100644 GIT binary patch delta 721 zcmY+B%WD%s7{K@2$LuECY;{RYDpu2n(TG;D*w$xbZKzraYOP2hhtQp-iEUcG-B2i7 zswfr&JvdU(gXqzt6#NG~2znKS`~{wrdi3OcYqdDb{N{Vi_nQ5Z-RN_s6N$JY*W)8w z6*cwFIjphiCi3e1<~eO$6G!!=_{!YmEO>^;9$IBjumT+Bd^cQWm{{zr8&FYLXT%_eE!3Ge`YS|$;Z%^cFah$ zwHgm_52?eXGLO&mfVcH#b%A3C*^f))P0W(KSE8*~vF2mXw#ch(3%S3v*z`G`rAvK; zgM`5x@r=ZX+7gh_EB_DRJN(Gjm?3Q;8C-@JHQs^WgUbO6tjV}h{L zaMW*F+U|%S@oCvc(H=4iQZI^ob_xoc8}kDB3~f!7i94gd5dBy z(c@kx@dn|hL|(^|c$DC&Yh?MqCA{*?*=O(EzbXzn-Ex|ubF4RNv?OE7_VOa$tv72_ o3a2Q`7-2#@cTU1B@zKdaO?-DwK}Ga;eq#l4R)o82RCC?l-{8cWtN;K2 delta 420 zcmbQHd_{pTl$V!_0SJ;`zl?n&ypd0Xnav|VCq1=jvkh}QGo!}jiJan-Z?o}nurNe% z1T$!|PX5bgHaV4}h|yy54GsfF&dE7EQj?WAMHs~=7qH2Sngh);2I684Ai=@N0)kAN z3poWD8C@nfbDd&Y$yg*e*`GUB!V;*UNE}3Pg9r&Aaf>-UwPf-UZavGO9QM#fz+g#4Wbc;?$zd zlqmM1)Lanr7o$RvElAdW@>D)WAs-Oa7ex302~CzFugNF)Qf)jyB5)TKIfJ+^K;jm2 zVoFL8ABe?LoLH86iw$UOepzY}!W`Ghnf$VhZj;;jb(P#f`n-Td6nA-kQFdltI>-q{ u{vcr+5aBra8ov=^z+_GVHO7R=1_Gvxk(1K|Ua*0KC313zpgl9UkP-j{31NW% diff --git a/areas/views.py b/areas/views.py index 7d40c1b..47a209d 100644 --- a/areas/views.py +++ b/areas/views.py @@ -53,6 +53,13 @@ class AreaDeleteView(LoginRequiredMixin, DeleteView): success_url = '/areas' template_name = 'areas/area_confirm_delete.html' + def delete(self, request, *args, **kwargs): + area = Areas.objects.get(pk=kwargs['pk']) + response = super(AreaDeleteView, self).delete(request, *args, **kwargs) + name = area.name + messages.success(request, f'Bereich ' +name+ ' wurde gelöscht!') + return response + def get_context_data(self, **kwargs): context = super(AreaDeleteView, self).get_context_data(**kwargs) context['active_link'] = 'areasmanagement' 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 274771a5733dddbf24d0b2cdb7396b6c0087cb23..301ecfcbad1eee61332a0d63a26a0d3af4721b86 100644 GIT binary patch delta 236 zcmbQPv|fofl$V!_0SIQRe2kTt$Scdpw^4g3V|_|qlzb{<7SjS|FsYErx{z@pV@kd_ zLzE&|L@8AQYuqeG8v=vQ<#DoG^-L#7#SG2T(T1L((@IHQ%g!Vdo%s#WRGIa$xqMB zo9xB2m(gG|2k!<(HclUZcTc~~oB0?Sr7VEXE&>t1Je{p#LW@(2iep0aic%AECZFT? TWc)W-Lf{@VGYjYB?*a+{r$$7S delta 197 zcmZ3lG+l`|l$V!_0SLBBeu$Nv$ScdpwNZO1V^%6-7SjS|Fe#tPx{z@pV@jSlLzDto zL@`w%C4V7Plu}ATlrmI=Eu|1BqLNY+rJAB0rIu10rJhm}rIAt^rJ2GKrIk_^rJYh9 zr30jOQz}weG8v=vQka4nG%GjTF$r)@4&~X)sJ~g5cLU?(b9{fK%z-W{0ujGFovmU* gi&Kk=V?6S6(o>5jKjHUe{4-fk;2tB-WPU*f04xkSi~s-t diff --git a/digitaleagentur/__pycache__/urls.cpython-38.pyc b/digitaleagentur/__pycache__/urls.cpython-38.pyc index c4e18bcf6ec667c084c89b598822d579c0fa2b7c..654405bb881840cac47055e662c1a1a3e536b656 100644 GIT binary patch delta 533 zcmYk3yH3JT7=U{Yq+H}u?)L(U7eqio#oOTG>|j_-9BR%HDF{g`OBaR?PBog2zJrM& zj=qM2aq|Ua(ard`9*w6tNx$#=+oY$j!7HKC_WQjYth>_mMD%dnn+5+@1YjSw`g~it z9y^JkBN8G3!$BP+OpzRu<2r`>2>oeM)?&bMm`yNF0;hn}j5EMl;2dKSI1l{$d;z!! zJj?nVb;*gb93>?(PZkVJ7Fk$=kOW^QJ_C_uW-DM*U{`EgWwr)34YqFERc6p&mI4`!Gi~4V>VPMS%PbQtqi}#{zKCYAvgYa2_ohrq)?)u@`Q` z_w49M#~piy>>hFDJ@W&pZjJ8`JKaIu?BPc9h10wvl`3j&r1VuSNF??AbSNpLde&9c zOO2Pv1F>$~=7qp@zZCDs2rh`+Brn~Vw z@E!aRgt(YEtBafQX>$X2x#WJo|8sA-2Xz##oXT=Yz^1%@oezV8@ZrLEiy|E0FyEdl zkA0%Y^@K&44^-xdh(#a@itR(5LXIKFIVX@c#r96r6inFZRSH++5w(dLd|;_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..c208d1a1a68767ff77dc3a8fd9c30fa2b96b3bda 100644 GIT binary patch delta 535 zcmXYt&1(}u6u{?AW@k6i>~@=wnuFRPMPonF(xZq-RYXPlaY*s7%}isLG|KFjf^5h^ zr5;p}IV<)g9%aFQz?&E8HCO3Hy?7N5zLz?W_j_;N=P(~}%*dnTTayrtW($169c61XE&y9dKZogS(u& zW*X<2JA|u<-4HRkw>vOOPj+3?yGe7j7}au>Lq&U^r9V|m<38*B3veHFbq6LFB$zHjKe9AP=zP; zl{D(9$f)b1o$K3rZ|-=#jr{?v&mBh)Ok37CU7vafFRT6Qv%71j9ruUgd`bbCwmB; z5}gK=Ee6}d#K*+M$n=kmr6_K*y09A~=lRHFiF~(0$7G21=W-_aoJY(`^ iRk1Kefmoo{{standard.name}} Erstellt durch {{standard.created_standard_by.first_name}} {{standard.created_standard_by.last_name}} am {{standard.created_standard_date}} | Zuletzt bearbeitet von {{ standard.last_modified_by.first_name}} {{ standard.last_modified_by.last_name}} am {{ standard.last_modified_on}} {% if standard.created_standard_by == user or perms.users.standard_management %} +  | Löschen  | Bearbeiten {% endif%} diff --git a/standards/views.py b/standards/views.py index f80eb5c..a228398 100644 --- a/standards/views.py +++ b/standards/views.py @@ -130,6 +130,13 @@ class StandardDeleteView(LoginRequiredMixin, DeleteView): success_url = '/standards' template_name = 'standards/standard_confirm_delete.html' + def delete(self, request, *args, **kwargs): + standard = Standards.objects.get(pk=kwargs['pk']) + response = super(StandardDeleteView, self).delete(request, *args, **kwargs) + names = standard.name + messages.success(request, f'Standard ' +names+ ' wurde gelöscht!') + return response + def get_context_data(self, **kwargs): context = super(StandardDeleteView, self).get_context_data(**kwargs) context['active_link'] = 'standards' 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..8248b6930d9166e1ed404cb69950a7a044806898 100644 GIT binary patch delta 716 zcmY*WO=uHA6yCT0-KNPVCN>c(2{tuRs;Cu&T5YAlqHUGd|#$HK+FK1&ko#qquJ zm&DufyrLIZIIGmRU1d&%5&URmMOn)NRQ;27Qi9|@=H;D1}!a6YkEufjaOy>juPnolB4!Z zuVs(|O=xMeJT3ZdLFZUECmM@xW!Mf}iPP8I}%rwIN&nqQ)J!=VyP z<5%l|M%6jo6!9ef3XKjB<+3o32GCU_JuRg1!uGYkAE3{OiVzryjOp~1{3}oY?O~v=^yPnmhB|mz=!s5t|Urrb&Xe7d6C@S<|<#R suDA^`Xnu!yR|uwY$36phao-*S7qih(SjI|pU+=to8Ch&XiN&(N0Z#~=ssI20 delta 402 zcmaE(L zlRvXtOpfI&VlO34kQ#cq|K#*y27S}^Y`^i4s+Ki5q zE4a5Zx=q&OInAquA#{3A zo+~K9=rehnpsq#`P~|O_f}+g)qCgOnyF9-rJ2Nl6v^ce>C<lpK0D}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..8eaf08aacbe4a8e5f06e2a86c7157c4585d29dab 100644 GIT binary patch delta 477 zcmYk2F-yZh6vy)}X?nRPSVck6){e%($*D*k#8m|85-K(JPHnj~;V!x==;|O@1wVm; zpTTdD#Zh!~6$IbKLGR$ld;j}C-h1~%Uue(|0%qYkTK_!!xC>gB87AD~Agu%U^l<3sJI6i6IwKTY`W-BU~Ev*QOdL``<^mrmh zxh~z25^*k+Z`@At1|fLGELj6qbjkk03d&!-o$jEoh0=rm6y36TAlpETSJHxZ@lATW zi>8aM%*UuDgJlC#`->JvrEi8DW-2`yOJNL}AS|Lf$h|NquIyE!?Bd?;Ch;dt2GowMR^8ogO0&p+bXJh(=Dtzm!fC>LpKpk@bMyT25gSO E53Y7-&j0`b delta 458 zcmYjNJxjwt7|wf_k4u`+B8Z}f;${{nCy_dcAPyo(mryA&ch;6mQ|_XxgRX*d|3eX6 zo%|R12gSiraPlr)dIt~B`@A2|z4t|4Nz{*`z|trGo?q54QGCyJKrIT~Dj)?g9C1|O z6gM1myKquRbDKKcExgn#NJ^TVtLyyK2a7oj7^dD6qJ;X7)&r!$k`~ZbqqS&wVI|Sr z_$N^Nvr<;}P-b`UpDyeOsX3Uaj}UwV+zx~&fM6wnfB4H{fB*mh diff --git a/users/__pycache__/urls.cpython-38.pyc b/users/__pycache__/urls.cpython-38.pyc index 353d16f54c96377509beac6f85a2b7e634482379..0daf14bc6d22553f7a616a1fb53f955c397ed217 100644 GIT binary patch delta 47 zcmcb}d!Cm!l$V!_0SIQRe2ksGk@r6f2S;&fK|y{|$!0NDA4ay&yrR^^oXHt%nE+7( B4#fZf delta 49 zcmX@ldy$tnl$V!_0SI6GQ Dbg&PX diff --git a/users/__pycache__/usersforms.cpython-38.pyc b/users/__pycache__/usersforms.cpython-38.pyc index c7eb2db19db7bae7da1089e43e9d2a560d49ef17..9f87820b2bfec87013b15488cc06558a4aed79eb 100644 GIT binary patch delta 31 lcmZovZB*q7<>lpK0D^OZ8@bjqv4!Rpr6%TV-p_Q19{_b{2+aTh delta 31 lcmZovZB*q7<>lpK0D>Ko8@bjqv3ca@q^A~b-p_Q19{_Xs2)O_N diff --git a/users/__pycache__/views.cpython-38.pyc b/users/__pycache__/views.cpython-38.pyc index 74b5370c7268d3e9978cc77725eb6c24b6289d72..bbe1500c076bad80fef9782dc3f734321bd73c94 100644 GIT binary patch delta 5190 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 diff --git a/users/signals.py b/users/signals.py index ce9c1ae..4e26c1e 100644 --- a/users/signals.py +++ b/users/signals.py @@ -1,9 +1,10 @@ -from django.db.models.signals import post_save +from django.db.models.signals import post_save, pre_delete from django.contrib.auth.models import User from django.dispatch import receiver from .models import Profile, Agency from django.contrib.auth.models import Permission + @receiver(post_save, sender=User) def create_profile(sender, instance, created, **kwargs): if created: @@ -25,4 +26,4 @@ def create_profile(sender, instance, created, **kwargs): @receiver(post_save, sender=User) def save_profile(sender, instance, **kwargs): - instance.profile.save() \ No newline at end of file + instance.profile.save() diff --git a/users/templates/users/newusers_email.html b/users/templates/users/newusers_email.html index e69de29..a9adf00 100644 --- a/users/templates/users/newusers_email.html +++ b/users/templates/users/newusers_email.html @@ -0,0 +1,29 @@ +{% load i18n %}{% autoescape off %} + + + + + + +

Digitale Agentur | Account

+
+

+ Hallo {{username}},

+ für Sie wurde ein Account in der Agentur {{user.profile.agency.name}} erstellt. Bitte gehen Sie auf folgenden Link, um ein Passwort zu erstellen: +

+ https://digitale-agentur.com/password-reset +

+ Weitere Informationen erhalten Sie von Ihrem Agenturleiter. +

+

+ Vielen Dank, dass Sie die Plattform Digitale Agentur nutzen! +

+ Mit freundlichen Grüßen +

+ Ihr Team von Digitale Agentur +

+ + +{% endautoescape %} diff --git a/users/templates/users/password_reset_mail.html b/users/templates/users/password_reset_mail.html index 23d8f07..5f23357 100644 --- a/users/templates/users/password_reset_mail.html +++ b/users/templates/users/password_reset_mail.html @@ -1,26 +1,32 @@ {% load i18n %}{% autoescape off %} + + -

Digitale Agentur Passwort

+

Digitale Agentur | Passwort vergessen

+

- Hallo {{user.first_name}} {{user.last_name}},
- Sie haben eine neues Passwort für den Zugang ihrer Agentur {{user.profile.agency.name}} angefordert. Bitte gehen Sie auf folgenden Link, um sich ein Passwort zu setzen: + Hallo {{user.first_name}} {{user.last_name}},

+ Sie haben eine neues Passwort für den Zugang ihrer Agentur {{user.profile.agency.name}} angefordert. Bitte gehen Sie auf folgenden Link, um ein Passwort zu erstellen: +

{% block reset_link %} - {{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %} +

{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}

{% endblock %} - Ihr Benutzername: {{ user.get_username }} -
+

Ihr Benutzername: {{ user.get_username }}

+

Sollten Sie kein Passwort angefordert haben, ignorieren Sie diese E-Mail.

- Vielen Dank, dass Sie die Plattform Digitale Agentur nutzen! -
+ Vielen Dank, dass Sie die Plattform Digitale Agentur nutzen! +

Mit freundlichen Grüßen

Ihr Team von Digitale Agentur

-{% endautoescape %} \ No newline at end of file +{% endautoescape %} diff --git a/users/templates/users/register_mail.html b/users/templates/users/register_mail.html index 638b62a..8014fe3 100644 --- a/users/templates/users/register_mail.html +++ b/users/templates/users/register_mail.html @@ -1,16 +1,23 @@ {% load i18n %}{% autoescape off %} + +

Digitale Agentur Registrierung

Hallo {{username}},
- Ihre Agentur wurde erstellt. Sie können sich nun hier anmelden und ihre Agentur gestalten. -

+ Ihre Agentur wurde erstellt. Sie können sich nun hier anmelden und ihre Agentur gestalten: +

+ https://digitale-agentur.com +

+
Ihr Benutzername: {{ username_log }}
- Sollten Sie kein Passwort angefordert haben, ignorieren Sie diese E-Mail. + Weitere Informationen erhalten Sie in unserem Wiki https://wiki.digitale-agentur.com/ oder per E-Mail an support@digitale-agentur.com!

Vielen Dank, dass Sie die Plattform Digitale Agentur nutzen! diff --git a/users/views.py b/users/views.py index 74f8ebb..6184fa4 100644 --- a/users/views.py +++ b/users/views.py @@ -69,7 +69,7 @@ def dashboard(request): # Loading only user same agency # Change context and return for template-data # # Get all Users of the Same Agency as logged user - standards_of_agency = Standards.objects.filter(agency__pk=request.user.profile.agency.pk).order_by('-created_standard_date')[:10] + standards_of_agency = Standards.objects.filter(agency__pk=request.user.profile.agency.pk).filter(public=True).order_by('-created_standard_date')[:10] filterdate = datetime.now() news = News.objects.filter(agency__pk=request.user.profile.agency.pk).filter(go_online_on__lt=filterdate).filter(go_offline_on__gt=filterdate) @@ -114,16 +114,20 @@ class UsersCreateUser(LoginRequiredMixin, CreateView): messages.success(self.request, f'Benutzer angelegt!') # SAVE OBJECTS TO SIGNALE! form.instance.agency = self.request.user.profile.agency - + newuser_name = form.cleaned_data.get('first_name') + " " + form.cleaned_data.get('last_name') + msg_html = render_to_string('users/newusers_email.html', {'username': newuser_name}) # E-Mail für Passwort-Setzung! send_mail( - self.request.user.profile.agency.name + ' Anmeldung', + self.request.user.profile.agency.name + ' Account', 'Hallo ' + form.cleaned_data.get('first_name') + ' ' + form.cleaned_data.get('last_name') + '! Bitte setzen sie sich auf https://digitale-agentur.com/password-reset/ ein Passwort.', 'support@digitale-agentur.com', [form.cleaned_data.get('email')], + html_message=msg_html, fail_silently=False, ) + + return super().form_valid(form) # USER muss eingeloggt sein, um diese Seite zu sehen @@ -212,27 +216,61 @@ class ProfileUpdateView(LoginRequiredMixin, UpdateView): context['active_link'] = 'usersmanagement' return context -# Delete a user! +''' + + # DELETE A USER + + Hier wird das Profil gelöscht, aber damit auch der User. Zusätzlich werden + alle Standards, Bereiche und Tasks des zu löschenden Nutzers dem User + zugeschrieben, welcher eingeloggt ist. Das passiert VOR dem löschen! + +''' class ProfileDeleteView(LoginRequiredMixin, DeleteView): model = User success_url = '/dashboard/usersman' template_name = 'users/user_confirm_delete.html' - def test_func(self): - tempuser = self.get_object() - todel_name = self.get_object().first_name + " " + self.get_object().last_name - # self request user ist der aktuell user - messages.success(self.request, f'Benutzer {todel_name} entfernet!') - if self.request.user == tempuser: - return False - return True + + def delete(self, request, *args, **kwargs): + user = User.objects.get(pk=kwargs['pk']) + logged_user = request.user + areas_fs = Areas.objects.filter(created_area_by=user) + for a in areas_fs: + a.created_area_by = logged_user + a.save() + + # ACHTUNG! Bei Tasks heißt es leider auch created_area... + task_fs = Tasks.objects.filter(created_area_by=user) + for t in task_fs: + t.created_area_by = logged_user + t.save() + + standards_fs = Standards.objects.filter(created_standard_by=user) + print(standards_fs) + for a in standards_fs: + a.created_standard_by = logged_user + a.save() + + standards_fs = Standards.objects.filter(last_modified_by=user) + for a in standards_fs: + a.last_modified_by = logged_user + a.save() + + standards_fs = Standards.objects.filter(published_by=user) + for a in standards_fs: + a.published_by = logged_user + a.save() + + response = super(ProfileDeleteView, self).delete(request, *args, **kwargs) + name = user.first_name + " " + user.last_name + messages.success(request, f'Benutzer ' +name+ ' wurde gelöscht!') + return response @login_required def agency(request): context = { 'active_link' : 'agencyinfo' } - return render(request, 'users/agency.html', context)