From 679bbd3e76682dce22fc95184cb9d47ce5411cd9 Mon Sep 17 00:00:00 2001 From: thatmattlove Date: Tue, 31 Aug 2021 07:56:53 -0700 Subject: [PATCH] Fixes #7091: Ensure API requests from the UI are aware of `BASE_PATH` --- netbox/project-static/dist/config.js | Bin 108378 -> 108641 bytes netbox/project-static/dist/config.js.map | Bin 105658 -> 105954 bytes netbox/project-static/dist/jobs.js | Bin 108686 -> 108949 bytes netbox/project-static/dist/jobs.js.map | Bin 105838 -> 106134 bytes netbox/project-static/dist/lldp.js | Bin 109077 -> 109340 bytes netbox/project-static/dist/lldp.js.map | Bin 106307 -> 106603 bytes netbox/project-static/dist/netbox.js | Bin 321411 -> 321674 bytes netbox/project-static/dist/netbox.js.map | Bin 309956 -> 310252 bytes netbox/project-static/dist/status.js | Bin 129146 -> 129409 bytes netbox/project-static/dist/status.js.map | Bin 128331 -> 128627 bytes netbox/project-static/src/util.ts | 46 ++++++++++++++++++-- netbox/templates/base/base.html | 1 + netbox/utilities/templatetags/helpers.py | 52 +++++++++++++---------- 13 files changed, 73 insertions(+), 26 deletions(-) diff --git a/netbox/project-static/dist/config.js b/netbox/project-static/dist/config.js index cd92937fb5e2f44b24e12a27890ed874a15ccac0..c8835323265cfc3793512fc62f2a9502301f6e4a 100644 GIT binary patch delta 520 zcmYjN%}X0W6z8Fs=s^~t6zsuuz;p&SW9vnUjN%8Y5_ zKf%MQX`zQ=iy##CkpG~^(nBe4*IL z9K1-^t?w}S+H)GGSNWy1IrcFJ%c(Vf^LX%;=Xj@^)<#;M`8)v!C)QTS+Jc!ic-dJw zgEPpHL&=RTl6OyFJn=jjJ+8aPEh=ty{8n+t4S6wejfcp*<|fk07K||!Nx6tnNyLpv z)r|0!-Kt^H*W#=~Dcz`HLc>4`gV8i1PBsz``YLS*X}HFUEvWz6yz;ENImuYYC=_re zgix2rtHj|IP9;}O;}xG*A40l&2ca&6?)pOY?Cx`|CO^(0ebkHRNVYGytlJH4Y90=g z^9z_8h?q>iUBJ`PC^HU?7OI)KN6By-rj8{wyk#(n=eutTZuye#hQ7jgxhEy{_X>q2 zt=)Yp!d}GzSv=%g`??hLb8U}olelz?MRjgmA(2paaF6Q`<5Ccl{sqZ(8)jj(^QR3K SKsovQ25z9-`Sli#hW`P%V63tL delta 286 zcmaEOf$i2gwhhZT7=1S{=UBqdn6=qQ;2I-Kc7{&curqpW7La-_&Jv!X zlQG#}z;Cms(J^^Or)Ghm?E*oJMsAEQ+nr}H&S0E=YZl{1-pb6>oD_w$)RN>3jm+r_ zW;0qa=hzlczdf5#oiE4MR;jq8C^IizNlh(hy1*Pp)%s$+lGKV44b58XoYWG9Qd@}r zV!f>5{5%a!>!Q?>(xN=YV!ixqH8sbgqQpwQ%wjODQL1TQomy0sUu0FPmzAHHr;)&w zpjm4LRjZVeT9TNVqm-GaP>N6o5v;W;t<|heE6qzTnZ9KXqdBAB_BV4F1sEACrvIJG O_?)p~`_p-hHJkurFJ=+| diff --git a/netbox/project-static/dist/config.js.map b/netbox/project-static/dist/config.js.map index 5059d5e89549fd96479c408bc2bb9302a254bb33..01c61181686bd8ac5280bfedc415ddd76bf92794 100644 GIT binary patch delta 363 zcmY+9u}T9$5QbUBlr~l=@&pdHlJeipWH~O!A!`VNO_~If6bA+qtAzAcC)^|W0zyz< zMtl-yCZeSI*%{{l{(nE-Ti>6p?VDTH=T(o!z%)=m==x??yZcQ!(A}li-7HW93Y8m5 zK%%Lad#@K`dh!TDD1eM|U?>s>a?5>UIl84gVD9CO2c_}SXqnPRGQ-A5K(DXXk&=py zqAW40Gq>eIN}yD8E)v#!2$ngirBuYiAHyvxQU;z`kEF;%0{Zt{m;n<73KBL=R;VM5%{vhc@oQ?x+Q+q^za36av;rKtV&G+hmfNI?RUISx7BQ z4UAFD8RksW8p9l zkCXexFBpB^ahf}y3kym6(x*HuC&u{SE2B?34&A9350diC*9my^!lu zA%yxwQnwvaBbXD>R@A*!KM(2e9fbN2ydE$yush3D*1z{4xjcyHaBqVV-ZWc8HK-Np zy?wYd5_w$z+=uI9QDz(}$wWJIkMxBeOmA_lNLN{QJlB5{J>he_9tOhtpL>$y;90S_ zAf>;7SvaT`wdXg9lz}YKVXoDSt9D#E!J;NnKI4c9lb+#*!?;9adw7BV(t}wjr+<3D pa!}Qk1Go)S`sD$?dpHJI(ccc?b+&wZ1TIXauZ|!$@(&mSv%3HQ delta 333 zcmbPwnXT_4+lFNvj2@epb1Y$J4BzY{aE+10sX!-X@+uC;&FMlb*crn%3rIZ|XQ?XC z$(Zaf;J4Y+=$JgCTeCpWc7Y&9BR58u?anh8XE3s6>XhiDPIp+!s5YH-He(xaWoBwl zib7gyNpglp=JW-#87-J|Y>TJgp3SJvmt$+IR9sS&nU}7lrj|2ZU=E{deX(9iYDI~L zX03HjYKcOrEku8@URH5_o`$A%QEEwPQJ!M4UVgTknqyH>Vx?YYF__jU)wHipEh@?{ zvMSZf%FoQxNZ?A)thIuwRZ2-MNzBYq%FI(JMW}-a)>@U;YSyNe<|UU*-!g~MoUvm2 zn>mb`Y%HG18kv(5){9QhTg)iS7%;tOG2vM~by7Ef}v diff --git a/netbox/project-static/dist/jobs.js.map b/netbox/project-static/dist/jobs.js.map index f924ade9991cc036e0a77de479a3b232c1dbf153..339676ed1287b2d128985eef42ccab593cc508ee 100644 GIT binary patch delta 363 zcmY+9L23d)5JhPhv&=pVPhjoL#^vv}Y=&_dLMKSTjT;3O88C#nG8f2df?gm;2nc~( zzzgISIYX+-5OMSAD(b)g`{y&;ePu5nZqZ!TeVPEXKmnoW_nXFzx7AR09k082pa_&I zx0HZHGcWgEFDA6{2tp`Ms zm0LwwVpL~g%ac?^@%{|MpmL^GJc}jd(y}6rKtD6q*J9o@}0kD>2t^fc4 delta 65 zcmV-H0KWg0y$0^O27t5yYm*K)Lo8uIL1#lOLqS7wLzj7z0bBw{RG09S0gVbrIYKN) XK|xI{N4J)h0W<;va#6R;mjTKK0In9a diff --git a/netbox/project-static/dist/lldp.js b/netbox/project-static/dist/lldp.js index 377a53bcfedb712a455245b5c31bf4ccad1e012d..b194fdc704b71bcc76cc2b2e4d6c9de561c68f02 100644 GIT binary patch delta 3158 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 XKwTbdSY+hd8MG44j8vUP_Y3|Dpe9W? delta 2886 zcmZWreQXrR71!97111JzY-|HIcWb=2Yp)jz2(9iq91t67N^B??Y%azucYB_Lz1_*~ zo{h0h0JTI4A`PCxC43o@mVA)3l#S$uCas7_Ncs=0)X*waY9*ScQ7KAAT8NsEzS*;J z((0r)J8#~+d7r;`C$1G9`CZ}p^#z4g9<(INHWvuvpWfpIp#rqidtpj*KBC^uX+eZ2 zn_jE}#l<%f@#?29MFm6@DND@w2z}dITXGE*Y$i&Ay*y=w*IPP}{{U!BB|+`gNCmrB zUJ{~m#Ma%6Z4T=aRSa1aGb+tEM1q5)WlMdU9Y|uz9-5tkXGUiq1lmyX&zYbncQ24> z5E_LB${H&TI6GF^0Q8;8O+c%w>Z^%7$W>^VsJ*(o!gcM`_KXW}$wNbgC92wsXoC>2 z%z)59*qc>iBT?dVq(u~4)P&}05>X5#Ef4dbV)7-z)mb)9yOOlhE16S{X2Kg2rfPwd z86e)$xd+f33YRr`Fi3`mB$uQdRX6msZn~JTYx6MJS600QXlwP}(0wZf%LGGIcYx{< zekZ1Ni{ki)MA#?QD-mG>ZF5;$O>uDiRvKqw@$R9actne(yD@>y@UW5ue;E!`A(CyM zi7MEuHJueCrbPuqPr5=_uv5Ln6}pv;n0WK%hY{%A9C#CGd2lb#qd^_$=fOvTb_oHX zyM=i^rz>BJ5_Ve%!mhlQpDe9i0d!Ywcq(^T*(i!Z_UBL;yINZZ{D0M+26}YCqXNP4 zC<#M^HJpxW;YLjnTw608Lv!`T35jQ*tZqStA2mNPK3W^ShZ9v}_WuRY* z+{1aHYM|lJ9H1ScKq*m^ww3{;ESQ<}cHI`Dq(MkKLYS}{(qa&lcDU)V8Q@y8~@nT8F|RY)AcWXx|U(L%a-%l}ezZ z@?ss_A~@x=X>IU)v?)xKTv}YMw^z5Dbwe9~>bb29@oQ9l5>%5^BB7fb+yO&ZTnjvV zaN)TrpvP}Q9*w*hgnMD1f1!mPZdy5usC_9XwcXGsZ$1ClCR9%Ex0{`7w@pN$ti7bo zYhAPfpvOD8xB%tR$VhvY_r{V?5qR*IWwaDDcdWmNc6%k?eF$)ht?Cei6hET5B-Yan zeV_9oZW)fxRMXlniF$`RVjRsr-UPtmE#JH~4>qG+s|sn(T>TMo>oI1@Eg z-a=tR^;<~c=yYn!T#&!G<()+Y_e99Ia3Vq)8suDcSVorA9xpH)!feC zZ0(p%yD>I1h9QcQ9;4pkp1&0re+B7)C8gh*T19beozmK^rp$!Ct34?h@-p1y87t4fB19QhmJ_F zUw7mtL4{VaQObYKjedspZrv*r?To2-IOLYNPMs*VA2C3 ztxDOB+d*Mm>U{JUoWBKkZ=c^Vs}uZ#+y#kh15~(rVxwlm5C*{cIwOc-IwxQ{_JUAO z21dyLveY=LDf6P%F^#U_e@j|T$JNX@{3~I%?vSaVdyq>})^m4uIaLGzRb7x3 zeQ0Qbt3nrp+>>`-pU35>8aFh@S(|cP2x{8u)1@`KtkCS4gQ$#+em>3H^V#xsMHD*_ zAKnPrcUuwsMaq8KibPoEu0c>iW7-<@MKNr9I*|s;rA|~1+~0Siol(>}_V6?48I=9t z82VZ9KuR|ffu!!niImEoK90VbZ(t{T{WuCuHzuPXibl5N1gd-7QF#YS@^Hk^-9QHC z?mOxZ2WI*NbOasM+9`@FY+D;pQ;xq%896$r+qPwgGwKd2WlGzMw#mccaakduLopZv z{N2h-%H^2D;S7upzf`lYoj~6}yT)#wKqUw@XTLa!K0?i7AD%+jp<}X_&L9DnZO@^K z?0?Rn8Q}A@=g=Z3jIm|UqclS6vakFI0TPZSe~hL>F=R7m5nyHZrL#zU5I|`Ht?AhH PvuGvAkJY@0?&bX#kZSwD diff --git a/netbox/project-static/dist/lldp.js.map b/netbox/project-static/dist/lldp.js.map index 0c07910c6a6b5a87dd143b61062672400753a081..cedede19c183c7233f036060c05128d010dcdd1b 100644 GIT binary patch delta 363 zcmY+9u}T9$5Qfcrf%W*jlSwj$P(iliA4oyU>2UTjO3kdkHjT(*OVf delta 65 zcmV-H0KWh0zy`y<27t5ya+3}>Lo8uIL1#lOLqS7wLzjS)0bBw{RG0UZ0gVbrIYKN) XK|xI{N4K4o0WJdqc2l>_m;sc?L{ diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index 76e025f4cd1018c6ee910eb86befe237485d5b88..744a9562d1a492129922747e83ea1ce6b5a34602 100644 GIT binary patch delta 2571 zcmY+GdsGzH9mmga?p;t2d>|O1>M}*#HNy%b34)6P3-TD=ZxL}>mSx#>7ItTOmgMAU zeW#IgZElUVo@je~V0;bjPz_pbYouy5HjS?~m1s};Na|^0W20^DorP-h$DZH)-TB?$ zz4N)h?{9Yf)rhU{M;w1a2PMjET{MJdmI|WZXwK*p{p9WGk)$Fh5wevHK}!KF&( zMI?Dr1LTu|Nh9DQC6irHN={EMgJKdE(hTLq8?qnTNK|MczsjkD!Wdn_dKkA}Y=v6o z&I}zunKBlU4NySlM@q1Y?2O#O*^8CKrMsX;nVL2ipjt7dzXc53=&~O&aFY2`2ChEi4OprCHDejz z+G4>^IxJC2<_ZBbfRg0_1E{RYeU0PnZk#gPf@P4s?At;h ze=zPy5=zM5FBL0q9^L>rE=kB_-b}jpJ_;sJe-N)U9yt(aWuG})OmFc^HreTs^x4YBM{8Ks zlRy6JbzK45+z~kZ_Af&;?a;^DnReoyY=mBA@QDW^Yea)=?CC~3)9XUoMT4==ZI|^jJst^0n)oe@ zUzO}~lczhO$?CHwv|Hs?-k9#S%YLtnJE)ES^me}5JmX!a@eZg{6Su}G`mCN=Cd%Hp6&EgeCr z!F2SOsF8m13zSA(7tldyr0xr-nVK#jGgN5fUqKEnc@IS*KCMw3#6(oETT5^9+O4j1 z8@qaT#XYqDJ@h$E8AUVchKr~UDrv_>6hZSx(F}@4(PHQhOsH&PDf_6=^}j|(xlEB- z@8Wqh;~Ea3tFNLbVU?oLEec(tP$CMMwD}s+gQ$M{8d|_Ub6SE(dj5UX5h02ONw6Eg z@=`@~^9M+;wp>TC9OSFaiQs}QqL42NMRebXh;lBGto?T!ZM=cXpo5;cfl{E9esTl7 z4#m`e6K#QV`t&Ax1={E}9jmn)~SC2>omjPocdXc&6&whcgfqsE2=qvvjbEes&mNX6Do&PNuG-Eb7Za zyor-7^uZurs2(|jV_09Y(9w7Bzzo@9kQk)r@{{P%pW$M6d9P}?z_06sc!3@3(LEt;IQEOtRkrvrOY zH2w22TtCNaNz*z2-)!}|GzB_MPD!$RE16)-PStuGw?UN8B3LaAM!VJ?pEU?K9Xo-) z3pUO0bk|9IlWpl$@NV$au@M|WV~6m|;HGs$IPnFW#hBjW@frecN$+W?_p^LVku-gn zRsQG@KE>MDh9Bcx4w~sD7574`24IeA8^#3y?J9HF|Cd%ebP89nkV&W68@8+Yr*R<% z>$LqA(z7Et7983*6FTXYGk7*#b_VZ&CT)C(>#>aM@6cHs&vbI_EdC4h(9=J|KcSzW z!?Wn-b2x!6Ige-3(Q|kq%kc0V+oOr5oX0tkqxPN0=VF-T%pc(^(5Qy~0avmQE?s+< N0jf|h-NnN}{{v!xhA{vD delta 2286 zcmZ9Mdr(x@9mnT)&sk6q5fP{`;<6&{nwu3wQw1*(xG0ayTOMiwmt}X|W!c5M4;CzT zlGs>ZHTF23sIeVm+xQOTKrV@oM4UQmn(>v4ufEhcleQV1PHozdY0`7WF`52x=XcIM z-}AfY_c_1s-EuYYmCK0(KQO=wHrK3SA zccvNumb1Hw#Q@D@c9IWj$*!c=gz_4emHY~TgB?lX!AGpqH-npuOg{uFv84vUPd-ic zK!7YwGl7lS(_{o*b|~E{fSueh`XNM?XL!L$hBDSe2g^2@0M?TFS+}8^SuC%_;NUJU`85aUlfK~KRu}Am2KM)YC4eic z#1L60C$qw(BIW>n@*@tAwJv)}5X!5_-BORRs)|*Xbpm$Oi9NcMTq|G0LFQKM;2_Uc z>;sjxDU*Pc^j6;C3`?sTfy4V%wH-nX)mVYkn_nB^^bXYq5vMn!fj~DIZ1_2Jk)@4i zz(u}oyai!)tLbwgw!KbtckBJ-?j{*CQ^@^Q4$ie~b%1jvr++jEZOq>?iVgL3Vo5h? z+nK~F+9w$dJ#}Jae7epx0YilKbsmi7jMD>mqM(qC^&X4ktlrwx2b`5@b0z1~z4^Qj z=7(Ef<6tgqJ#1L%5tXhdDYtGbHgFi1ckUB-H+Amf-NbJ1Y6M}Ght1#Zo5Wl9z?%o7 zu_s5YCja=TitRqK5pZdaSjcD7Nczw`W;^zqXuK{*EY{z!^r6csysaO8lx)Pyazy!= ztm2E**o?*;G3?T74!f+5NVi`N2Bc~w-x>1RgKodiSj}GjcPnpi^58$)4bA*3t|zD5 z_En5-5<0exn6?>b3>r7>j|ct;+WvS{YXVh! zl!KOVvuWZ2)RGC^+LmUNu#)b52Mxvbx*gsQqtg+zuQdm$ouNg@F4^cW8JaWME=i_9 zP<8uUrmQSGz0T0=pV+KHM!)Uo@z}Uj-bu$HMxC8=XbjCm;HIpeoOz8 ztD-$aXa(-(^yy1OXd%VJNah8V4WsJ@=%O=DqQ6e=Ql5(Sdv$5kPN5EFQ8d`vETwqnb)iEs@heDtux9&ig8S1HY3C*T4m(YCLa}iC`YA&J0 z{9jMETt+7#qAk9HWi9&R-BFc)W(8D(ng-Tj@6NSM;M{c5pP(~l#MBAa0{`eN! z3^g?BHrfDH^ryE`1nTHFx6v*rrQ{AOgEH-pchJNrE;ZgmGilU4G@a}DxPa^1?jal3 zpS_3bdFG`1C<{upCHIlU-B0^I<2ftoSD&F5CTHqaSwG$w#&uMBz)Q>2S|6atrwz^e z8f{gCG)+B-3lKDGgTKW^2B@WvkK*6+aP}C^70MO5`8b|SjmNP|SfyxuQo@a<&?_hK z&Z(<75)Nd%LG(L!(8~94D&77z_JV_sy^Yfog0f^%+^)4jW2L{tVG@1RGJuzYn|cQD z^Ptk#2XHp{>BRy3GWe)6h|?gbtsTT3NLFRhFSl46y5XPwE&_A|!zLQTZ~$!jc#P-j z9m4wruRMPDmSOw?1n8P!oIT4XTk@TL)vQ}4X!JW*dwD|LM9=cs^&`)qSBCNX+^1XL z#mfW;(Q6~PkG?aE(>2d~xE!EkTy^bz{5d%3$&4i#1{eKA4`I6DL)^@}`^Ja(Z+td-7Qf4P^^W3VzU%ZTmS|)Yr_h9R zeE+FYJdIYL!}H_Yj;{uJ-&-~NBs|76Cw`) diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index 76e16449420e8e0d23bfa8e36e976d312a3428f0..3ac8f3bd767cd5c89e3086e7ec756075a1a64cc0 100644 GIT binary patch delta 367 zcmY+9F-rqM5QQ;Yq*5fEg!}>r#4_dE&15+)$04f(!6pa>k`xDum?{=&EhRs}KOm$! ztK{F<23uz)qS!okhI!w6yVKy7nFcRV=wn!FGe)?2vv^?Afp_(5(xvjnbL+b!^TKJ zudmjjl8S|*EHSDxx8+_+pj2}%5}tS;EOSyzsfd~X54WsH8F*qnk|Glc=+9GGjo(5Y tSgwACs~?l#bD86#U(IXxa>8B9v6d!DV)>4Eef;5Gn~n3^_1o5UcHdK_W>NqE delta 69 zcmV-L0J{I|_Y%bQ5`csOgaWh!4ZRL{Lo8uIL1#lOLqS7wLzf%916%?}RF{&z1C0tt bIYKN)K|xI{N4Ge?1C<8?aACL4#seMoc03r{ diff --git a/netbox/project-static/dist/status.js b/netbox/project-static/dist/status.js index 50714ec4e52d4a1781fccc4f133cb3ef726171aa..13e24ffb28500b24b03ba8837116dbb8ac6b1364 100644 GIT binary patch delta 16778 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 NKZy?}zag^<|1Zrnn+yN| diff --git a/netbox/project-static/dist/status.js.map b/netbox/project-static/dist/status.js.map index b8f51a48ccf4f8566be0ec674d4bb2287cc59ecd..a29e1878a3091bc34bb7d2fda262038b66130524 100644 GIT binary patch delta 363 zcmY+9F-}535QejcgwDc_f)h9wp!|0kHZPCoi!6kgP=JLPw0MceXoVNB<^*yA6FM*8 z86JhDvGW4X3`9foXJ<11_y7Cx)%^KxKEJs^eOz^E2FwEmgpOZLYd2YzechdU-7Nw| zpinud1SFb!x%YZ8qbH9bgaXJY2Sy^HFSpzymZKqE05@LVxKkS68!c1XSZ3H53F!9J zI#yD#RFow~b>_C*NePr{&PBo_?}BAcYAF?Q>kr|U6)6KRtVdF0A_4t-Dy#8Vs13{2 r&v3Oj2|kxOKKRvp?Os~ku^ek@k|dU|h&Q9HJ8K+WUv6GM-TLGg9OP!A delta 65 zcmV-H0KWh8><7#02Y|EzQr!+WLo8uIL1#lOLqS7wLziIP0bBw{RF~J@0gVbrIYKN) XK|xI{N4I_70Zs%0F = Partial>; export function isApiError(data: Record): data is APIError { @@ -94,7 +94,7 @@ export function isElement(obj: Element | null | undefined): obj is Element { /** * Retrieve the CSRF token from cookie storage. */ -export function getCsrfToken(): string { +function getCsrfToken(): string { const { csrftoken: csrfToken } = Cookie.parse(document.cookie); if (typeof csrfToken === 'undefined') { throw new Error('Invalid or missing CSRF token'); @@ -102,8 +102,45 @@ export function getCsrfToken(): string { return csrfToken; } +/** + * Get the NetBox `settings.BASE_PATH` from the `` element's data attributes. + * + * @returns If there is no `BASE_PATH` specified, the return value will be `''`. + */ function getBasePath(): string { + const value = document.documentElement.getAttribute('data-netbox-base-path'); + if (value === null) { + return ''; + } + return value; +} + +/** + * Build a NetBox URL that includes `settings.BASE_PATH` and enforces leading and trailing slashes. + * + * @example + * ```js + * // With a BASE_PATH of 'netbox/' + * const url = buildUrl('/api/dcim/devices'); + * console.log(url); + * // => /netbox/api/dcim/devices/ + * ``` + * + * @param path Relative path _after_ (excluding) the `BASE_PATH`. + */ +function buildUrl(path: string): string { + const basePath = getBasePath(); + let combined = [...basePath.split('/'), ...path.split('/')].filter(p => p); + if (combined[0] !== '/') { + combined = ['', ...combined]; + } + if (combined[combined.length - 1] !== '/') { + combined = [...combined, '']; + } + return combined.join('/'); +} + export async function apiRequest( - url: string, + path: string, method: Method, data?: D, ): Promise> { @@ -115,6 +152,7 @@ export async function apiRequest( body = JSON.stringify(data); headers.set('content-type', 'application/json'); } + const url = buildUrl(path); const res = await fetch(url, { method, body, headers, credentials: 'same-origin' }); const contentType = res.headers.get('Content-Type'); @@ -367,7 +405,7 @@ export function createElement< // Element props. P extends InferredProps, // Child element type. - C extends HTMLElement = HTMLElement + C extends HTMLElement = HTMLElement, >(tag: T, properties: P | null, classes: string[], children: C[] = []): HTMLElementTagNameMap[T] { // Create the base element. const element = document.createElement(tag); diff --git a/netbox/templates/base/base.html b/netbox/templates/base/base.html index 0a1f846fd..13e11ebf2 100644 --- a/netbox/templates/base/base.html +++ b/netbox/templates/base/base.html @@ -5,6 +5,7 @@ Any: return value[attr] -# -# Tags -# - -@register.simple_tag() -def querystring(request, **kwargs): - """ - Append or update the page number in a querystring. - """ - querydict = request.GET.copy() - for k, v in kwargs.items(): - if v is not None: - querydict[k] = str(v) - elif k in querydict: - querydict.pop(k) - querystring = querydict.urlencode(safe='/') - if querystring: - return '?' + querystring - else: - return '' - - @register.filter def status_from_tag(tag: str = "info") -> str: """ @@ -355,6 +333,36 @@ def icon_from_status(status: str = "info") -> str: return icon_map.get(status.lower(), 'information') +# +# Tags +# + +@register.simple_tag() +def querystring(request, **kwargs): + """ + Append or update the page number in a querystring. + """ + querydict = request.GET.copy() + for k, v in kwargs.items(): + if v is not None: + querydict[k] = str(v) + elif k in querydict: + querydict.pop(k) + querystring = querydict.urlencode(safe='/') + if querystring: + return '?' + querystring + else: + return '' + + +@register.simple_tag() +def base_path(): + """ + Access `BASE_PATH` in templates. + """ + return settings.BASE_PATH + + @register.inclusion_tag('utilities/templatetags/utilization_graph.html') def utilization_graph(utilization, warning_threshold=75, danger_threshold=90): """