From a42a65b40ffb69cd5b27b361ad2641d723537edc Mon Sep 17 00:00:00 2001 From: "Adrian A. Baumann" Date: Tue, 28 Oct 2025 16:19:37 +0100 Subject: [PATCH] Make Vorgaben draggable; Deploy 938 --- argocd/deployment.yaml | 2 +- data/db.sqlite3 | Bin 921600 -> 921600 bytes dokumente/admin.py | 6 +++-- ...009_alter_vorgabe_options_vorgabe_order.py | 23 ++++++++++++++++++ dokumente/models.py | 3 ++- requirements.txt | 1 + 6 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 dokumente/migrations/0009_alter_vorgabe_options_vorgabe_order.py diff --git a/argocd/deployment.yaml b/argocd/deployment.yaml index f19f8ae..aa8d682 100644 --- a/argocd/deployment.yaml +++ b/argocd/deployment.yaml @@ -25,7 +25,7 @@ spec: mountPath: /data containers: - name: web - image: git.baumann.gr/adebaumann/vui:0.937 + image: git.baumann.gr/adebaumann/vui:0.938 imagePullPolicy: Always ports: - containerPort: 8000 diff --git a/data/db.sqlite3 b/data/db.sqlite3 index be40bde6655933b073fc23edf11d5c797f994d32..38eee0f23550067379c8dca8185fe3eb9e5ba686 100644 GIT binary patch delta 17615 zcmb7s3t$x0)&I`S&dkp2JQ9)+APG!@Kmug5vyWtVgFr}l1QG}Y@WCT&k|kM^?1tS9 z5MD7G0o$sr^672+skLZp>#I_ft^I1N_3!`R>gNN&7gdBRJ^`_xw*73C|G9Ve6`=gT zKgvBj=brmGzkBYz=bpL44flF(xYzT&qTH8FCetbS`zHL=O(v@CwwX@$Ws`0D=7XL0 zs!SPoZa<$>PjlxEHRT-ORS8!eSuIcV7J@7ZT{X^Akwxa9O?462in5@ zv0yk9%{)gs0}+Sa;jYx}l@5=lyM4OT=W^M+96tL zPgmb2Z{Jq0yKhssqo=3F(cT}6hHJX_Yrp#C;)azi&AxfDn!)-7y&axV!?wkhUDvH_ z8Cbo&yY1SB&ee6BSG$)x`j)oVJG)(u!5#xA9iY-Oo%2-J==!0XAKzx3U{yAml*g5C z)J4i$>f35Uovdt9Z&$vn_8lsn+oVjnifN|)Umdd^`tD1y&&^bUPGOy}T39A55`4l;VTv$O zpe>10Pcy&a_MiWX9ij?2hN7>c@(q%QiGvzrJmnfB#~`Yarx-*wh-BnhjVIA~5{xH{ zL3o3324M|i#w4F|Fb1U!LK(zFi0J|*4%0UV`Pv}=Ox*WJY6Ayoh;)K~h58%i62C9r zF5WEe6>ku?i!m`Ic8l%eT5+}5A}$si#Mz=pbci#>siG!M5c5Svw1_mA#w+{~%Lp`8 zK+=4Y=8<#^Npne>LsFHb3Q1*>N+h+CR3xcDQVU6Wl5!+vNopo3LsFWg6kCFuH{l1< z1(JS4(yvMS&%`~)sf`7eT=f7Z9t<)B|8UTUGT$T!xHeaSqaFhIb|& zzd*I*fW5~ty&Yn^-@fkd>-){ zT`MZp$_!<^{Ed7b3f(V{k;>@Ox`F7{KqNL0>Kb24*P`>KLSaRYMpw)WL;@Y%v0xYE z1VX|jx@bWp7>xx&;zYWn>Dj~4j_yDxG0#T-o>I!>mrcso>VL^EE9d2}kYc9`3uI+b zNht5C|E3PBy~=oXjanz4NVx3uZE~K%lv0^?%ZivktBppzM|0Ns}4hXjh+k`G*C78l-%TVrY(NrMI6h#Tb^=_ME z>9Sn)YSEONW;HeE=FLjUP}EA0sc*=oeR;K`n0nnjV5+`M(UtDG^K(^ihS8{xEzHgH zWQsL9Y@B2Kgj`xjZ+%QZP`GeWE^W)TL5WpQzIaKlTArz_)j6{= zw`dwLrWmq~t_DAVAB#MDe^($e;#Un7q7EOucp%`uiE$M*HTV^0V~wlc$yE(n^UUnktjyvCN@0 zB=fsIgSAfjyyN3{Ch@IYs}%OL5AL7V2o#oBp zYe_$iNt_zstfDRu$w;hj&dPG9vjD2C;Ybh8`=5iP+kM*nEifx9J0n4$T3w{0I~WW6 z4{S=eW0WpiK@y$$4RtAWNE;f=%2d}OFJ()uFf752fHrR+D>Jn+83h+cf}IufjoAq$ zUF8b~LdKjWm;ozkSMbZ7oaZnM!4ABf{wqZE%bJa@`?QvDBnJD#{|6R2!Q%2olW4T0 z!N7KqQW}<&7%cG}+BJdpqz)}{ z6N6a=#$VR~OF>j?_J{mk0kYgz&c;uJcr}Q^nKJ_A8|#{Ntr9X|Nz^si9bp$Rx(rGU zL<5~fs|YOTnxE8{RRq*X6=@y98x5Y_fo*Vrg(;^&u2H{})ZbF)gvFTDkFg?Ew-2Vq z7w=dd!B}uR*gc#qgCQtNWR3mRFv}F-SqZhC3P*4miX8cz*btV@CodZq`mbua`_2DC`P-x<|5 zM#6n5)rNXt?CW62i7jUp!8o=@f*n0k4H^y`MXQp~q(R1Iv(QZH(A=cOB7QJNEgaH1 zF|?#fJSwC52RbM5Pj#?A?b(3wXkl2%1K=NkCu{UKInK$UCwpoDZ?JgR09P}rb&i_k zkYgwYKTf)VhfdwaEDNQ-p`wC;g+ zBJL)jT_O%^W7_>qI^h?WG$4bL`cM+GhK6vf*53<9d>qUA$8cb!#2rPzZKQ959nb*nN`gKxP@p?0hLx zOBx1VePDP3eh6&AG>5WAN8v}xoKu?w?2KR&!7ezzMYZ(SCyPTMYrvjWD6?Z`%3#k2 zRs_59}ZQ0 zeTOy1+`@#dgNW~E{$#f9u@1tqe!n=*%8aL1=nkjLO&!bneKc{~4kl`5c3Dp&{s!jY zRGF2&mcEqEN~fiFq}QYurRSulq$i|Dq@PH4OLs`ONPDDR(g2cP~t&Eo=?_ItQaOvCwH2c{tp*N$mlKIbPikJ~_~z_npIy*H0rkAL*!aqBSMl+Ufj zG+4~7A=JrTPpF=dZ(;rh;Tq`_;_qb^O7c8em-D1=r1R1#z;d7Dm8(FqB$$fVNH%yZ z>Q07o@+#q}V&mvoPw`A()&@u{s7##!52c-%IFULXGdePiMC&8W!7}EAa0`SCnI|bT zghp?Hw*ScI@C;2;$C!FTk23QTcfZASag0}a2x3J{Tb}Z=@<-)a|S@#ymB5Hp@^{?$sonMbcW5`bg>}sVDK;Ii`w&nx9Afd8WpqoK{Xk z?a!mx=b1|W6Xm>eTsa2ewiaconGvYjI3ZQ~NR_@?%<$oaRH%Cr(0ER%h=YI>x6;Jn zNY-L*+97RkJ#YG823=wS_p8qzgc!ue-tg9rZhs`Et%SXlECiYJl$ShTe6R=S_DX)< zMRij-U3T{ zus6^JdqQIa@qaVL;Ow-Z&T#KK!3_)(2a@=kAT!!AHXM;A_lf|uA7D5Kg+Y6JO>^6W;j^MGAJFARhnnH*>NMILh|%Qa+_O8R-3 zjI2OZhFP67C&Qo4@M|Fa677RHTEn~y(^K9Oj>fto0g%pcy;o&*PlgelO^mJCr zpjwG*mgyM?Y``W3E_~BCrTnb&dZ5skX}^ zRh^ElW+KBx5Q4ej_r}uM;IgK@dc2;b;<4DxzcQ%R7}U$P1GpM%NjgFcjX-s&xOJw< zOJdfLm0G-32jPVgoYRxipgs8T_zy4~<=Mvz9DGR*3dv24OX@t4o#!eiCxDhn7)P!$ z3kWHg8k?*YD?4mIKGl3`LXa-P7V7w^-Tb{F5q^b*-TlGC)E}xhsaw=e zb%i=twW-CbsQg{|Ksly7qdcnoyK<8uYLM<2W^LZd) zmL>6?z^*n^M-$T&_TMP#7yT z=>zG6^t$vC^y|0MVd+unPU)x8t zob?;)U#;h?A0%2dw#hogo8cAO?%BHys_!Cn*Q}iet=(ZzeLJB$^+AIcZ!@TOE1^5| zErbs01B7nNixIlDIBHNmLg*HKGob@|KcR3$43i&GCS=gOK0+f*uR*;%2F=?<=w>}= zP^R0U-Y$dYZ6vhc6CgC4-$`i5(?Muoe!D^Q{00>^5ZXIEuZ{fZ$y-n8ru=n;28-7k z)Vao>`t=E=lKm^q?2_I^yd8!@PRIx4hvc8gKazhS@0V|p_sPTZ4tYQh%R#wAUMF88 zFPE3d^W{0RS9Z#k@-#51BDp|TWkF`(`0_XDbLmq!z`UDiv9t3f;+qcb-i^J_-MetQ zYbQx}kaRmvcMg(t8%ej~bjKE)4i4aSTMVaLqa=;sbjxO(4)o(R7RG5bMAAN-MtVuw zL()w+-Ml79NHH7z-eDQN&O_85o!4X!2W8j@b0 zcO6IpTCLg@n^G*Flvm3hbn{%c%psqVZe2=_Wo-I$6H8~&V-IyfYvkBZffqNE#yOzMM6S#E(cQJw6OW@WC z+&Y0fkHB3_;MNJ;I)Pg!aO(tahQOUi;ARNiUIKR>fm=7=W(eF~0(TyP+e6^aCvbZR z-1!9VJOZ~s;Lam(=MlK`3Eag5ZYO~o?Da3r>=?SdLi)2weMUW_zNX$JuT;OUKCG@+ zHv^Dm>SDPbz{-~{fFb@lp|!AwC68jJN~rYFu1YpjMO5l&XUjKJ71TvXyUG$XRZAI1 zyU84}x=*vFt-$`>Z}AL^H|aDS}6r@o_(Q{PaJs4u9`slQXl zsFKR5Cgm&Ti-fj;{ewd0h8C>ChSY7t>BdT&24>>4a|TX3rlWCT_DoKNyu_sZTKzZq zfV^LMMD9dNKU-WZU#k=xQFz$yfrbmpS>X2v+p2OWnE6N zU3zz+GJUgQ(#+9!9%hVwoSrzii*0dCW6Mld>a0n%DhuR&)`Q|H(PDYWqB9%l`>C_W zf2OVMvHi=ns>C&qu`ig-CKIEAp<0=Q{wwwNz)8=*d0{c1pULxmd_GK1b zc#f6TdYLJqQ?V5|69bbHAE03SxcxEn1Ll+LE7KKfmx*1k?2*4M{a!MOUyGGO2k+-6 zm>-~jLyx0&QEyUjnhu)|oAK;eMlByM9KMP#Y^|b(y+L@hud zzwUO{xGxcDu3s^~ZsmNfacRT+Ytiy=ne%fmDTM0oHW#Ar-Nl&Kr}D}whPC0zeBpJ_ z`22s-c&aVjzSC2qd*NbNiWf*-S@T@dett?OyPVO5mc#5Av1_=DFRZGf_wGQ?+{KK| zONpneG#x+}?qVk44)cj$A7-~uXz5ez7-8wMmDz9a7S>%8ff%7Q{F(fvGs9V0Nat2k3nL7|Yi?j`<_ z+}fv1>Rwe+cFC{FPO1+agHr2#);w{Sa8BsAJZXB$lE=T#Ph1UEAf>O|C8 zJ|Ed<3Y=`yT7v7H8NbkhJ`NhK_xLzdDP16-ZU1Sx5sG~M zpB6Jy$o;p;V!GQTy=#3;c!2+m|B>l#^M_OejL07A@Z>#CsALi}h|F(T{#~H=P1@t; zO}FYOcdzCBg#A^^AMuPf{S?Fxh|PN(fT0XcB!2#eWnKBWUzk{v^o%ts^iyA2rg8I4 zzhHyR&*{H_^lg^-y!b-ibmO1_%T;FKeyRd(K4i&5e=-Z3EyIKH2HrH%g@!D`EIx() z?<~Stz8wMq(LfNrZV~Qy;&GvsNi?y-48}4t6o-h@z9@R`fMsgp2ZE5G(4S9Q#wS8n z;o)2wZhsY*2&d^O&|#IbnS>Vg8s#I4gL_$iPFiJs%la_$Dwv8*JjMP&Gy{wl$`bd* z{m{uEDy{xDf-!Q6+}=&@wuWqQ zS!Y{pBoc3fe$7GGmI_aeFN0$|ydD{V_YK`;8km~a{p{gx2tA|XGGPj;FB85oo4#+cF4a^Z!=74ZSqT@q*3P8o{=t?2+$p+ytgU9&*jNCn9)1Dj{XDc=(C|#Ur*eE%@k;Z$Owrvou(06=co;OYPfJ3{5Y= zok20-w3TVvGa*@j;_z0%EP$>4#|^>~HGis!o~qm@{Z;e{j|&t(%sy!T15_f>);$yV zOyN!69#2lE>rcq?4_94j0VMg+IzQ_D6>75^rG3-9Ls$vwg~aSZzdb`7hU-#70y z+nM*7dzlr?So#C{5jsTArg`cp^+W0!)0fax`p^C~T9Y(A-XcIWxztoxWI@~!wp4D5 zFB47Fuwby9N7z;J-1t%uY9<^Ot^G5vp^}dT6=_FUUapQeL#CHxn$a&hg|X<&5q7Mk z$D4p(WmF@-%9cy6_!8i_4bI$G*%<|u@x_8ks34q1{E{BOV@JO@!WK!h;*B6&3t3Yv z=qInTPN_P+C|MzJ-g}j;lq%y3q4*?2rsybpmE;{Z5l-p&X%@8jC~KFRc0-~0rKN?_ zEHXOc5{l7}kFryxdAoqE6Sjn2J<58d#XEshM>qm1IL6MER_*}KD#Ed#4aeBU(%S97 z2@npCzWXU(fSy0bUR~fD1a>K5bNJXE?g{tyq9bpx6HxdyR+hZmAb%3cXHoNOY?U-? zD{!U|jv4KHjde)fTY$5Ra2QlxA$ZW)6YO}S{K5gqt0j3fs(hWDBY={9_rFP zWS2{edO^IAu=9}o7CT#N>H*Gj!Wn~Bzs1gznl`05x#$lEEM;iMTdXG42Z23@2jZPsJ;ZOD{tc$?Lwo;Hk+Y>3?OHtUzJUk@U9^olHI z^o}CUK!xwHQ>=CCGF2^j2UoQ=Q`JrHu)1}{8W{FAqo!xyVH>4uuLlXtm}243<`e8# zWIF)`S6v6}>j)e5pMc?Ab#0nqM$4v1Q?YGLvDRJ#Yz!aFr{Z_P2G_0zMi*hwxV~a^ z?>}H`+W9VMx^fjXo~-nS|6-@2KfTLNNr2PL+?!xt5vhI)&G=2+lZ+ph&Q;9N-j#dj zf!~#P`S&zUD~#|PywxaQgWtu}HLt56Z?+-0U%n>w1|f6r=A!oq$#@wQBZWv@zkE$r zTz&{&!iug-%8`5`36XVj)v$ccl`aroQVfSy@tunDHR%v|cHc;RJ1ZJqArBdMFO$U# z%~E0E@->&ldDB7SOM472!vUfz-E6zGOiOqO-}!=a|Kbu?Qb8k@3USZ!HJ6Q&8bdKbiw@Kd9cT`Ducmv8|Zg9o=E%h!y$ z;y47c_fdBwlPzTF0@;_*BE`+Fn~06>TT0A$eQ)#vOgG)x_2JRH%gLp|94!h}8w}_I zsV^Pzr;esht%)ZWSeHD>vrv0=SY9`R71Yzarktv&0gbl>ovnuhj*Y^(P%aaxTPqzazOJM*5uf+txV{(*3m<5GM&A2#*S3VUA$6JY^ZN z*!j=--|z!`4R7L};I?sBb2R%aHq5%s|1|&BywAMCJdyc?In2bFT1KVcrGG}p=y`N5 zG-~`gbggy`HRKvu2}{$AQq%a!7P{GZ@2f2dW0zrDS}l)p6{0S*6<*hn&oyi#tx&88 zicL!wyI35S19&+@E~W=URU<24nRAw!3JNWC?OlN=c+=olqtkyDiX?qxIn)N;O2K3c zvc4yPM>7K6lb{=%+3yK6##N3iOUe{kEN~MJ-_zy*UE(aHCP3Qz%jD2!|Ycue`Hg&9)q z$O7PiLx(wwPYVvIdSpIuz?H+CeW!&=sb-`hSu=2ccUrJX3r6aJv&@kB`)T27Y2nB` z;4C*db3YJfOP-OsWb07sTOSBjvS(y2$jkv5ycxa{;>V+RJ`f6I-^d)`*AqU2{2{&w zjsFlZS~M~n_-%xbydMg4p#N7xow&E4(LHbSW6=+=VC~2(U|$Vv*xa7{5R_<$W4Grz z@CFJk=&v6NwUQ$aZjVr7aAti3V9bhRw`acLG4y{VIHi_2c6<5^&Z8d*3#FQPA8@c^ zT4cHNW6*p_9J@LlhKToLVIH`?*wsn8zI#6g+$-bQ)tP3~Sj~6>QhHH)1eFC`G$FWP(YRKI2iQtn~#IaAa+29=iL}--i;@GKy zk-+uXJ{3ID>^Syk8V%0oPX)KMC=Lz{_!30s;HQA2CyreiuoZBW(LX*Fs-P73G6IYZ z=D5#5shROMkSPHUOn`wi!eps6j-8nvgLB^*VX-tn4t|UPqmE_%enyxj)yAynE zdo;V(=W@e0qBgItd+qx0hB#}~?Y*dOxiPEm>^fbSt5f&*Ty~q=QC;Kk?&*%3MZAT4 zJAf!rT1xA7v{aHxk#?M)jru1`EUoM4w~|zq;h^)PWJX`}k}He1!3wCIK0c^lwhi;AO%KW z$r|;9-hGE3Ys;>|?y|Y7y>7RsE)ECKq9Rg5@`{&1NEv&kjN9jgFUTtU89_WLp51hDw)PyjA~ln|Jzj-RALnb*Fw?*YGYFTqkv) z4Sl|dD?$%W=8Da@B>McX{94*ogHF+kj;dNME711_Ev5KZ9p%N`AYJW7x9zq}Kyxdl z7WCa!5K#k>>oA-8lHY`atJ9q7EWyXF$zo$cy1FJS`^a_4Y&337TF{G5(#j^}U6;zc zVSQE}Y3*!^L)DB?F5O_sM{}SQ~yI83Xy6kdfx~!tP zU$Q(hZ?hDk<|Uk$cDT{!KCTDtxkny@PV$^JOAqLu1HPGe+C7dMZ#*}nhaEm0C3;LY zI_UH{-8S6=FFZWncurc*?FBiVXp&Ue>2o-2)%NOYXLU_nO)Kp7tTYrZPSvN|ZFb$` zaC*PBDh}UF!di9voYW9FT|V^8rx2W6J7BkO>_DeJ1&?B23M@dNn@F@C(`a+T`Kz^~ zdmy&GJ<#coY|KESLMEJqRz~2XxPJI=(AR^NH_+C-d|W0Fe`hk;4l11Zunzyy0^Cc+S5xqn@^-kFAApab zI|Eu1fxSA4&8&1IzsyoyZ3AV&$YQUv`b7hQVSp1m4rmpk4q2K*tPTw?<$BS{AIN!k zUSQW|PatdnF6cI%)ith~nrd&nDlQpwFiLu7cEITzN3^DjSsn4W^UY-E%5?(1S<$d8 zNR^pcyN}V1-3K$vTjO%uJvDJ_#vW@L4YM`6W4HU<4x7Ci&(s?i#zoSdn+&iJ>}@Ox zO@x?Zx({XtZ2CB$HUmB3=S$Gsjl7+7ZiWK_5{nEQBA=my4Mp(RcTuPo z#Pob=V6a(0402*dm~ps$=rc0}t07vcr$wh4E1%tC%o_)uH@&pOm3sU!%N3JVFc)xg Z_+ZTJ4zS{CyVrrY7_;_-S^1~>e*ti1HgEs{ delta 5474 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 NFqu(LD%MZ*e*w&Hgw+55 diff --git a/dokumente/admin.py b/dokumente/admin.py index 9769e4f..20621e9 100644 --- a/dokumente/admin.py +++ b/dokumente/admin.py @@ -4,6 +4,7 @@ from nested_admin import NestedStackedInline, NestedModelAdmin, NestedTabularInl from django import forms from mptt.forms import TreeNodeMultipleChoiceField from mptt.admin import DraggableMPTTAdmin +from adminsortable2.admin import SortableInlineAdminMixin, SortableAdminBase # Register your models here. from .models import * @@ -66,10 +67,11 @@ class VorgabeForm(forms.ModelForm): model = Vorgabe fields = '__all__' -class VorgabeInline(NestedTabularInline): # or StackedInline for more vertical layout +class VorgabeInline(SortableInlineAdminMixin, NestedTabularInline): # or StackedInline for more vertical layout model = Vorgabe form = VorgabeForm extra = 0 + sortable_field_name = "order" # Add this - make sure your Vorgabe model has an 'order' field #show_change_link = True inlines = [VorgabeKurztextInline,VorgabeLangtextInline,ChecklistenfragenInline] autocomplete_fields = ['stichworte','referenzen','relevanz'] @@ -100,7 +102,7 @@ class PersonAdmin(admin.ModelAdmin): @admin.register(Dokument) -class DokumentAdmin(NestedModelAdmin): +class DokumentAdmin(SortableAdminBase, NestedModelAdmin): actions_on_top=True inlines = [EinleitungInline,GeltungsbereichInline,VorgabeInline] #filter_horizontal=['autoren','pruefende'] diff --git a/dokumente/migrations/0009_alter_vorgabe_options_vorgabe_order.py b/dokumente/migrations/0009_alter_vorgabe_options_vorgabe_order.py new file mode 100644 index 0000000..61b75ae --- /dev/null +++ b/dokumente/migrations/0009_alter_vorgabe_options_vorgabe_order.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.5 on 2025-10-28 14:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dokumente', '0008_dokument_aktiv'), + ] + + operations = [ + migrations.AlterModelOptions( + name='vorgabe', + options={'ordering': ['order'], 'verbose_name_plural': 'Vorgaben'}, + ), + migrations.AddField( + model_name='vorgabe', + name='order', + field=models.IntegerField(default=0), + preserve_default=False, + ), + ] diff --git a/dokumente/models.py b/dokumente/models.py index 4b856ef..2d6d297 100644 --- a/dokumente/models.py +++ b/dokumente/models.py @@ -57,6 +57,7 @@ class Dokument(models.Model): verbose_name="Dokument" class Vorgabe(models.Model): + order = models.IntegerField() nummer = models.IntegerField() dokument = models.ForeignKey(Dokument, on_delete=models.CASCADE, related_name='vorgaben') thema = models.ForeignKey(Thema, on_delete=models.PROTECT) @@ -87,7 +88,7 @@ class Vorgabe(models.Model): class Meta: verbose_name_plural="Vorgaben" - + ordering = ['order'] class VorgabeLangtext(Textabschnitt): abschnitt=models.ForeignKey(Vorgabe,on_delete=models.CASCADE) diff --git a/requirements.txt b/requirements.txt index 6500001..ff88714 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,6 +6,7 @@ charset-normalizer==3.4.3 curtsies==0.4.3 cwcwidth==0.1.10 Django==5.2.5 +django-admin-sortable2==2.2.8 django-js-asset==3.1.2 django-mptt==0.17.0 django-mptt-admin==2.8.0