From 9fe70ac13be23ef0b40ea391d39641f3b3bb3d08 Mon Sep 17 00:00:00 2001 From: Victor Andersson Date: Tue, 11 Nov 2025 20:44:56 +0100 Subject: [PATCH] feat: add permission edit modal --- claims/templates/claims/base.html | 1 + claims/templates/claims/user_management.html | 168 ++++++++++++++++--- locale/en/LC_MESSAGES/django.mo | Bin 17054 -> 17221 bytes locale/en/LC_MESSAGES/django.po | 66 +++++--- locale/sv/LC_MESSAGES/django.mo | Bin 1245 -> 2171 bytes locale/sv/LC_MESSAGES/django.po | 72 ++++---- 6 files changed, 234 insertions(+), 73 deletions(-) diff --git a/claims/templates/claims/base.html b/claims/templates/claims/base.html index 0b39450..af85e33 100644 --- a/claims/templates/claims/base.html +++ b/claims/templates/claims/base.html @@ -92,5 +92,6 @@ {% block content %}{% endblock %} {% block modals %}{% endblock %} + {% block extra_js %}{% endblock %} diff --git a/claims/templates/claims/user_management.html b/claims/templates/claims/user_management.html index 7d93aa8..5202a55 100644 --- a/claims/templates/claims/user_management.html +++ b/claims/templates/claims/user_management.html @@ -108,28 +108,21 @@

ID: {{ user.id }}

-
- {% csrf_token %} - - {{ form.user_id }} -
- - - +
+

{% trans "Behörigheter" %}

+
+ {% trans "Admin/staff" %} + {% trans "Får se utlägg" %} + {% trans "Får besluta utlägg" %} + {% trans "Får redigera utlägg" %} + {% trans "Får markera betalningar" %}
- - +

{% trans "Ta bort konto" %}

{% if delete_form %} @@ -159,3 +152,138 @@ {% endblock %} + +{% block modals %} + {{ block.super }} + {% for row in user_rows %} + {% with user=row.user form=row.permission_form %} + + {% endwith %} + {% endfor %} +{% endblock %} + +{% block extra_js %} + {{ block.super }} + +{% endblock %} diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index 6a65e9751b4bed374c63259a0f73dce95d7be795..e4321806c0d58d22d8d931211f43ee2146b02491 100644 GIT binary patch delta 4604 zcmZwJeNdHE0>|+KB3uweu7H9spmh-x2$3|wkU~SyO7b<-QuBsnf^kvPtj8oM(zJZb zEVWkM$}A}om9j9S70sk(cDLPeOJ--Q9gAslTb-JzzCWJhPJiq({rsGB?tRX4-kwXl z>w?0d z0>0RW(bPj3O+LmWO=bq_z6$gj$CzalH1b;e!6qC=eLL!g_b?ehv!7o=&Fm-SKNHf= zm_9fFQ!pJh;AxnSb8$2_U;taOH|F$bm3h7?q>zVGF#|VXDYjqp?)I`2Q_4D%})?a%ZLofQG z57j|7mg7X*{yOT0794{es3rF>x)JC_Jun}&1rtzbY7T0J%TaGZC2FDp>l%l`9W>OT zA3sNRoS*E@a1xHBz7Tb2wxR~O7d4<})WAPRJ>YNFFYs~d|3uxlWQe=>t8p>)I?P3< zi-PtljejVbDHw*8sFANgJ?LT75^k}d@3rl(p=NXfHS^P`z3sH0|A1Oy&o%D%2BKER zha5u3jC2d85cPl=s1E#?i7T)g_oD{X|62F;OhO&TBGhS~k9trwYR2`biEOj=UH0>X zsQz0qRPX<%-368&b>o+)4!dl-@wpEUv-U=9Q5>dW5^Cj&ZTk|`K$hdZ*nqrP=6lrE z^-6Jns0L#^&o}85dSW5!!NoWo=b&cTh>v1B=HujH?kRo}wPJfvGdg5#wV!{AVYGjR zdV9L?R*XnB=0=>2j`nst1^sj$#87O(O?Uz|pi-te1Mfi(9z*Tn2N;f@ptkCB)O#K_ z+$VNGRUN4NIvony<8M$m290#z<0wp~?nTXP z6zUKap>AA=TA>Pz!2oIib*L5Didy1#kaK5FB9Act#@U#d?XH9qu!Xg#AB3ln)iV^W7+>PJzB=nQJb!gJgKMWa4Xz?qni?4GGb4d4();00uWj=4xdGrENO z4gU$XMh8^Se$}=^!_iP zpa)i?mTWWXknF@Ld>J*c!>AiS!#?=6{rn2{r5?(O(iSD6?z+ga@z+kK4~PZgAVjA**g~M-8|Z*;cdO){kR6^)^($=WY8%)LU@L z)-R)@k^M?Rd+!;`j}8{1+V@~Td<9ue(~9cwzo>!s?O-|H&mFROV5HM2%kM@Lah{ywUs4*U59)Pui4J@^OI_b#K( zfM=Y0X8NMG&WD;Kg&N=*RR8s;0dBUR?{z3>M2)DK9z!i@E9#5qZ2JZ4*QnR63)S&|Fa>|X zMD+0oLhS{p!&ZW`@GeZiX4F7BP|tDBQ|M3OB5GzKTVs#8gba+5MYQjJm%Z_0wI0+Nzb<{rA6)LOBf^x*J$hETH}~s^f8m z{4C=`WDC(XhvF=?}vOft+9;5K2txT}i;74R38AMKyMWmTbC+`tmwJzo^EBkJqCwsL2e%q*(xZ9Si z@I_mmYE83#XdR90jCqiZB|g$hblP=L^^3TV)RFs$ws-*1VJ;;)oO-_53Dh+dpJ%ePEBvMHt z$knTjLL+&T46%)Gpne;44J98C{W$%J)RP;CuFd3=?vnc_cqQeR$SHCgxs~YorbYj7 zg^*{uOU5)|G)X0+$RCKVv*gwezpLvv;zm9He%t85 zWLp;J$RUzTc95&rI$OBK`UJj4=91N9F?oP2APMC6*XvY@$qTmeq~;$(Wxj0?r%4Z6 z_hNx9zl`h2DqCNU2W+_-pC!XdPqK#WCc0iFS>%0H?Da7|O_u6GTS{XRn@VCzf}865 zMn^|2^e;ZyTwPJV*k9wXZdyOIe-E!Ob$P&FovD8+7cBLs1;#h+^lkJ+O!ZeUtq24v dsw$gOGRvZRE&E?R(6lDMjRx)j#~Z z{YCvyu1Q2gN2$}@In|NUsm>{fQ>QvTU%&5X=kz&y@A3J3zTfZX{{4=l%R-tPL%g%` zp=*qEl1L*O!p#yw%)Y!rwPyKoW*Jz3-EjL&j=%VFJ#^Qf_F%_LPrPS&W|| zRo0nN>Hch_3+sz9=9vw17pm|oF4UkNcmOl-DR+GrYDW8!AA6Ty9q=p6#Gg?EP3UZv zgI#a{R^nV-g6;4UYH`Do%m&lH#goa!QCNiySb^`O8ct63XH<%1lt-gxvI;ez^+?~g z8E?V8*cX#h%=%#^YGplSH*7iT`Df7ULS{1=b#xdtgCDR4f5lE%nMz|g3ANMRQD3^O=YRPOsHLMe-8Af9P z_Cy_;ai{^-q6Rb{HNeMF9c*+yhfS2XqMpm`=I?zGPN!Us*WeD+R(U^?;m6uhiokr- z$Ooc2DnTvbSa-eF)z3oBXenw>SGf93sHF|K>&H+lavF8`zI6VKwCkDm@EhoWdEC$q z=iq46K;A*UmMy45_$#WRn4W$|>8P0&pe9i2%ER6Dn^6OtfoiY8xfI)}|K()V;CgrA z73b^DJ*cfYguSo@wPF`ted3k=Kr(PD_5D#>wGs6pdlhvy_G1{HLG||;R@1-zNJcX& z%`|%u$73;mfjYG*OkZ2j2Q`xt=V;XR$ryq2P;bj(9Elrn2!4;+%FHZ(Kt&i%xdOeF zWU9z$L|@}r{0$><1k=^tjX|xzt*9-Ujyd==@&ecq)SiEfZSXQ`=6_%WM)o$Fg&k1s zF2+i1>dpE`kvT)fkPtql$Qx*>w5}x{%m=Abj5?H@>$eO&LgX57f?$U&-8WJlJRQ>oaM^V`TlE_ zjM}1V)cv)nt(}P)a3hA|lbC^PJu;fn8_3tzPM{wA4z)5rp|<8Ss^h2vee_RTJ5fH z!f}*$U^Yhd_Xp4qqbW~84X_S1p?cJ(dNFFHH~RIS?ITl8#bJ!Y=tAE#)Tz&N79+c0 zqfi|*U;;LwUaw84)4vlt;c4uE=TIG9LJcT!fWIHW`g<5bD8ks0U{RZ=fUW zNO?JGi<({i9@JhQL!FtEsQW&4{(x%lFVxn>a}u>B-7p^Wu#Wz%jEru0&0RQztg4+s zjW}YU|F@t$s$7PNI0E(DBv)UDI{o#oya+Y0rKoTI3Y>_?Tz!v0?0;t}a>%ecHWbz1 zLexkfapkqBz2AzO@pjan?!*PS54BZ=^rBNf3}<2$va5Cw^*aBC`d%aq_9xPRFzc^| zim1?%Ux#X_+TAb()$vSJ$MaBozX)|!mZ6q-9crfAP%E?>HGzYu0i8fC`6sS?0rMzd z(!amPlex0Uf6zm{PEDu|wqY#3h3e=Os^M=?1N#Nl!SAREgz?JgdLn8-Jx~+OL9J{* z)P2{w`kOqLnSgrDCZigjhM71UQ*fQD51~@4^Y_og%~FEvv*Ic`a%S<~Wz2I#`A3pc#Wpjj5D(Bim{pBCBe#rTzd$pjP5` z)ctjM8_q}7e~QED-_DWIjPn?tE(}CHFbsR+D9pkIn2yh*?mL9~M4v*<@HA?v&*C&Z z=gK3mpsB& zJw{$Dp}{DX6O6@H6C;S@#2#Wf5$yjZ{15RzVg;d8N~|LE9e9AKB$TuQn~4S$NIDC5 z5xFXm9woFo+GEX)-3^|TMocDJ(^4`I6T$gk=W6HTJH%unjW|f$K?I1Kh<$|85})9I zHk7@FSWj#srVvVtiCcp?v%9g`q6VDS5 z5qA<(i4;PIcQm2HskDyB3+DV^*8^W*+emC7o+6a=1x?lb-y~C~8q!!ouT8cJqy!(k z9q%V}(5i^(guWBCL=(}Pwv(wQ3WzSmEFzj{O^3;BBVHvkh~WCag8C>ZbtB#)YKS9* z($zlp1fFpD-Z+nVmN-g`ByJ#--tY;2F;}|$4s1_cMf4?}Bb2-re)R}u{SVF@@?(hZ zuI@hUmKKO5H&y@)Vk5%CPs zn);C0-&(-;h{uVU#Oep*QUVL(D%u1->=@EMaG`s\n" "Language-Team: English\n" @@ -126,23 +126,28 @@ msgstr "That username is already taken." msgid "Lösenorden matchar inte." msgstr "Passwords do not match." -#: claims/forms.py:158 claims/templates/claims/user_management.html:118 +#: claims/forms.py:158 claims/templates/claims/user_management.html:114 +#: claims/templates/claims/user_management.html:184 msgid "Admin/staff" msgstr "Admin/staff" -#: claims/forms.py:159 claims/templates/claims/user_management.html:122 +#: claims/forms.py:159 claims/templates/claims/user_management.html:115 +#: claims/templates/claims/user_management.html:188 msgid "Får se utlägg" msgstr "May view claims" -#: claims/forms.py:160 claims/templates/claims/user_management.html:126 +#: claims/forms.py:160 claims/templates/claims/user_management.html:116 +#: claims/templates/claims/user_management.html:192 msgid "Får besluta utlägg" msgstr "May decide claims" -#: claims/forms.py:161 +#: claims/forms.py:161 claims/templates/claims/user_management.html:117 +#: claims/templates/claims/user_management.html:196 msgid "Får redigera utlägg" msgstr "May edit claims" -#: claims/forms.py:162 +#: claims/forms.py:162 claims/templates/claims/user_management.html:118 +#: claims/templates/claims/user_management.html:200 msgid "Får markera betalningar" msgstr "May mark payments" @@ -438,8 +443,7 @@ msgstr "Double-check the amount and account number before confirming." #: claims/templates/claims/dashboard.html:201 msgid "" "Du saknar behörighet att markera betalningar. Kontakta en administratör." -msgstr "" -"You do not have permission to mark payments. Contact an administrator." +msgstr "You do not have permission to mark payments. Contact an administrator." #: claims/templates/claims/dashboard.html:208 msgid "" @@ -534,6 +538,7 @@ msgid "Redigera utlägg" msgstr "Edit claim" #: claims/templates/claims/dashboard.html:513 +#: claims/templates/claims/user_management.html:174 msgid "Stäng" msgstr "Close" @@ -542,6 +547,7 @@ msgid "Ingen" msgstr "None" #: claims/templates/claims/dashboard.html:563 +#: claims/templates/claims/user_management.html:207 msgid "Avbryt" msgstr "Cancel" @@ -802,10 +808,12 @@ msgid "" msgstr "" "The permissions claims.view_claim, claims.change_claim, claims.edit_claim_details, " -"and claims.mark_claim_paid " -"control access to the dashboard, decision flow, edit dialog, and payment panel." +"slate-800 px-2 py-1 text-xs\">claims.change_claim, claims.edit_claim_details, and claims.mark_claim_paid " +"control access to the dashboard, decision flow, edit dialog, and payment " +"panel." #: claims/templates/claims/user_management.html:77 msgid "" @@ -843,40 +851,48 @@ msgstr "No name" msgid "Ingen e-post" msgstr "No email" -#: claims/templates/claims/user_management.html:130 -msgid "Spara behörigheter" -msgstr "Save permissions" +#: claims/templates/claims/user_management.html:112 +msgid "Behörigheter" +msgstr "Permissions" -#: claims/templates/claims/user_management.html:134 +#: claims/templates/claims/user_management.html:123 +#: claims/templates/claims/user_management.html:168 +msgid "Redigera behörigheter" +msgstr "Edit permissions" + +#: claims/templates/claims/user_management.html:127 msgid "Ta bort konto" msgstr "Remove account" -#: claims/templates/claims/user_management.html:136 +#: claims/templates/claims/user_management.html:129 msgid "Åtgärden går inte att ångra. Användaren förlorar omedelbart åtkomst." msgstr "This action cannot be undone. The user loses access immediately." -#: claims/templates/claims/user_management.html:137 -#, fuzzy, python-format -#| msgid "Ta bort {{ user.username }}?" +#: claims/templates/claims/user_management.html:130 +#, python-format msgid "Ta bort %(user.username)s?" -msgstr "Remove {{ user.username }}?" +msgstr "Delete %(user.username)s?" -#: claims/templates/claims/user_management.html:142 +#: claims/templates/claims/user_management.html:135 msgid "Ta bort användare" msgstr "Delete user" -#: claims/templates/claims/user_management.html:146 +#: claims/templates/claims/user_management.html:139 msgid "Kan inte tas bort (antingen du själv eller superuser)." msgstr "Cannot be removed (either yourself or a superuser)." -#: claims/templates/claims/user_management.html:154 +#: claims/templates/claims/user_management.html:147 msgid "Inga användare upplagda." msgstr "No users yet." -#: claims/templates/claims/user_management.html:155 +#: claims/templates/claims/user_management.html:148 msgid "Skapa det första kontot via formuläret ovan." msgstr "Create the first account using the form above." +#: claims/templates/claims/user_management.html:210 +msgid "Spara behörigheter" +msgstr "Save permissions" + #: claims/validators.py:87 #, python-format msgid "Kvitton får vara max %(size)s MB." diff --git a/locale/sv/LC_MESSAGES/django.mo b/locale/sv/LC_MESSAGES/django.mo index 2889d1688239060b13a77b02edf433839400960c..e8b84d3b74cd5855c84a098028928056f605a245 100644 GIT binary patch literal 2171 zcmeH{&u<$=6vqcB1q>7@KT{BT1qIoHbrU#HISr{(Z&EA%CEJNq5Qj;2yxDj?yP6qW z<=!4RBRFwPE}Xbfap{G<@i!n4*WM5pj(p$x7a$>S91tVTer7yx-hAJCGyd`7xz7dK zE9kGG|A4-V{^djXpshVD1cB?|<6swj8vF=+2aLeCz%Rh}!24hk`~_tDOOFWgD)=V2 z0&an?gSWt^z}w*a;9c+>cprQW{0@8x{2pXKKZ9lP0r)()0^>`d2VMkkg1Ihm5Az7z zMhxG8g!ylePW`N$pW3|vvi>!Y^?wYq{yQM+{}#;81zG)!%de*?r( z;tu!(_$kQxKLc^J_zGnGUxTdwCy@333bOtSIE?jQ23h|Va8?4$rj7lx?K9}umbd5d z<=P=Fi&mJ8`1}{pSr5m;jkV0%vlws;2rbvd=W}}!{X#wx0%gqG%lN*?qt)V3ETd7$ z(ny-2GBQw>Y%-!l#>r6NSghDI;piIZ0y|XQyFE*{LC;0;%U- z+|q|Di`tm19BOIcb>V~ta7Wph3$Z&;x-5JhNb6{looXj_pcd|ja18fR2z{0&k)%{= z74x2*>|T758xOM6*wHvm0||i~M}=04gGj}JEm^Uf1VcF1qOJ#t8A%rN;6%CGv%d;bz%>4BkdG9s69-KqoULfdteeE z6(>+SAr;5UkR7MWjIA=IvS_KH6dk1ln2PQ!-an=cdGD$db>vWv-cY8J0_E~NS`=fL zXqO;;NDoIiMrjO|lZiy0daUy=zWVrq)vXp;K$$;Uj#SBRiTTnp7mJ_rV?=g$UN;J} zGc%2s6Ox_j5E-HBB8xg#7$*iPOGYYC@u9@2sQfS)SzM2fNjNC49(V`JSQMs0o$8If z>aI@*ez#X|w+daALaNuaVH9}VRzE+ezog0+g`0oH`|qF z{p}CiEx*vf#q#<_Y8y+Jm>r=^=hrw^?SV!V5-Bh43*bca#W#4 zwY9s?O0G2;*W;+1m~d$W1xDuN7{f4oc&=Pg3Y{>bARrTNLRHIy#odDz~}c z-|?<4?O4`88PC^83D>?tR}Ujs=)_|qV{Zqw#8uX5KDC?gZqRhNS=4lSlh#Wcg@1m= cv+Mu=GsXk|H=gmq{7>xf9x^}n|I{n~9X+&sB>(^b delta 377 zcmY+=zfQtX6vy#XDE|Z!HR%F|bWs>YOMC+#z%(SV5QfHHjF{YsorQsgsqqb5m>lE{ zScnM|gM*R9)i+@AdoT{%^xRLAo^yXU-5q}w#@kc(Sy*N2jG9m<)DNXAa727;VIJFf zi9Ni)Dc;~KHt-v@uapw0qK7qXp^G8ru!HoCrO(SPLj&~rFi-y-@Qxa^K@HMr4XUFC z^-zN*s6jK-pgHo$imiZa%-{zSvtK24?Gd>a$-)t(x6%W-$9_=%2-#Ak{#Pbxrmm78 q`\n" "Language-Team: LANGUAGE \n" @@ -132,23 +132,28 @@ msgstr "" msgid "Lösenorden matchar inte." msgstr "" -#: claims/forms.py:158 claims/templates/claims/user_management.html:118 +#: claims/forms.py:158 claims/templates/claims/user_management.html:114 +#: claims/templates/claims/user_management.html:184 msgid "Admin/staff" msgstr "" -#: claims/forms.py:159 claims/templates/claims/user_management.html:122 +#: claims/forms.py:159 claims/templates/claims/user_management.html:115 +#: claims/templates/claims/user_management.html:188 msgid "Får se utlägg" msgstr "" -#: claims/forms.py:160 claims/templates/claims/user_management.html:126 +#: claims/forms.py:160 claims/templates/claims/user_management.html:116 +#: claims/templates/claims/user_management.html:192 msgid "Får besluta utlägg" msgstr "" -#: claims/forms.py:161 +#: claims/forms.py:161 claims/templates/claims/user_management.html:117 +#: claims/templates/claims/user_management.html:196 msgid "Får redigera utlägg" msgstr "" -#: claims/forms.py:162 +#: claims/forms.py:162 claims/templates/claims/user_management.html:118 +#: claims/templates/claims/user_management.html:200 msgid "Får markera betalningar" msgstr "" @@ -531,6 +536,7 @@ msgid "Redigera utlägg" msgstr "" #: claims/templates/claims/dashboard.html:513 +#: claims/templates/claims/user_management.html:174 msgid "Stäng" msgstr "" @@ -539,6 +545,7 @@ msgid "Ingen" msgstr "" #: claims/templates/claims/dashboard.html:563 +#: claims/templates/claims/user_management.html:207 msgid "Avbryt" msgstr "" @@ -814,40 +821,49 @@ msgstr "" #: claims/templates/claims/user_management.html:105 msgid "Ingen e-post" -msgstr "" +msgstr "Ingen e-post" + +#: claims/templates/claims/user_management.html:112 +msgid "Behörigheter" +msgstr "Behörigheter" + +#: claims/templates/claims/user_management.html:123 +#: claims/templates/claims/user_management.html:168 +msgid "Redigera behörigheter" +msgstr "Redigera behörigheter" + +#: claims/templates/claims/user_management.html:127 +msgid "Ta bort konto" +msgstr "Ta bort konto" + +#: claims/templates/claims/user_management.html:129 +msgid "Åtgärden går inte att ångra. Användaren förlorar omedelbart åtkomst." +msgstr "Åtgärden går inte att ångra. Användaren förlorar omedelbart åtkomst." #: claims/templates/claims/user_management.html:130 -msgid "Spara behörigheter" -msgstr "" - -#: claims/templates/claims/user_management.html:134 -msgid "Ta bort konto" -msgstr "" - -#: claims/templates/claims/user_management.html:136 -msgid "Åtgärden går inte att ångra. Användaren förlorar omedelbart åtkomst." -msgstr "" - -#: claims/templates/claims/user_management.html:137 #, python-format msgid "Ta bort %(user.username)s?" -msgstr "" +msgstr "Ta bort %(user.username)s?" -#: claims/templates/claims/user_management.html:142 +#: claims/templates/claims/user_management.html:135 msgid "Ta bort användare" -msgstr "" +msgstr "Ta bort användare" -#: claims/templates/claims/user_management.html:146 +#: claims/templates/claims/user_management.html:139 msgid "Kan inte tas bort (antingen du själv eller superuser)." -msgstr "" +msgstr "Kan inte tas bort (antingen du själv eller superuser)." -#: claims/templates/claims/user_management.html:154 +#: claims/templates/claims/user_management.html:147 msgid "Inga användare upplagda." -msgstr "" +msgstr "Inga användare upplagda." -#: claims/templates/claims/user_management.html:155 +#: claims/templates/claims/user_management.html:148 msgid "Skapa det första kontot via formuläret ovan." -msgstr "" +msgstr "Skapa det första kontot via formuläret ovan." + +#: claims/templates/claims/user_management.html:210 +msgid "Spara behörigheter" +msgstr "Spara behörigheter" #: claims/validators.py:87 #, python-format