From ed300ca403dd33416713228363cb7c23e8370911 Mon Sep 17 00:00:00 2001 From: Kevin Heyer Date: Wed, 10 Sep 2025 15:00:59 +0200 Subject: [PATCH] feat: Add effects field to Risk model and display in risk item template --- config/__pycache__/settings.cpython-311.pyc | Bin 5391 -> 5482 bytes db.sqlite3 | Bin 241664 -> 266240 bytes risks/migrations/0024_risk_effects.py | 17 +++++++++++++++++ risks/migrations/0025_alter_control_risks.py | 19 +++++++++++++++++++ risks/migrations/0026_alter_control_risks.py | 19 +++++++++++++++++++ risks/models.py | 4 ++-- templates/risks/item_risk.html | 4 ++++ 7 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 risks/migrations/0024_risk_effects.py create mode 100644 risks/migrations/0025_alter_control_risks.py create mode 100644 risks/migrations/0026_alter_control_risks.py diff --git a/config/__pycache__/settings.cpython-311.pyc b/config/__pycache__/settings.cpython-311.pyc index d95596c785d51c21d5caaf104ce2a23faf315f6c..e20bc5c64bf56b5b138706e9efa0ecd9eac0dad8 100644 GIT binary patch delta 205 zcmeCzdZop?oR^o20SFp`4`#G&|(v-{JfIXijw$(qWt94 z;^O?GV!hJ5qSVBc_`Lj*%(Tqp#FEVXyyE!e{L;LV&09EPSQ(io3-alzRw>)rDd?9a z7U}2Yr|Xwz7A3}~<>%z&mzNe4>j8xnjO^45H{0=TU}BWq{9b^QQI$=Z?*jvzVCE3v r`oPJ{%JzW)L@@L7GBt31(AX?1^pHs?mhl5K6Ax1Z2M87=1Kke*Rj@#3 delta 112 zcmaE*)vv|7oR^o20SLbH9LSK^$or0+k!A89_8psFa>TGQGEH{l)7?CSZvzvf#AZ)H zPDWK$Wxfv#aDtg#gzEz*4=dXT1`xr_$IH~f`9W=SxzIx(fyq;An^AuX*=lar*UNdteBLxD6j=Riq-ra;pG zN$-0z`>B;J1JOCYv!2~r6^ z?W>p@;`cr1ZavY&Kg}=k`!2*=U*QT@4Y`=ktB12@ZZ;>1k~SGn<&Es*R3@FzW>S;% zz9dTO9#P*D7KN}BQ}vjngk(7!jjC4-*1WB*_iZU6>yoVQb}3Bf-tyoI9d6Q?o;IfP zx!O?`C8lU0MbyKRe&Ofs?akYbCj2!12|kDa3~$7b;GKat@R@)S_*LM=z@33V3M}Iz zfg3J_g`NN(_)BK%1H)Zy8``-6mU>k3kALvaklq{$Jjb}0t}aezt$nAtj?EkKjf{r? z80h5soHxjO{DW_V`nv<|E^ZH-I1^7NGn4VeoSB|XWs?29K5oQovHRI>9b2HUvzwD^ zN3+pv0=*q=T)3py$eD@xc#7!f9z3`AC_8lFhkK>BTX_6BgWt#R; z?$4Teb1I&yi$ygOQ>0Kt*CNsCScFh40K2K-P*~BTdNgwuMtY=XBq3pB1!9fRFD%aI zR=%2FOqo+NhGUm7z4A;}NW^o(Xc}lVZOqIW>2n=i8#8CSw8?Slocnsy5N_SE zy=gXw^{}Q<|4vNJEP!@1ISWo1>4I?DFsYLx+38FwnVU0mIY5|Ve=KWe08nt+Nau|F zBHR!8eTU6l?hcp@xSvj>;Xj5mQFC+iX>&H7H#6zn*=*)?%9t|*bFSoT-iXhgy9u>3 zSC^r|!-b-Mc<`KSG@UdIGnqE>6>P}&FM&a=tFjssHJ}w;m%}4w8mwBJhk$|E0)%e| z$~C9WMS?7hkswW?J)CPqV|sOnNUYusTP3zJ#n_IWdF zBtB)#q(B#m)z28&#g(U$MiziF(p9eeeV-=76C`tU09(>X(HA~tTti<5kVeu8z$`I8 zoA>)h!SLyAFF1H;WATP zJNVQOSibePP~c4l|66J80=9Sw{}BH({uZ#r-{QZ*e}TV_zXB`v!}yE%K71a37T<}p zI0e*p8@?6ajE?}ZU5Bs28W!nN=nd(5;UR&jVM7QO3;WBG@=BJC_y7i(1;Q=q6Cd7L8C6JZSxU& zxq`}0Dm$p$L?zS-09hNA8>!qtWh<4K$^eyqDqF}Za(xT$pJwpEz!Ux-`=@~vKjSYf z@;+vM3*%?l;o%X;G$WNFIcb<_h|a75p_I#;5DyRw6{fsyK9Mx?XH#*=J`iamQBM+j zOp!yP9En7ub>Url5|xzVOMxOyJ#Ijp zL%6RzY92&hY8A#5-Q38|3elg z%`{2C3WGPsT2^A=Xeg@5YCR#BpJ<|J9o)#ZsRu69y;fVs*?wENlDm}bB49Q&Hj<^6)|b+5`Fb3GDx*8fxg^(|jxzVu+c zb)Ike8haFai-WB1yfNnP?CWEHZ_~0q!yP~!LqgCg?t?<92Vza@>nU!(_4zq&n-!SjqMjLd=a|eEZ?v9Baht6t=eRa&5d_=&@DaBC z;W;iq?p?zst+(d56YN%N@=A7-)p|YKRC?BIb)~sY*8OQtW2dc^G$*mD6+X?iFZ(jw zd)Iao?|h8L;3opRTHf^i#JA*KaetYgMUOEWv<}Moq|eK2-hzj{zkAmdWL)0ZZ+A%b z%c~t~lBy}PHF1jTW@T&f6c_AXof4J2v7S7|^}A@`STCL82CT_R&SSMtat8~+)$dhO zX?$K34TZ?WG)XD?X$tCp_c;!|k5rqp zrFJ12(Nr5q$+~}%6IjVICb)jM+&{qu;qt@;v}lU;uM^xY*2Fj$ax5#oPudM?*&*Aq z%Kb>RY}vh{2Q1qJvwQyr$FkKHIpu^BRl<>yMPzEPSgTmE%rS1)jq9yE)+#*cJj9`@ zvc56Sb#+uKAo>7mgej=dDzoF6g4j%EvUky2&B4m|t+8=VbkM0TjVLYpzL87-sNFh4*SlzvC9KB!7q5_ zJRc~*B-g;C)Fu)%G-Q=m!m6&>VXIJ__I;E>;*&(eF^rZU)frm855-3riF?oboecea zRfg8PO53`qs3@|Np|-2rDn*gqKH4l-)7a5u^-}-Vm29oSQH6ecUHMksa8h5lJ3Lux zM5Cf!^0l%^(yTZVEYmtvcuvDhOa4k5O1@zz^{uGG<+bf7U29raMgSS=dh?tO35NZE_)ky?M~A^W!5+C*31~U`!^R=Rb75fRF&`Ra>?(ys44_c z)HeR>==+^0tMvZk+3|F_`?sI2cL$)IZg-G6x}H)REHLHZl&e;kK32c{)y1Ir9=zfZA0rjQ4sOJmDQ=y~FbA%BxbbL5HyO27{~u`CVgo2jhu^ zkqE|wyO)+GJazPI7lg3Q6xE7{xB3{IVT%i(UusY`^yCR5!p;*@nXD0m&GsSTka35R ziV0*1wN4G9&XH2hB#@#h2-BK5eFnD6Vf0|lBVjs|g3w4e`O*Y}KHPE93@>$m%z+BffRZw((Ll0B z_MIg;qA61G$}MC9yv5Ov;#1vB4+-Uox6TZrk%GLd0iaGrrG_;rT-?wF!xu+rd`X{l zoucJ)>kUe~2qAlb5pDUyZHQ~>AbH_#&MiPzNx79H-p_S zwip52l={`QZZozLzFIkaOA81I;ZGN|MnE|mud1kPYHkO?$xCrkK1!W(Q6LJnhgq~b zQo^Ek`*t#_%O3S(I9V4b^(m&t?J@-xm#|)3+D4%5Vb2W!wDLulmj-*nWvulw)Mcia zsG);PF~#MMOc~_X1_57Mj3bH?E(9U5=h(@0Wm}yKgg^?1%vmF4&SWx)Myc)W!iKeo zq!-)z$n5p7B(*;=9ElOui+fR9!8!YsVu})qD4MKCiYEj*bvBz^e8|<6L4J*?s|%hI z$ymujbfBO%OdO|HQ8Yy-Sv<(x$G|S@b%FN+e-bzq*y#T|f6~9Ps{A9uFd>Y{6X$D?qTi_`VaJ36kxy1 z-pKrdxeu1ep+aiV!xVdmJs$ROeC5$}98Nfdfsc}-1A<|1W#(&_pi;vk!U+sIy4%ep z$zWu)6QIv2Kzo~rRc&)NJP@kW==248M3K;mU2Z1hXf$Ut!oVdmz0S-+Pkbo>Y9B)lT<&-S zjRu5!a#%s}ei+X?>?t@?F@H8;&&1^p(s&HmLDG@A1IE}~JvXbBZzZQ>YafzX#b2SW z0vstj$6OIL96<-RyP1>aASzqFR&i8kp?%at+UE#5w$06$)dn`y!9fvMHpDq8f^7;3 z#e+78pD>0FDXCE6AhWLuLzM>jY7p0np`$kp=UgZ*)R^uB_a$Pw0qxa+>u{G8g=sQ+ zVTcV5x`j)d-ava@vQ~1{>4iob{~_P;azh&_K*IemkN@WpuLJ z&D?Eueu#qlT5s29uibbkQbd!{*cLbRJgE=S_QGYp9##|`9q)28a|AGF)4NPGG2!A} z(rS+i0Enb3Vib*T20)0?GM>V~#kE~zb_ve#gQ92{jb7oXEtfwvL|mXuycP(x_LiC< zzyS1iR`jmHw`*ywo|yvdnwR#VBU)5N2Rc3mIh8aiil(7so7O>2Jn1k?`aTELXCI-XdE z4L4VQ!LcqI)&$|mYjCest1(ngl%S_5^I9}huZ{6_H_s}(s(Be}UyPPsn_4rit#8@%TBP)A#b z|4=M?qCFP&|3UGY;=(+WJqQVNGlsqDHZmRdsYOKs~PbY1x% zn<$PF98F|&C6JF!(3&BTHC-MQ=M{@+loQ*yvOrz*rM`WEzGLxY+EKo6TatO~7rhEj z?76B)ULoIwdJjscHAOX4u)>u|@FoIU67-cR0NZe>B)c>dP7_SwH(bPNoW)N3+<+-`cVOf62N=~zvo~`EtVQ})n2xRe7#xxU#^#-h@d-!|=n)rnX rr1K*clyR+=nuL}a+g6?%g=~I43R~%Jo{T~n&F7vYVAm}%Sg!gFrlj^( diff --git a/risks/migrations/0024_risk_effects.py b/risks/migrations/0024_risk_effects.py new file mode 100644 index 0000000..b6edbaf --- /dev/null +++ b/risks/migrations/0024_risk_effects.py @@ -0,0 +1,17 @@ +# Generated by Django 5.2.6 on 2025-09-10 12:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("risks", "0023_notificationrule"), + ] + + operations = [ + migrations.AddField( + model_name="risk", + name="effects", + field=models.TextField(blank=True, null=True, verbose_name="Effects"), + ), + ] diff --git a/risks/migrations/0025_alter_control_risks.py b/risks/migrations/0025_alter_control_risks.py new file mode 100644 index 0000000..0562cab --- /dev/null +++ b/risks/migrations/0025_alter_control_risks.py @@ -0,0 +1,19 @@ +# Generated by Django 5.2.6 on 2025-09-10 12:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("risks", "0024_risk_effects"), + ] + + operations = [ + migrations.AlterField( + model_name="control", + name="risks", + field=models.ManyToManyField( + blank=True, null=True, related_name="controls", to="risks.risk" + ), + ), + ] diff --git a/risks/migrations/0026_alter_control_risks.py b/risks/migrations/0026_alter_control_risks.py new file mode 100644 index 0000000..743ce29 --- /dev/null +++ b/risks/migrations/0026_alter_control_risks.py @@ -0,0 +1,19 @@ +# Generated by Django 5.2.6 on 2025-09-10 12:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("risks", "0025_alter_control_risks"), + ] + + operations = [ + migrations.AlterField( + model_name="control", + name="risks", + field=models.ManyToManyField( + blank=True, related_name="controls", to="risks.risk" + ), + ), + ] diff --git a/risks/models.py b/risks/models.py index 5261802..e5b17b1 100644 --- a/risks/models.py +++ b/risks/models.py @@ -68,7 +68,7 @@ class Risk(models.Model): category = models.CharField(_("Category"), max_length=255, blank=True, null=True) created_at = models.DateTimeField(_("Created at"), auto_now_add=True) updated_at = models.DateTimeField(_("Updated at"), auto_now=True) - + effects = models.TextField(_("Effects"), blank=True, null=True) status = models.CharField( _("Status"), max_length=20, @@ -212,7 +212,7 @@ class Control(models.Model): updated_at = models.DateTimeField(auto_now=True) # Relation to risk - risks = models.ManyToManyField("Risk", related_name="controls") + risks = models.ManyToManyField("Risk", related_name="controls", blank=True) def __str__(self): return f"{self.title} ({self.get_status_display()})" diff --git a/templates/risks/item_risk.html b/templates/risks/item_risk.html index 128deda..ddb69f4 100644 --- a/templates/risks/item_risk.html +++ b/templates/risks/item_risk.html @@ -70,6 +70,10 @@

{% trans "Resubmission" %}: {{ risk.follow_up|date:'d.m.Y' }}

+
+

Auswirkungen

+

{{ risk.effects }}

+