From e3ec0431e0abae82c0457f0d8133e827732a0d21 Mon Sep 17 00:00:00 2001 From: Sarsoo Date: Wed, 9 Nov 2022 22:26:00 +0000 Subject: [PATCH] deploy: 569c4c76dc1317550747b31c022e23330e72f54f --- .doctrees/environment.pickle | Bin 92035 -> 190243 bytes .doctrees/src/admin.doctree | Bin 47107 -> 49245 bytes .doctrees/src/music.api.doctree | Bin 88795 -> 90676 bytes .doctrees/src/music.auth.doctree | Bin 13067 -> 13164 bytes .doctrees/src/music.cloud.doctree | Bin 47440 -> 47914 bytes .doctrees/src/music.db.doctree | Bin 46866 -> 47541 bytes .doctrees/src/music.doctree | Bin 8886 -> 8847 bytes .doctrees/src/music.model.doctree | Bin 139784 -> 145043 bytes .doctrees/src/music.tasks.doctree | Bin 34856 -> 34634 bytes _static/doctools.js | 130 ++------------ _static/searchtools.js | 74 ++++++-- _static/sphinx_highlight.js | 144 +++++++++++++++ genindex.html | 3 +- index.html | 12 +- py-modindex.html | 3 +- search.html | 3 +- searchindex.js | 2 +- src/admin.html | 12 +- src/modules.html | 185 +++++++++++++++++--- src/music.api.html | 3 +- src/music.auth.html | 3 +- src/music.cloud.html | 3 +- src/music.db.html | 3 +- src/music.html | 281 +++++++++++++++++++++++++++--- src/music.model.html | 3 +- src/music.tasks.html | 3 +- 26 files changed, 668 insertions(+), 199 deletions(-) create mode 100644 _static/sphinx_highlight.js diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index 0ba6492171516edfda15a99a1ed09331eddbed0a..83e78f7a47348d343ac6e98057c31544e9873bca 100644 GIT binary patch literal 190243 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 Ck7*&j#dL>WzbDhbOGZv$y3hB{ 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 literal 92035 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 diff --git a/.doctrees/src/admin.doctree b/.doctrees/src/admin.doctree index 8c219aecf447ca28b6b8e804a6fbf3e8a00b4c6d..5abffed6caae19ca86c6f097895094eb244714d3 100644 GIT binary patch literal 49245 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 literal 47107 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 M7^|~~gUi(a1F}qKy#N3J literal 88795 zcmc(I3%DdzbuKe=p7S{K9)@`^2XUAloO1>h5kY**MQ}z$1O%b!(_QCO*YxRb`Z3JJ zkmz@nI};0ym)4jdf`CDz5_}?v@e%O@!l(H7)NqMLB z@O{+mvup3Q)?RC`f33Z%YWJIm-@WvhCCAWz?&@~auGSAtmnxNdqhhst?pUQ!?#^5F zPVf5O?zi-==@s1ZR_W??quVN5J@**2DBIOqrDfH7m-pNWYTl{V+S8){Xxl1xs*Sqp zZV%fd_UPrkf<5jIcdDJ5<+JHAL$zw%>h15&l-%W|PN!9!>2@$K8ppC~rA;!AmTRSU85YqH#^cQEKS zSJ0;ZdZ8VNb_y45zkNI@z}|sT+b2M)C*uE|_lN#e$3Wb6k(As~NY<({4Hn#?W~tihxohW{;Ac*%5%=6RylzTY*(3Wqy%LG?B1kSo zaW9CcR7PemX3gGWv0AToipA;X;WJ3pkfuI2*_ib($LN+|bmQ(grcY_ERchLv5xUc7 zV>%p|oT+uKCOUW8le3N1WUW!E5T%Z7O_rL?NvmFIHt4Q2L(*>AN*Bbp()pNYd8tHd zy*pzm`xfkd?rLEwHSa7rf8;GaB}?8ZwOl)gno@@OJr45$c;>5hsZvjk)>bXPw#YlH zo;ke=R)4YdrzA7kKF>Y2ZxRbx-A%!%EC=D6&_WKkm~=ujjYQ98&TM+l>J&SewwR85 zcBdLAa1(PJi0tlC1Pi+-3)T80AEfpo&UbguJx;lBzbIiE;9vx78A5z1dmK-Og<}vz zaHrU=0%SYgmM=c+&~lZ!9s8{Pjk>jGvfH*=thk#^odT$@WHcy_5m3w6We)>+WP}m& z%GuU`Lr=O7Mo+qey8@Cx-vxvg}w!A>=jvtz@ozZTVD0GgY3*7y@3;SHCyV|I>mz}#793@cYV9tY&Ke*Vtc;S>Ri=rP^NX1#{Lu+ zMh6xdLS(#fA-bhT!TwOAa5f;NjUI^oqcHn8YtRYY zf2vr78^d{qnfQ}^#9<9d{CA4D$qLRXMi$O6Zu_{HwJ(^*Ho)M955iIcu%z31I=!bv z7DkSZS>AJ(6BsmR94rNTen1@Iaixb;!Vk+x#Tkh9>=Actwp*()-?Zt15owI}p ze?>NCUd0h#WGNnp8W89~(7Bj&Eoe#F-ZY4hWoh#;Pgk(0xfqG zgY6t{T0Li${$vQ~`FpgE)R7Wv<{a;3)09$`?L0VYJr?Y1UCM%{cwVG4FHdS@%(*D# zG2~pMEa#Gotxc}_Tl>*r(hXbT#9T%=2UQQ2_HBd+sj?AdT^mEPE=cQc=+C)m5Z-*l zBZg}wPP&kaMlK*|bvj+D)r!qp=`aPRcCppKsxnjRW%t~@Av7biuVxjw*9jh{iIOQo zCn62|O9@6Y`+C2uaCe7^qoQX>(si5aI^mZ~LUgcNPqL4wDHAry3ih4$$9?W5!v(S? z=XTY1k?nl98t?iLRmnkz-qRz$M@b((^84(shK?LrlV{}4-9(0G{{NuFG9^i#0IO`; zA7BmnkMpom@`wQY5IV&Pu-`Wm4-c?{c+3F%b0dqy0hTk@&~3a>8{Q#uqRJ=oc$;|uffIV zwa)8MjH~5-VS1S zs#cp+k%{eHl_uw^2dz3=CQDd~-Cjf0*+ydpmpimowTN*Sx_Y^g4|99mT|Qg2YL#MO z-6-{jt!H+>FHNLfY0)*f7+ik7T#TwcKW~-RQz?m_oFcW}>b#Nu*)B~_{;33+X;cpP z32JN8pGn{`S-6Z6%**#oHk!2GUaIY$oSK@vjFy_MDyzDDdh!)~_12#3G$v^YI4vL_ zdoHyqmf59R5j&=h`kaTKYg}giQKG>f;)CtrAB=F5yL7Ukm$(j9ds9tp4aN|?Qxem>h(+#nlo;|48 zp=PaGu6BAy-BJ9>R~m#ata+!@!iG-I zxfQfsYTj;I!IOiBh+)ExdH1BV;YSDG)(qGQr~Bx_xv1$Z=#0RMI!z( zfisvRQ2;z2)9osVZqgOa%m&&B+zc+&1EI*dlsCPYQFSiEKmI9DaIW;!xuXcB-Bw+p zy!u-YY2&galUzXjI_l(wc&F)M%V(np*0;U1FOc_#adRUr@JUGoW;QqxJ!0B`2DZR9 zSix;D=>=F{ogUiDlMGFU+m}$M__kPe&V?7AKY4-GZZ_&|zH#dGLkWB<&`?WxNo*;- z5T6hTg6s!k!iCIo#sJAC!)ph(lMYFmO*9#daNxWiE&?}~xn2JjSqO%R{XCUCYeVC? zub*9kYdB(8&v6h#SqtX?mEMlAIW<+9N6EW`$G4osCSJ-tub%rX+DxF7PHZcgw}7_$ z))Z`8%F{P;OKkA=&(5G2YMWqTw|;JePNVY$^VZMJs;^thXN%9LOTNFNw|!OzR3vkT zzIqJ>H{2zeSKwCL2cz}Jn& zkarFY#Y5h!sKi1ZE9DgO%66$fXBC@x4-YTSRT71~K;H}@Z%cqwfzaRgUP*>W95cqb zZ;o?UsJ?l`xxlF9V=Pac>ubT+{i}oZI?i3CBu*aZ^k|(XkqO4Rz#9Pz@UFoBGD;hP ztN#<7;>5Ohn~8_xsvsT{S8p}4NQ|qTxgRy6V%wiGEkv&%WE>=14K=K0@S@5>mr{u3l* z*pki+&W{UtNFBB$0fa3{Hci-iCk(~I)}K>}g)LUfCu}`WKE5u}i^vtLhBtuuD^})E zw#y&NBB^8uZ+jz&7IF%CA2vFPIplp%^>q&{e8`JbMgI!oI73?=8VxOUxcsadPx5f7 zb>ZAaWEMAEe$6O(1XMqWPI1EJqh{jaP%VhZgzBFeStN#P&Rk=tDO`S)Yax5MTsD#- zW%;j|Hdt#W9&Q6cJf;nH7+EB?0cW1X27}vDxD0hP-PO4n8qF9k?;)dzRi1QaaJ~iA zkuOWd**%j45H2OzG~sd|48_Ccek!qW$x8Wz%jYU^Z8qASVzb+c6D)T|1WP}S454x= zO01j$<($zy%z?73`nuH|17%RR!PVli5h{}pmLl)#5P49IBzcI`T5!5VW^qHLYm_`9 zL>@t>I3e<{%*4atSrCs2&mS_fNDR-MxyDUXht^EN zHW0*P+TfpzEE3y*Gf!fJ!EGr-hB}(=>Rf?gWDJpq$S5L2N@oV=D}{nmuP7w}gh)v? zO^94EDnsN-DzOmBO8JDy0#0R6pX-A%evg#Jn$;7(P7CJ%6Wkj`_7%;E;PbB&Tmfa}@l6eqx4VkRCAu7Y?> zaGf=>NDQu=xkf!xfO{F&LiPanr^Ycv*x*f^`@jHqotb#J4FvI+Hn_paBC!oP^CUJH z+?E1dsH5qw&Nd7qV}Lu2j3NS@bY^fqUMMJafRh9e;3U~J0qz0F!PkHfQi%mPR>~*9 zO?e@dodjZzayz1<9P6DS)U6K@g)LwTc81p{ekAOg=E>g=RA0B8Z)_8~3$E+d_Nhd! z=tA!3Q1^tAJ9((nV|IQ`WP+h?X@Q@W61goRpIDJQhZ6I+^CRGp(Vd?J3F*#KU~qm^ zs35gFO9F6bNj8l;Zy%HHd_0wyJF`+g?)*%eF!c73*^4*zdogv&;Jn8x#yRcMJRj;y zo1;Eg^>r`J$B()8g6=yel_I@XS7>KFTM3ukS@po2R}z_^v*!CK|BXh;BXXik&?!z{ z>X?a#=R|^d%$(?ukwxO1h%?vdX39%115q-5MUvvgV_!10rP4MSmk~nI;$gwd$MVn74ta()fnjztOTP zaG&qA1Zs6i8yYvqYSY;ydYsNOA`=X0iSo}-Vjj2sIh2~wZAT!abXzGf-1Zm3T&dkw z5`f!EvT59QFT~?+dkU49+ppV~2KV);Xo1ucG-F`Gvaq zLE$S^U-z>7Qc!h@=iTx{WqcGWRs`y^WKWHD*-Mms$+J*BHs@j@6Li^pv(UOx@`wz` zL8mxb=pUPjhi5>7c+3pw&x|Y*XF!~}#yC?JI?J_?Jqx|nIEDxt+{C#L%tAkICLV4B zK|H1nzF=gL*an<=5*rL|OIc{Bqv@{BOE8R#;p|c}ipWBxGlTQXgo09sGf4p9Op;9# z&i)_d;Nk2SRAS+bmGTK^Q?#y6@FHnoceJl}hVZtlk62z$14oyq4|B^@-#m6q`&7`M zsjdxa!?V?pJ39PrQgSB`e|pT$Mk2Gg;ct&o@(AcHpi`XicZQjGIP?nQF`@SyBa6h) z%b9CTG=;xsaxG*JeB5ZIu=RPp}HO$1rZ6Jupw81q-7Kv@ZnJ2Nq;Igr72gM7iIW6e!6J|}bAM+*E*L~x{FX+4)W|SWPEdQwOgtP=1@V}GIDUJ=M%*4ZOAc)7b!I?%DiEY4{C$YicwiMJt9Zh$2?u9)w2DR_d zln_BpIx{%`o$!OyK}`}sP?KcS1hpy*#eZ1AMMEnzV2BYiw5B+%L@^4Nn1@Z7||D_Dk{7A-vt-bDGyG-vka0 zAnY#A-}U#=;$N6X{PVMjpFFtK(#U9Ml96B_sM#T1i2%s{(0Y7p8X4c5MaB^hRzWF! z)tg-TrZUI*m#UfLJLX0D9J3$tsrdlRB|h3ZB#4H7rd_5*ff}Lej_wdR_xnrhTREJk{5= z^G^Jw7W#o_OyAh;(kRPrZ>COvlN0U{HGrbO@RhZ6Jn{3pO+VSN4}P?A0`<%Z9H zN@yZ=q9F;u=Ox)RKK~oY!F~SUslWTC@#|qWgonHiR*J|kZ^;JGK@m&t=WBF^fpC7LzPwwY>)XsJylgZCRiFy2d1RNH| z&nH1i`ni-Fem*8Nk=oBC0rCrrL*u(UKU196Vi*SuUlILC--QRJC=T?u+pm}>EixM?cpsYc5)Bb zLw2qrGMPL)l$giEF9nB%@$e2PNe`ED!^7VwG?CiFB>{N2B%8*=Z-gA&!{1LO=HaZA zlZR8dkS|fh+BOLHa4(q*9=^^?C!g(uyM&?Bc=;z)-~7GYtBL+dzS4i2r|kYp?d4xp zVkh@W?R}y2pzKrjP3xfg#n}cNh-0G zAk_;2?nHH_tprH`U?j<=0i*HN5{#BpiGdL-^wV+hJFz}88A(St}voV zW&o+SSLdDY4t@MM}=IEvz$f6r)PT|>lj?;4+fbbe)Fc6bnk1VB)Vh#^ zXIKZR#6XRe@&UEekgHeg#YW4sOByTDDum-%KeY@{c3hZnxjZm_r?7sSwCnAvuiMTY z#lrL(Tw|>dQJY+9h2GP!^?o&$p z>sruS7}&a*q!O?t)e8ZRpgI$5NdkZ^Nj42^{Sb0+*m{gg47OM)AK2QfrZ`p_vG6K< zVdy230jSn_>Ex4V{f97g8ie|->YM+<(5s35+-jx&wpbYYDm54_U&H5i)R0YwF6kjV z<3uJWFq$-q7y(Ax&?zn$ZI0QNz$kRg9x!?W(_mr1XeCJ{z(}eW0z4_^S?XOXNdRCZ z$)*9LeGrd>(S9m1Fk+>A!06e0{wCU|3jaFCPbdQ*ZSYgd2a@KX+_X!-vg(`v*ExP& z^n=nwumOjqV6_IOgG%`1S&|;O(9x5?lVx@e5=~?wgv0TC@8?iE^@Hg%x zi40&gA!+0TL*Ej{jY<>lv_EcnzfqOnnB9tr@paWV|2OWW7Wx5bOyAHajQ}xaNt-F9S`T=QmUki>)ef1ii_AB|5!;>DnvyaH+1Wy&Ch!OB~B|620 zr#HrIOYjsrW)D1_23iXPPv?_V0-mILA;9UV&IC`A0N_cIO#@Hwf*d?2`rlMy@We{_ zz|-mNW}{P`JzT6+>j#oO!aF&1%R7`_2B_K^N-!V5`iPhVX;P=#RbRK8_qKPaO8Q}I zV?;X+UJ-XSgx#Y?lpMmeHk`YOOimE?uu;Sa2zv;f;zHQ{G20S^g^t++VYh(R!a&%) zB$a?Lsa^%xwm?QuQlVsCC*dHJVhp?xq#2}27@`12Z4wh=wN~vS9;|yZ0?ZV%0 z_R+}zS=)Vt3Mc!%JYVpSJC9w*t)2$7)~mkxzwPW(NG)ioTpNMukI^nP={atC`7z6PE zOrTaXJ=e_iM3H%HF8CLzD}pooXXnzKPdLnl)DQAkfD0lY@7+uS{Q&V zkW>O7rHLWH8dPTjNJ#(yDaob*$g3d-2gpNIVgSiXc>|==j`_Li0DvSq3j&Z#AiujU zI6%HjSUn9uUZ?slB0zHOa#Yf~6BcQb~0C@{ZB>+;I7y$WaLK~@{SV{r_ zNJ%ygK>iwXaDaS*N(>-b$q0~IQ#dgaM`gKmgyWRnSo0hl89dz4czz@u*JwCDa)i#0 zoSm0JU;e3Gamjj9hUSfyWD+_r@@ZiQdpkQXa%YC~A~*D(7YSM2^?m0=(g=LVA8H|z z{~*=uyy09(+^m$UwZp|Wjz5^0safh*ZPFeHd2)bW)FNPZ9-FJ%^u9%yBoR8`C~7(a za%WJ8c!yfA@`)p7QJ_{&rso>c;u{tj$ zGQk*@?{5}eVw5~$W8y+|f~R{{5@$&zEji1xl9)9U4_`?L;=hwen7Tvz8+A+4=YMF; zcZ@6&pRLT9YkW2Z%=5Vx^m=QYo|~Mdq%C+>Lql{+je-54$8eo-3=uXs%DE4;!3}2O z;WiM&W7^=uMiz-}z?mnp!Qi&Esta{A-PJi6!-$cztn|X5|BTUBkWECgB7GT*_Xz!@ zPF5rVBrB3^nq=j>kb@^H-=h*sR#>SoSz!@XoH433RB*PUpG$ee6oRlm-CAZ6#^i)@ z14DAMoRX7ft#nxXiML97%TI(h!&gaRNy_7@2TM|>G9)RR`;!zQvwLh`q9RA*3)ET| zcP8ofJ11yJSVV)mb*NM9v`Xaza{DT6zOq}Bib_>DPoyiJA3qI|BSHy-vz1AY2=Nk? zwc104AQE{)?&yhi+y+zjYfe};s=kY9Rh_de*GiIO^;YRY7L=gLGZj5ZXBUxK+)U*~ zM#&?hbB$}?6$TAYn9OnQTdHsJ-5}#0bin zYiKh?u_w6}vPZFJ8^;h~gDG^1V}lo)iHAoqK|H1n_8D0uwgG3J#0G=gQWOhyG~Lzt z8tj=piv5&kg@|I(pTYcLRA+jEDhVKpNwR68*qdN09>xBcN-T=8Qa(}aq_*9iovlTF zIKVL(i#5;hBnq4sJu}3z?UH$};q2YU*>4VK?^1n}?<>a*XG)Jeu;_?3s_yWhrvBD( z?KUM}^0=nQ=G;nT7B{ZlW0X7sQ$K@FaWM6MGx2at6~tp=>UWGR5@RZ7uEEX}*FM3u zkUg&b(l~|)8~iKhK5%vR2Q%?-8wlbtZLngKDSb(71I|2&4F6 zo`}jjdJ?@rO^NW}ZTdq0d8+RsS@3T4!qBj=EYC^AUwTyMD9OS{WjdZnkIMNUL}qbQ zk}HgoM})&m(J4+!QZo||4~K$y%y9TeMiz;~A!n`;*p!l7#I=w;CAr=>h6o$HlXD-K zl6=5SJlqC?cuX7ot&v4y8*t`HY%sVjr6i$_rn@?)U>M0#5)Nl1Q>?Qj&jy96TlYK9yKX!b*K935%CmAA#CPK}gqg!M)_R^3wgq%YP|6S+kBcA~^7BO@D?ITrcE}wa7d~zD4D*ik$5r3tXCldH zHz*uND4;(o9vj(`uMZ>dYh8RrjVJkvQR~9_dmT{jpdxWV z$_yO1Lues24oCvP0ZBFu4*U{wa2)s*l^71NQa(8FeEEHDIYZOX9esV zn|NR_AS=+6GGKu}E6^kt4hk+8R!_4?euL_}NLhhaKtB@rqrSIgSXSV5B5^><3>>&fXdyKYNCLnCNj41*`~~D-IPmWKE40OC=pX=t>$Ay*C`2ELJU-!y9Qvj|> z?n!!6Y)mRhZieX!?aE(NA|`ibJv`?NL?-CU`F_9u9i!wC8!+EQr#PEnkDG~yZ@>uR zF*jhIFtSLz0mGSV>@#hGeT{1&`zF|mEvEc9!Um)06vqa~nTdznKoE~S(&F^C8$Xdzkw&%?hyzCjA-A|3=Ky)L~8%K$w$c(}cO#!&W@qy@*OI zy0KC|(QS`J&v;4h@sS~p_0N#nt_}#o(7a&ZrXKo-Y-YvT=4u${zImJLfa>d7c?UM3 zzhHD*7`%;U?m;E>&y-wZ0!m!-_`Wm{+= zwJ%Eo@MTFhjW2%~a&TY%8!9nhW~F?5xgh6Cfa0d zrb$-6p!&L{ynR}oCZ@C1ait>Z%bptT$KO;^Cii1KLgyPqCg{ic=Bqz7N*<9bJ&sOs za;1Ma6A#ao1o4=;($H2@u9rAh;>H1 z2V3zNXH$vAI94*oIIX3Ea{?Ye^S7#bcnZE%EozN#RnyDNhPSF$(AiT&2fr^Nao1O; zk@srj+zWfJx}$oq_o~l=DCu4{KF>Wa{Jm5K>VLIbbB`D{kC>+OF}E^Gcggu5dQhKLf`t#t^fH+qlyeu6S=_wjYevZgrNB8{vnNj6Ow`yJ%q zVeI!*VquJx`ob7P+pM1moj7OF%a3zr9Q2%$h_=(BPhjU*qyJzK+$h;{$67E1T)*9v zahjk0tX6&9HzeIDCap9h-*EQnj3bYRzfq-4z64W$YZrZnk}Ns!=}|c+5ShgRzSE5o zM*!cc=oAK32*H_@3Epu-Co^AfM+uf9B(&QwHeUq!=$S_Wgx0WSXaB z*Q>tnr3;UJa>V^_ZI0<%9Q|~KhQGg7!X<}4Juv5kL}qc|?_Q(C5%Bj}bczdqpJHt@ z!QZ#j$oOz#88wEP;4jonx~uaJ@XZK+A0p8O{K=^R`1^CAhScyU2>|{i*);ICN#3 z`1X+K0{G-q0Pt-PYDf)yk^q2Dl1&4AZ-X2>@4J>t4ER_nAK+szO%eK-zWBp^?EZOP znnJ}iy~!gxW`Mv6FP)GNd4k(};-$x6wML1Xgdx*l-wmp7@&}Kk6Z4waJJSB#Z>9e> zM?rt39^@TL(Bx342kCr_$ONG<(Tk3u#5@lB9&pI$uy=xlbXX}c9QM6J1*siY5`e=> zvS}RlA0Y>K*hi?u9F~>xaoAnta|6z=K@<3^=X)HQo1T6d+;z8yOo7U@Umx#Pf}qO| z^yGgN7Ea^Izf^sbAJ0bGGJCQ|3H^?|!grVZv9C_M@zNdUJk7L)uSe)CAu>TX-e$7S zf^F$TN`6A!n6ARf~O zZ!xk+Yy-|bi46v~rN>60(4f0IKLa>s49Y`f6p=+QA*}#@!1?C_c2fssNdQ4vl1&qo z{}v+gpnNBlSWsrAe1h^$2KkL{C-MY$G(br99N&%#9+Ih7hJeiT0mj+{_zUnj{Q)v_ z%1wp)RA2Y9h2KzB+V2m>&;27zZ7StJeuoViA4Qy}iQLCQdUrg01r zHh6wa8@$R)JlqC?cuX5yY-Ewx2Ap{k8w_qsfjATzbXVt#@TrV}_z`kT5r`%Hfb*A8 zo#{11NdSRZl1&qc-v&d8?JO$s?JO$g6No1P_mQ9f;T~eJ=e2cIPz(-!^Oxk!jV+9! zT9WWLH&|x801@{l<19D7zHx)<>t2*g#0~knZ-^_C$65Y|4zYJAfs%(L?#$w z^ZlmpD@Ms9!19ae6enPP(@Z=ZECunHVENBR7Ky=M_>8{RupwWy0>rOI?2w2jY z!TG(yz^PY`k^pVz5-o-iT6CJF1$Su^pOTHucI)L%wNb~Xb~`Wc*}L%n?#p|QvjlPJ zJYH7U#N2WA&hr$A^_bd8 zUQs#CD~0f+(dG75Jo05LH1^*6Qd4U0jwDtRiq-qw@j0t* zwMv~v3;o9{rH<9^l;)fGV+ChZ1nmR(bGi7l+p6KORh>q;I8!Pgpu1o<47pmc+`8FD zqf>9-wRe53M4ys~h%WC5LykgBdXw`b>Ep?aMrJDM4*j;NKszO(tQm5ONjfUOfiZ#=n z1HFl>ORYL|g%&NVG>@8bI%LfvxqC<4iE5pmZ(H?pqk>kjX}2>wb^27hit;x9&7#$6 zHCjcxRIk*m7W7P_mODLnHCFw8D#MIQ&)pul6CmNd2~*ph;B>VNviCOsjX-C24UM4< zMcGhM4P)xLt7@hCT(>l5LE{ztz0|7r-1RN1+-Oyb6|0H)0X9{p>5+1yK8s;OBh^Z= ziANdLL)iatCy+!n@HjzMxl5~?bak;(ZI@sB{Q>kGm3sX~P9d z3_UPwM6=>-wT8jLH#boUOt3#nZD3)dR)NV^v`Sa2KQTqul2>8o)aNh}Yt{K`r?+p- zE_b47HR<_|1z#*Pg{`ETnG$3t=WsXMoldiT#@@ZCZsR#c$8OZ88?Cv$J$ECuWCEaN zv184{JlI@v$521D^ORGe&xzJ-IY6FjH2ISxc{po{oeOBSrmI$Gmhphw@3lMgH88_I z$_%`yf*tqs#@y|glk-L8o@xNac9UkvQFl%IaJ^GHRJ5yeb`Aey{tnd|H1$`u=Sy(3 ztGe*(HWam<{muU@)*9uKQ0?}zU4je2@Z8^^Wu`*(KG1D~#RR15R6Ec=$AP1mJ&kg; zK8raZfngm%MY}r_Xjh%5$y;lbxHk?lRKlE@pRp=%;lmKYwyX}AY%HVIfuc2Es@967 zN(H|oK?rihT}zb79TA&F89*qOLSrW za**8Tdb$`@hX%1!S4^t93WZimt0)4T0hFVhpguR*nDzW7oo=KQ34x>{N%-68GO-eu z^>lfJEP%>bonh^ zu2_RhnJy2~X)0|cfHEnZ8pKlgYmzE_ zcHW?9`msVRH?WE!F@=IpCSmu|g`w%=RH9!{G!B3o#2UcGNe4i`^ngenJzIDKIS>+8 z3}g)ny^$_oqszDGLcamcekhv#b|(9QO&%)f2awp2CdOgXnJ4)SlRi~8+KM-j!<4_* zgjFZ~;uiZ^F7|69>?cVa`n>^%ew4tWv&J1dkldluh8;SRm>tN-PHlAPI5&sRd}D{+ zu#<6kyrgfd9r}>ks19lnOC59)B&{b`lpD1g&t0+99(_6e zY$)olN22+*-UV1PG)pZkK9G90ktB15YPIF7UZJX4p1Y!2FW0&i%B$ySZG_L5S=55E Kdiy!JO#gq69m~o9 diff --git a/.doctrees/src/music.auth.doctree b/.doctrees/src/music.auth.doctree index 720da7788e099f873f407a940f6d6884532cd0fd..61b1c536efaf753b3a89a8b795e1d04ef4c9c183 100644 GIT binary patch delta 3472 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 Uj#_a671V}0PUn2)W3Zd~f4q1~F#rGn diff --git a/.doctrees/src/music.db.doctree b/.doctrees/src/music.db.doctree index cacfb5dd2ad952d59c1c39813afc46a5d17287cf..e6f9d3e5ebaae8dee24a98946d3c04bcfb27dd22 100644 GIT binary patch literal 47541 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 Ysx`WGv~-KOTCJ<&63tgLrhGI14-ZmVP5=M^ literal 46866 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 diff --git a/.doctrees/src/music.doctree b/.doctrees/src/music.doctree index 8f028b48c82edcc9cb47ec44d2792e557df707ee..6c275ce0a78095a176d48b2a978f2bb07f3f1fd7 100644 GIT binary patch delta 1443 zcmZuxZERCz6z08ayY8-AKj_wOZP$GW+ZYg|&JCg_Cb9&{$}jbgb++A=w`c1IYn!-4 zr877k+(^i|h9AbrKMg@})-6Fr`K1v2ApBa;7%)c6f?xk2LFAm<+p?)YdhR*T`<(YY z?|IMLvxyjfU^}JAa^-!yBE(UA*FWfxb2386700L$pW+|h5N>yl z+0V$3T*6uBadFAShMVs5UzA^$gM%|&v ze@yT+fq$Fe1$9JtP&7Z~Y!w?en9#XE*ek7Fe<9?jQc_;W!_8gdH$2h2Rcs-8Br0zu z%8O_kubT(a_n9l7R7&OmP;WqMqwEu_rMavVO{hUTYy~i6{A9?x!fqG*u z3B}pGWpML-XYdj2(jgn;ejEo?WxY@)|zo8wyz0LYJ_P zhGn1sz#@?ovXA7!B)OoGSyu$ogy_wgQX!q%ZdwDT2$Bw%=7fuEGHkBb!g&L7B6N!BO-hI{Ok(!E7tEx*$n8BOAH)(chwy@mh#>&PQ#42|B=M<-c$6a9pJ#L3W z{17zoCj#ej#h+9{wPiOy#}EWD)7Ix~x0rY~(AOub!5tDsl@yBpbv4k4Keml1qqVI( zomQn`s}f~WOF27$@%Bk&uf^W1tUgN0^`-vyGc}U zRo~cJeZ#EJS<^?4DB8hUx4B*jR{3LIsySNc0^QrH^G%(rtnz9WLWdwYDxXj!*Sr?Z+te;?GNA$+NK=Uqmw$}|7~ delta 1391 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

mhdXho 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 diff --git a/.doctrees/src/music.tasks.doctree b/.doctrees/src/music.tasks.doctree index a5896f9c243c5a92cbb6fc021350aedddc0d0814..7eeb9e34e59db99d4806245457d4fe58aa2ed172 100644 GIT binary patch literal 34634 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 Hu(A4onq${} diff --git a/_static/doctools.js b/_static/doctools.js index c3db08d..527b876 100644 --- a/_static/doctools.js +++ b/_static/doctools.js @@ -10,6 +10,13 @@ */ "use strict"; +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + const _ready = (callback) => { if (document.readyState !== "loading") { callback(); @@ -18,73 +25,11 @@ const _ready = (callback) => { } }; -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - parent.insertBefore( - span, - parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - /** * Small JavaScript module for the documentation. */ const Documentation = { init: () => { - Documentation.highlightSearchWords(); Documentation.initDomainIndexTable(); Documentation.initOnKeyListeners(); }, @@ -126,51 +71,6 @@ const Documentation = { Documentation.LOCALE = catalog.locale; }, - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords: () => { - const highlight = - new URLSearchParams(window.location.search).get("highlight") || ""; - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - const url = new URL(window.location); - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - }, - /** * helper function to focus on search bar */ @@ -210,15 +110,11 @@ const Documentation = { ) return; - const blacklistedElements = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", - ]); document.addEventListener("keydown", (event) => { - if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements - if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; if (!event.shiftKey) { switch (event.key) { @@ -240,10 +136,6 @@ const Documentation = { event.preventDefault(); } break; - case "Escape": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.hideSearchWords(); - event.preventDefault(); } } diff --git a/_static/searchtools.js b/_static/searchtools.js index f2fb7d5..e89e34d 100644 --- a/_static/searchtools.js +++ b/_static/searchtools.js @@ -57,14 +57,14 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, highlightTerms, searchTerms) => { +const _displayItem = (item, searchTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const [docName, title, anchor, descr] = item; + const [docName, title, anchor, descr, score, _filename] = item; let listItem = document.createElement("li"); let requestUrl; @@ -82,10 +82,9 @@ const _displayItem = (item, highlightTerms, searchTerms) => { requestUrl = docUrlRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } - const params = new URLSearchParams(); - params.set("highlight", [...highlightTerms].join(" ")); let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + "?" + params.toString() + anchor; + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; linkEl.innerHTML = title; if (descr) listItem.appendChild(document.createElement("span")).innerHTML = @@ -96,7 +95,7 @@ const _displayItem = (item, highlightTerms, searchTerms) => { .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, highlightTerms) + Search.makeSearchSummary(data, searchTerms) ); }); Search.output.appendChild(listItem); @@ -116,15 +115,14 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - highlightTerms, searchTerms ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), highlightTerms, searchTerms); + _displayItem(results.pop(), searchTerms); setTimeout( - () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms), 5 ); } @@ -237,6 +235,12 @@ const Search = { * execute search (requires search index to be loaded) */ query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -264,6 +268,10 @@ const Search = { } }); + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + // console.debug("SEARCH: searching for:"); // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); @@ -272,6 +280,40 @@ const Search = { let results = []; _removeChildren(document.getElementById("search-progress")); + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + // lookup as object objectTerms.forEach((term) => results.push(...Search.performObjectSearch(term, objectTerms)) @@ -318,7 +360,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, highlightTerms, searchTerms); + _displayNextItem(results, results.length, searchTerms); }, /** @@ -399,8 +441,8 @@ const Search = { // prepare search const terms = Search._index.terms; const titleTerms = Search._index.titleterms; - const docNames = Search._index.docnames; const filenames = Search._index.filenames; + const docNames = Search._index.docnames; const titles = Search._index.titles; const scoreMap = new Map(); @@ -497,11 +539,9 @@ const Search = { /** * helper function to return a node containing the * search summary for a given text. keywords is a list - * of stemmed words, highlightWords is the list of normal, unstemmed - * words. the first one is used to find the occurrence, the - * latter for highlighting it. + * of stemmed words. */ - makeSearchSummary: (htmlText, keywords, highlightWords) => { + makeSearchSummary: (htmlText, keywords) => { const text = Search.htmlToText(htmlText); if (text === "") return null; @@ -519,10 +559,6 @@ const Search = { summary.classList.add("context"); summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - highlightWords.forEach((highlightWord) => - _highlightText(summary, highlightWord, "highlighted") - ); - return summary; }, }; diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 0000000..aae669d --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/genindex.html b/genindex.html index b81b5cf..d276d51 100644 --- a/genindex.html +++ b/genindex.html @@ -13,6 +13,7 @@ + @@ -987,7 +988,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 diff --git a/index.html b/index.html index ef4be12..235f8a9 100644 --- a/index.html +++ b/index.html @@ -14,6 +14,7 @@ + @@ -48,7 +49,14 @@
  • music Root Module
  • -
  • Admin Script
  • +
  • Admin Script +
  • All Modules @@ -129,7 +137,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 | diff --git a/py-modindex.html b/py-modindex.html index aed5609..95591e6 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -13,6 +13,7 @@ + @@ -259,7 +260,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 diff --git a/search.html b/search.html index 503655e..672d3ba 100644 --- a/search.html +++ b/search.html @@ -14,6 +14,7 @@ + @@ -114,7 +115,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 diff --git a/searchindex.js b/searchindex.js index 00b53d4..ca70acc 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index", "src/admin", "src/modules", "src/music", "src/music.api", "src/music.auth", "src/music.cloud", "src/music.db", "src/music.model", "src/music.tasks"], "filenames": ["index.rst", "src/admin.rst", "src/modules.rst", "src/music.rst", "src/music.api.rst", "src/music.auth.rst", "src/music.cloud.rst", "src/music.db.rst", "src/music.model.rst", "src/music.tasks.rst"], "titles": ["Mixonomer", "admin script", "Mixonomer Modules", "Flask Backend", "music.api", "music.auth", "music.cloud", "music.db", "music.model", "music.tasks"], "terms": {"py": [0, 1], "music": [0, 2], "api": [0, 2, 3], "auth": [0, 2, 3, 4], "cloud": [0, 1, 2, 3, 8], "db": [0, 2, 3], "model": [0, 2, 3, 7], "task": [0, 1, 2, 3, 8], "root": [0, 2], "modul": 0, "admin": [0, 2, 3], "script": 0, "all": [0, 4, 6, 8], "flask": [0, 1, 2, 4], "backend": [0, 2], "i": 0, "web": 0, "app": [0, 1, 3, 4, 8, 9], "creat": [0, 3, 6, 9], "smart": [0, 7, 8, 9], "spotifi": [0, 2, 3, 7, 9], "playlist": [0, 1, 2, 3, 4, 6, 7, 9], "The": 0, "base": [0, 1, 7, 8], "spotframework": [0, 1, 7, 9], "fmframework": [0, 1, 7, 9], "interfac": [0, 7], "last": [0, 9], "fm": [0, 2, 3, 9], "current": 0, "host": 0, "googl": 0, "": [0, 6, 7, 8, 9], "platform": 0, "compos": 0, "server": 0, "fireo": [0, 8], "orm": [0, 7, 8], "layer": [0, 7, 8], "longer": 0, "dispatch": 0, "function": [0, 1, 2, 3, 7, 8, 9], "frontend": 0, "react": 0, "materi": 0, "ui": 0, "compon": [0, 1, 7], "axio": 0, "http": [0, 4, 5], "request": [0, 5], "index": 0, "search": 0, "page": [0, 5], "class": [1, 7, 8], "completekei": 1, "tab": 1, "stdin": 1, "none": [1, 4, 6, 7, 8, 9], "stdout": 1, "cmd": 1, "compile_frontend": 1, "compil": 1, "sass": 1, "css": 1, "run": [1, 3, 6, 9], "npm": 1, "build": 1, "copy_main_fil": 1, "path": [1, 8], "copi": 1, "main": 1, "file": 1, "correspond": 1, "python": 1, "stage": 1, "deploy_funct": 1, "name": [1, 6, 7, 8, 9], "timeout": 1, "int": [1, 6], "60": 1, "region": 1, "europ": 1, "west2": 1, "deploi": 1, "requir": 1, "environ": [1, 6], "variabl": 1, "do_app": 1, "arg": [1, 4, 8], "front": 1, "end": 1, "engin": 1, "do_cron_funct": 1, "background": 1, "includ": [1, 5, 6, 9], "cron": 1, "job": 1, "schedul": 1, "updat": [1, 6, 7, 8, 9], "action": 1, "run_all_playlist": 1, "run_all_playlist_stat": 1, "run_all_tag": 1, "do_doc": 1, "document": [1, 7], "us": [1, 7], "sphinx": 1, "do_exit": 1, "exit": 1, "do_main_group": 1, "primari": 1, "run_user_playlist": [1, 2, 3], "update_tag": [1, 2, 3, 6], "do_playlist": 1, "do_playlist_cron": 1, "do_playlist_stats_cron": 1, "do_prepare_local_stag": 1, "prepar": 1, "local": 1, "work": 1, "directori": 1, "deploy": 1, "static": 1, "sarsoolib": 1, "inject": 1, "do_pydepend": 1, "gener": [1, 3, 5, 9], "export": 1, "txt": 1, "from": [1, 7], "poetri": 1, "manifest": 1, "do_renam": 1, "renam": 1, "firestor": [1, 7, 8], "do_run": 1, "do_sass": 1, "do_set_project": 1, "set": [1, 8], "project": 1, "gcloud": 1, "consol": [1, 3], "do_tag": 1, "do_tags_cron": 1, "do_test": 1, "unit": 1, "test": 1, "do_watchsass": 1, "watch": 1, "argument": 1, "begin": 1, "sourc": 1, "folder": 1, "chang": 1, "export_filtered_depend": 1, "function_deploi": 1, "function_id": 1, "initi": 1, "command": 1, "paramet": [1, 4, 6, 7, 8, 9], "str": [1, 6, 7, 8, 9], "id": [1, 6], "intro": 1, "mixonom": [1, 3, 7], "help": 1, "spotfm": [1, 2, 3], "prompt": 1, "doc": 1, "folders_to_ignor": 1, "venv": 1, "git": 1, "idea": 1, "node_modul": 1, "content": [2, 3], "decor": [2, 3], "player": [2, 3], "tag": [2, 3, 6, 9], "databas": [2, 3], "part_gener": [2, 3], "config": [2, 3], "user": [2, 3, 4, 6, 7, 9], "create_playlist": [2, 3], "refresh_lastfm_stat": [2, 3], "contain": [3, 8], "top": 3, "level": [3, 8], "load": [3, 4], "blueprint": [3, 4], "initialis": 3, "log": 3, "stack": 3, "init_log": 3, "fals": 3, "create_app": 3, "retriev": [3, 4, 5, 7, 9], "readi": 3, "return": [3, 4, 5, 7, 8, 9], "type": [3, 4, 5, 7, 8, 9], "endpoint": [4, 5], "get_task": 4, "all_playlists_rout": 4, "given": [4, 6, 7], "option": [4, 6, 7, 8, 9], "descript": [4, 8, 9], "default": [4, 6, 8, 9], "respons": [4, 5], "all_users_rout": 4, "change_password": 4, "imag": 4, "playlist_get_delete_rout": 4, "playlist_post_put_rout": 4, "run_playlist": 4, "run_playlist_task": 4, "run_us": 4, "run_user_task": 4, "user_delete_rout": 4, "user_rout": 4, "admin_requir": 4, "func": 4, "check_dict": 4, "request_param": 4, "expected_arg": 4, "kwarg": [4, 8], "cloud_task": 4, "gae_cron": 4, "is_basic_auth": 4, "is_jwt_auth": 4, "is_logged_in": 4, "jwt_requir": 4, "lastfm_username_requir": 4, "login_or_basic_auth": 4, "login_or_jwt": 4, "login_requir": 4, "no_cach": 4, "no_locked_us": 4, "spotify_link_requir": 4, "validate_arg": 4, "validate_json": 4, "daily_scrobbl": 4, "next_track": 4, "plai": 4, "shuffl": [4, 8], "volum": 4, "count": [4, 8], "playlist_refresh": 4, "run_playlist_album_task": 4, "run_playlist_artist_task": 4, "run_playlist_track_task": 4, "sort": [4, 8], "delete_tag": 4, "tag_id": [4, 6, 8], "get_tag": 4, "post_tag": 4, "put_tag": 4, "run_tag_task": 4, "tag_refresh": 4, "tag_rout": 4, "secur": 5, "relat": 5, "login": 5, "logout": 5, "reset": [5, 7], "password": [5, 8], "deauth": 5, "jwt_token": 5, "jwt": 5, "token": 5, "post": 5, "rout": 5, "allow": 5, "html": 5, "submiss": 5, "result": 5, "home": 5, "redirect": 5, "get": [5, 7, 8], "regist": 5, "infrastuctur": 6, "code": 6, "hand": 6, "off": 6, "offload_or_run_user_playlist": 6, "usernam": [6, 7, 8, 9], "playlist_nam": [6, 8, 9], "queue_run_user_playlist": 6, "run_user_playlist_funct": 6, "queue": 6, "serverless": 6, "subject": [6, 7, 8, 9], "gcp": 6, "long": [6, 9], "oper": [6, 8, 9], "refresh_all_user_playlist_stat": 6, "stat": 6, "refresh": 6, "refresh_playlist_task": 6, "delai": 6, "0": 6, "second": 6, "execut": 6, "refresh_user_playlist_stat": 6, "depend": [6, 7], "refresh_user_stats_task": 6, "run_user_playlist_task": 6, "update_all_user_playlist": 6, "update_all_user_tag": 6, "update_playlist": 6, "asid": 7, "databaseus": 7, "client_id": 7, "client_secret": 7, "access_token": [7, 8], "refresh_token": [7, 8], "user_id": 7, "networkus": 7, "ad": 7, "network": [7, 9], "get_authed_lastfm_network": 7, "an": [7, 8], "authent": 7, "fmnetwork": 7, "get_authed_spotify_network": 7, "spotifynetwork": 7, "refresh_token_database_callback": 7, "callback": 7, "handl": 7, "when": [7, 9], "credemti": 7, "store": 7, "newli": 7, "credenti": 7, "partgener": 7, "object": [7, 8, 9], "resolv": 7, "other": 7, "referenc": 7, "get_recursive_part": 7, "list": [7, 8], "process_reference_by_nam": 7, "recurs": 7, "process_reference_by_refer": 7, "ref": 7, "documentrefer": 7, "resolut": 7, "walk": 7, "intern": 7, "state": 7, "data": 8, "servic": 8, "structur": 8, "kei": 8, "meta": 8, "collection_nam": 8, "correct": 8, "collect": 8, "manag": 8, "jwt_default_length": 8, "jwt_max_length": 8, "jwt_secret_kei": 8, "last_fm_client_id": 8, "playlist_cloud_operating_mod": 8, "determin": 8, "whether": 8, "ar": 8, "done": 8, "secret_kei": 8, "spotify_client_id": 8, "spotify_client_secret": 8, "add_last_month": 8, "add_this_month": 8, "chart_limit": 8, "chart_rang": 8, "day_boundari": 8, "description_overwrit": 8, "description_suffix": 8, "include_library_track": 8, "include_recommend": 8, "include_spotify_own": 8, "last_upd": 8, "lastfm_stat_album_count": 8, "lastfm_stat_album_perc": 8, "lastfm_stat_artist_count": 8, "lastfm_stat_artist_perc": 8, "lastfm_stat_count": 8, "lastfm_stat_last_refresh": 8, "lastfm_stat_perc": 8, "mutable_kei": 8, "recommendation_sampl": 8, "part": 8, "playlist_refer": 8, "to_dict": 8, "convert": 8, "dict": 8, "uri": [8, 9], "valu": 8, "enum": 8, "enumer": 8, "1": 8, "release_d": 8, "3": 8, "2": 8, "album": 8, "artist": 8, "proport": 8, "time_object": 8, "total_tim": 8, "total_time_m": 8, "total_user_scrobbl": 8, "track": 8, "spotify_us": 8, "check_password": 8, "email": 8, "get_playlist": 8, "single_return": 8, "true": 8, "raise_error": 8, "case": 8, "sensit": 8, "Will": 8, "exact": 8, "match": 8, "possibl": 8, "otherwis": 8, "first": 8, "insensit": 8, "bool": 8, "best": 8, "found": 8, "rais": [8, 9], "nameerror": [8, 9], "noth": 8, "If": 8, "last_keygen": 8, "last_login": 8, "last_refresh": 8, "lastfm_usernam": 8, "lock": 8, "spotify_link": 8, "token_expiri": 8, "valid": 8, "fullplaylist": 9, "new": 9, "account": 9, "For": 9, "refresh_lastfm_album_stat": 9, "refresh_lastfm_artist_stat": 9, "refresh_lastfm_track_stat": 9, "spotnet": 9, "fmnet": 9, "upad": 9, "spotnetwork": 9, "No": 9, "provid": 9, "attributeerror": 9, "ha": 9, "avail": 9, "e": 9, "error": 9}, "objects": {"": [[1, 0, 0, "-", "admin"], [3, 0, 0, "-", "music"]], "admin": [[1, 1, 1, "", "Admin"], [1, 4, 1, "", "docs"], [1, 5, 1, "", "folders_to_ignore"], [1, 4, 1, "", "run"], [1, 4, 1, "", "test"]], "admin.Admin": [[1, 2, 1, "", "compile_frontend"], [1, 2, 1, "", "copy_main_file"], [1, 2, 1, "", "deploy_function"], [1, 2, 1, "", "do_app"], [1, 2, 1, "", "do_cron_functions"], [1, 2, 1, "", "do_docs"], [1, 2, 1, "", "do_exit"], [1, 2, 1, "", "do_main_group"], [1, 2, 1, "", "do_playlist"], [1, 2, 1, "", "do_playlist_cron"], [1, 2, 1, "", "do_playlist_stats_cron"], [1, 2, 1, "", "do_prepare_local_stage"], [1, 2, 1, "", "do_pydepend"], [1, 2, 1, "", "do_rename"], [1, 2, 1, "", "do_run"], [1, 2, 1, "", "do_sass"], [1, 2, 1, "", "do_set_project"], [1, 2, 1, "", "do_tag"], [1, 2, 1, "", "do_tags_cron"], [1, 2, 1, "", "do_test"], [1, 2, 1, "", "do_watchsass"], [1, 2, 1, "", "export_filtered_dependencies"], [1, 2, 1, "", "function_deploy"], [1, 3, 1, "", "intro"], [1, 3, 1, "", "locals"], [1, 3, 1, "", "prompt"]], "music": [[4, 0, 0, "-", "api"], [5, 0, 0, "-", "auth"], [6, 0, 0, "-", "cloud"], [7, 0, 0, "-", "db"], [3, 4, 1, "", "init_log"], [8, 0, 0, "-", "model"], [3, 0, 0, "-", "music"], [9, 0, 0, "-", "tasks"]], "music.api": [[4, 0, 0, "-", "admin"], [4, 0, 0, "-", "api"], [4, 0, 0, "-", "decorators"], [4, 0, 0, "-", "fm"], [4, 0, 0, "-", "player"], [4, 0, 0, "-", "spotfm"], [4, 0, 0, "-", "spotify"], [4, 0, 0, "-", "tag"]], "music.api.admin": [[4, 4, 1, "", "get_tasks"]], "music.api.api": [[4, 4, 1, "", "all_playlists_route"], [4, 4, 1, "", "all_users_route"], [4, 4, 1, "", "change_password"], [4, 4, 1, "", "image"], [4, 4, 1, "", "playlist_get_delete_route"], [4, 4, 1, "", "playlist_post_put_route"], [4, 4, 1, "", "run_playlist"], [4, 4, 1, "", "run_playlist_task"], [4, 4, 1, "", "run_user"], [4, 4, 1, "", "run_user_task"], [4, 4, 1, "", "run_users"], [4, 4, 1, "", "user_delete_route"], [4, 4, 1, "", "user_route"]], "music.api.decorators": [[4, 4, 1, "", "admin_required"], [4, 4, 1, "", "check_dict"], [4, 4, 1, "", "cloud_task"], [4, 4, 1, "", "gae_cron"], [4, 4, 1, "", "is_basic_authed"], [4, 4, 1, "", "is_jwt_authed"], [4, 4, 1, "", "is_logged_in"], [4, 4, 1, "", "jwt_required"], [4, 4, 1, "", "lastfm_username_required"], [4, 4, 1, "", "login_or_basic_auth"], [4, 4, 1, "", "login_or_jwt"], [4, 4, 1, "", "login_required"], [4, 4, 1, "", "no_cache"], [4, 4, 1, "", "no_locked_users"], [4, 4, 1, "", "spotify_link_required"], [4, 4, 1, "", "validate_args"], [4, 4, 1, "", "validate_json"]], "music.api.fm": [[4, 4, 1, "", "daily_scrobbles"]], "music.api.player": [[4, 4, 1, "", "next_track"], [4, 4, 1, "", "play"], [4, 4, 1, "", "shuffle"], [4, 4, 1, "", "volume"]], "music.api.spotfm": [[4, 4, 1, "", "count"], [4, 4, 1, "", "playlist_refresh"], [4, 4, 1, "", "run_playlist_album_task"], [4, 4, 1, "", "run_playlist_artist_task"], [4, 4, 1, "", "run_playlist_track_task"], [4, 4, 1, "", "run_user"], [4, 4, 1, "", "run_user_task"], [4, 4, 1, "", "run_users"]], "music.api.spotify": [[4, 4, 1, "", "sort"]], "music.api.tag": [[4, 4, 1, "", "delete_tag"], [4, 4, 1, "", "get_tag"], [4, 4, 1, "", "post_tag"], [4, 4, 1, "", "put_tag"], [4, 4, 1, "", "run_tag_task"], [4, 4, 1, "", "tag_refresh"], [4, 4, 1, "", "tag_route"], [4, 4, 1, "", "tags"]], "music.auth": [[5, 0, 0, "-", "auth"]], "music.auth.auth": [[5, 4, 1, "", "auth"], [5, 4, 1, "", "deauth"], [5, 4, 1, "", "jwt_token"], [5, 4, 1, "", "login"], [5, 4, 1, "", "logout"], [5, 4, 1, "", "register"], [5, 4, 1, "", "token"]], "music.cloud": [[6, 0, 0, "-", "function"], [6, 4, 1, "", "offload_or_run_user_playlist"], [6, 4, 1, "", "queue_run_user_playlist"], [6, 0, 0, "-", "tasks"]], "music.cloud.function": [[6, 4, 1, "", "run_user_playlist_function"], [6, 4, 1, "", "update_tag"]], "music.cloud.tasks": [[6, 4, 1, "", "refresh_all_user_playlist_stats"], [6, 4, 1, "", "refresh_playlist_task"], [6, 4, 1, "", "refresh_user_playlist_stats"], [6, 4, 1, "", "refresh_user_stats_task"], [6, 4, 1, "", "run_user_playlist_task"], [6, 4, 1, "", "update_all_user_playlists"], [6, 4, 1, "", "update_all_user_tags"], [6, 4, 1, "", "update_playlists"]], "music.db": [[7, 0, 0, "-", "database"], [7, 0, 0, "-", "part_generator"]], "music.db.database": [[7, 1, 1, "", "DatabaseUser"], [7, 4, 1, "", "get_authed_lastfm_network"], [7, 4, 1, "", "get_authed_spotify_network"], [7, 4, 1, "", "refresh_token_database_callback"]], "music.db.database.DatabaseUser": [[7, 3, 1, "", "user_id"]], "music.db.part_generator": [[7, 1, 1, "", "PartGenerator"]], "music.db.part_generator.PartGenerator": [[7, 2, 1, "", "get_recursive_parts"], [7, 2, 1, "", "process_reference_by_name"], [7, 2, 1, "", "process_reference_by_reference"], [7, 2, 1, "", "reset"]], "music.model": [[8, 0, 0, "-", "config"], [8, 0, 0, "-", "playlist"], [8, 0, 0, "-", "tag"], [8, 0, 0, "-", "user"]], "music.model.config": [[8, 1, 1, "", "Config"]], "music.model.config.Config": [[8, 1, 1, "", "Meta"], [8, 3, 1, "", "collection"], [8, 3, 1, "", "collection_name"], [8, 3, 1, "", "jwt_default_length"], [8, 3, 1, "", "jwt_max_length"], [8, 3, 1, "", "jwt_secret_key"], [8, 3, 1, "", "last_fm_client_id"], [8, 3, 1, "", "playlist_cloud_operating_mode"], [8, 3, 1, "", "secret_key"], [8, 3, 1, "", "spotify_client_id"], [8, 3, 1, "", "spotify_client_secret"]], "music.model.config.Config.Meta": [[8, 3, 1, "", "collection_name"]], "music.model.playlist": [[8, 1, 1, "", "Playlist"], [8, 1, 1, "", "Sort"]], "music.model.playlist.Playlist": [[8, 1, 1, "", "Meta"], [8, 3, 1, "", "add_last_month"], [8, 3, 1, "", "add_this_month"], [8, 3, 1, "", "chart_limit"], [8, 3, 1, "", "chart_range"], [8, 3, 1, "", "collection"], [8, 3, 1, "", "collection_name"], [8, 3, 1, "", "day_boundary"], [8, 3, 1, "", "description_overwrite"], [8, 3, 1, "", "description_suffix"], [8, 3, 1, "", "include_library_tracks"], [8, 3, 1, "", "include_recommendations"], [8, 3, 1, "", "include_spotify_owned"], [8, 3, 1, "", "last_updated"], [8, 3, 1, "", "lastfm_stat_album_count"], [8, 3, 1, "", "lastfm_stat_album_percent"], [8, 3, 1, "", "lastfm_stat_artist_count"], [8, 3, 1, "", "lastfm_stat_artist_percent"], [8, 3, 1, "", "lastfm_stat_count"], [8, 3, 1, "", "lastfm_stat_last_refresh"], [8, 3, 1, "", "lastfm_stat_percent"], [8, 3, 1, "", "mutable_keys"], [8, 3, 1, "", "name"], [8, 3, 1, "", "parts"], [8, 3, 1, "", "playlist_references"], [8, 3, 1, "", "recommendation_sample"], [8, 3, 1, "", "shuffle"], [8, 3, 1, "", "sort"], [8, 2, 1, "", "to_dict"], [8, 3, 1, "", "type"], [8, 3, 1, "", "uri"]], "music.model.playlist.Playlist.Meta": [[8, 3, 1, "", "collection_name"]], "music.model.playlist.Sort": [[8, 3, 1, "", "default"], [8, 3, 1, "", "release_date"], [8, 3, 1, "", "shuffle"]], "music.model.tag": [[8, 1, 1, "", "Tag"]], "music.model.tag.Tag": [[8, 1, 1, "", "Meta"], [8, 3, 1, "", "albums"], [8, 3, 1, "", "artists"], [8, 3, 1, "", "collection"], [8, 3, 1, "", "collection_name"], [8, 3, 1, "", "count"], [8, 3, 1, "", "last_updated"], [8, 3, 1, "", "name"], [8, 3, 1, "", "proportion"], [8, 3, 1, "", "tag_id"], [8, 3, 1, "", "time_objects"], [8, 2, 1, "", "to_dict"], [8, 3, 1, "", "total_time"], [8, 3, 1, "", "total_time_ms"], [8, 3, 1, "", "total_user_scrobbles"], [8, 3, 1, "", "tracks"], [8, 3, 1, "", "username"]], "music.model.tag.Tag.Meta": [[8, 3, 1, "", "collection_name"]], "music.model.user": [[8, 1, 1, "", "User"]], "music.model.user.User": [[8, 1, 1, "", "Meta"], [8, 3, 1, "", "access_token"], [8, 2, 1, "", "check_password"], [8, 3, 1, "", "collection"], [8, 3, 1, "", "collection_name"], [8, 3, 1, "", "email"], [8, 2, 1, "", "get_playlist"], [8, 2, 1, "", "get_playlists"], [8, 3, 1, "", "last_keygen"], [8, 3, 1, "", "last_login"], [8, 3, 1, "", "last_refreshed"], [8, 3, 1, "", "lastfm_username"], [8, 3, 1, "", "locked"], [8, 3, 1, "", "password"], [8, 3, 1, "", "refresh_token"], [8, 3, 1, "", "spotify_linked"], [8, 2, 1, "", "to_dict"], [8, 3, 1, "", "token_expiry"], [8, 3, 1, "", "type"], [8, 3, 1, "", "username"], [8, 3, 1, "", "validated"]], "music.model.user.User.Meta": [[8, 3, 1, "", "collection_name"]], "music.music": [[3, 4, 1, "", "create_app"]], "music.tasks": [[9, 0, 0, "-", "create_playlist"], [9, 0, 0, "-", "refresh_lastfm_stats"], [9, 0, 0, "-", "run_user_playlist"], [9, 0, 0, "-", "update_tag"]], "music.tasks.create_playlist": [[9, 4, 1, "", "create_playlist"]], "music.tasks.refresh_lastfm_stats": [[9, 4, 1, "", "refresh_lastfm_album_stats"], [9, 4, 1, "", "refresh_lastfm_artist_stats"], [9, 4, 1, "", "refresh_lastfm_track_stats"]], "music.tasks.run_user_playlist": [[9, 4, 1, "", "run_user_playlist"]], "music.tasks.update_tag": [[9, 4, 1, "", "update_tag"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "data", "Python data"]}, "titleterms": {"mixonom": [0, 2], "content": [0, 4, 5, 6, 7, 8, 9], "indic": 0, "tabl": 0, "admin": [1, 4], "script": 1, "modul": [2, 3, 4, 5, 6, 7, 8, 9], "flask": 3, "backend": 3, "music": [3, 4, 5, 6, 7, 8, 9], "root": 3, "api": 4, "decor": 4, "fm": 4, "player": 4, "spotfm": 4, "spotifi": 4, "tag": [4, 8], "auth": 5, "cloud": 6, "function": 6, "task": [6, 9], "db": 7, "databas": 7, "part_gener": 7, "model": 8, "config": 8, "playlist": 8, "user": 8, "create_playlist": 9, "refresh_lastfm_stat": 9, "run_user_playlist": 9, "update_tag": 9}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["index", "src/admin", "src/modules", "src/music", "src/music.api", "src/music.auth", "src/music.cloud", "src/music.db", "src/music.model", "src/music.tasks"], "filenames": ["index.rst", "src/admin.rst", "src/modules.rst", "src/music.rst", "src/music.api.rst", "src/music.auth.rst", "src/music.cloud.rst", "src/music.db.rst", "src/music.model.rst", "src/music.tasks.rst"], "titles": ["Mixonomer", "admin script", "Mixonomer Modules", "Flask Backend", "music.api", "music.auth", "music.cloud", "music.db", "music.model", "music.tasks"], "terms": {"py": [0, 1], "music": [0, 2], "api": [0, 2, 3], "auth": [0, 2, 3, 4], "cloud": [0, 1, 2, 3, 8], "db": [0, 2, 3], "model": [0, 2, 3, 7], "task": [0, 1, 2, 3, 8], "root": [0, 2], "modul": 0, "admin": [0, 2, 3], "script": 0, "doc": [0, 1], "folders_to_ignor": [0, 1], "run": [0, 1, 3, 6, 9], "test": [0, 1], "all": [0, 4, 6, 8], "flask": [0, 1, 2, 4], "backend": [0, 2], "i": 0, "web": 0, "app": [0, 1, 3, 4, 8, 9], "creat": [0, 3, 6, 9], "smart": [0, 7, 8, 9], "spotifi": [0, 2, 3, 7, 9], "playlist": [0, 1, 2, 3, 4, 6, 7, 9], "The": 0, "base": [0, 1, 7, 8], "spotframework": [0, 1, 7, 9], "fmframework": [0, 1, 7, 9], "interfac": [0, 7], "last": [0, 9], "fm": [0, 2, 3, 9], "current": 0, "host": 0, "googl": 0, "": [0, 6, 7, 8, 9], "platform": 0, "compos": 0, "server": 0, "fireo": [0, 8], "orm": [0, 7, 8], "layer": [0, 7, 8], "longer": 0, "dispatch": 0, "function": [0, 1, 2, 3, 7, 8, 9], "frontend": 0, "react": 0, "materi": 0, "ui": 0, "compon": [0, 1, 7], "axio": 0, "http": [0, 4, 5], "request": [0, 5], "index": 0, "search": 0, "page": [0, 5], "class": [1, 7, 8], "completekei": 1, "tab": 1, "stdin": 1, "none": [1, 4, 6, 7, 8, 9], "stdout": 1, "cmd": 1, "compile_frontend": 1, "compil": 1, "sass": 1, "css": 1, "npm": 1, "build": 1, "copy_main_fil": 1, "path": [1, 8], "copi": 1, "main": 1, "file": 1, "correspond": 1, "python": 1, "stage": 1, "deploy_funct": 1, "name": [1, 3, 6, 7, 8, 9], "timeout": 1, "int": [1, 6], "60": 1, "region": 1, "europ": 1, "west2": 1, "deploi": 1, "requir": 1, "environ": [1, 6], "variabl": 1, "do_app": 1, "arg": [1, 4, 8], "front": 1, "end": 1, "engin": 1, "do_cron_funct": 1, "background": 1, "includ": [1, 5, 6, 9], "cron": 1, "job": 1, "schedul": 1, "updat": [1, 6, 7, 8, 9], "action": 1, "run_all_playlist": 1, "run_all_playlist_stat": 1, "run_all_tag": 1, "do_doc": 1, "document": [1, 7], "us": [1, 7], "sphinx": 1, "do_exit": 1, "exit": 1, "do_main_group": 1, "primari": 1, "run_user_playlist": [1, 2, 3], "update_tag": [1, 2, 3, 6], "do_playlist": 1, "do_playlist_cron": 1, "do_playlist_stats_cron": 1, "do_prepare_local_stag": 1, "prepar": 1, "local": 1, "work": 1, "directori": 1, "deploy": 1, "static": 1, "sarsoolib": 1, "inject": 1, "do_pydepend": 1, "gener": [1, 3, 5, 9], "export": 1, "txt": 1, "from": [1, 7], "poetri": 1, "manifest": 1, "do_renam": 1, "renam": 1, "firestor": [1, 7, 8], "do_run": 1, "do_sass": 1, "do_set_project": 1, "set": [1, 8], "project": 1, "gcloud": 1, "consol": [1, 3], "do_tag": 1, "do_tags_cron": 1, "do_test": 1, "unit": 1, "do_watchsass": 1, "watch": 1, "argument": 1, "begin": 1, "sourc": 1, "folder": 1, "chang": 1, "export_filtered_depend": 1, "function_deploi": 1, "function_id": 1, "initi": 1, "command": 1, "paramet": [1, 4, 6, 7, 8, 9], "str": [1, 6, 7, 8, 9], "id": [1, 6], "intro": 1, "mixonom": [1, 3, 7], "help": 1, "spotfm": [1, 2, 3], "prompt": 1, "venv": 1, "git": 1, "idea": 1, "node_modul": 1, "content": [2, 3], "get_task": [2, 3, 4], "all_playlists_rout": [2, 3, 4], "all_users_rout": [2, 3, 4], "change_password": [2, 3, 4], "imag": [2, 3, 4], "playlist_get_delete_rout": [2, 3, 4], "playlist_post_put_rout": [2, 3, 4], "run_playlist": [2, 3, 4], "run_playlist_task": [2, 3, 4], "run_us": [2, 3, 4], "run_user_task": [2, 3, 4], "user_delete_rout": [2, 3, 4], "user_rout": [2, 3, 4], "decor": [2, 3], "admin_requir": [2, 3, 4], "check_dict": [2, 3, 4], "cloud_task": [2, 3, 4], "gae_cron": [2, 3, 4], "is_basic_auth": [2, 3, 4], "is_jwt_auth": [2, 3, 4], "is_logged_in": [2, 3, 4], "jwt_requir": [2, 3, 4], "lastfm_username_requir": [2, 3, 4], "login_or_basic_auth": [2, 3, 4], "login_or_jwt": [2, 3, 4], "login_requir": [2, 3, 4], "no_cach": [2, 3, 4], "no_locked_us": [2, 3, 4], "spotify_link_requir": [2, 3, 4], "validate_arg": [2, 3, 4], "validate_json": [2, 3, 4], "daily_scrobbl": [2, 3, 4], "player": [2, 3], "next_track": [2, 3, 4], "plai": [2, 3, 4], "shuffl": [2, 3, 4, 8], "volum": [2, 3, 4], "count": [2, 3, 4, 8], "playlist_refresh": [2, 3, 4], "run_playlist_album_task": [2, 3, 4], "run_playlist_artist_task": [2, 3, 4], "run_playlist_track_task": [2, 3, 4], "sort": [2, 3, 4, 8], "tag": [2, 3, 6, 9], "delete_tag": [2, 3, 4], "get_tag": [2, 3, 4], "post_tag": [2, 3, 4], "put_tag": [2, 3, 4], "run_tag_task": [2, 3, 4], "tag_refresh": [2, 3, 4], "tag_rout": [2, 3, 4], "deauth": [2, 3, 5], "jwt_token": [2, 3, 5], "login": [2, 3, 5], "logout": [2, 3, 5], "regist": [2, 3, 5], "token": [2, 3, 5], "offload_or_run_user_playlist": [2, 3, 6], "queue_run_user_playlist": [2, 3, 6], "run_user_playlist_funct": [2, 3, 6], "refresh_all_user_playlist_stat": [2, 3, 6], "refresh_playlist_task": [2, 3, 6], "refresh_user_playlist_stat": [2, 3, 6], "refresh_user_stats_task": [2, 3, 6], "run_user_playlist_task": [2, 3, 6], "update_all_user_playlist": [2, 3, 6], "update_all_user_tag": [2, 3, 6], "update_playlist": [2, 3, 6], "databas": [2, 3], "databaseus": [2, 3, 7], "get_authed_lastfm_network": [2, 3, 7], "get_authed_spotify_network": [2, 3, 7], "refresh_token_database_callback": [2, 3, 7], "part_gener": [2, 3], "partgener": [2, 3, 7], "config": [2, 3], "user": [2, 3, 4, 6, 7, 9], "create_playlist": [2, 3], "refresh_lastfm_stat": [2, 3], "refresh_lastfm_album_stat": [2, 3, 9], "refresh_lastfm_artist_stat": [2, 3, 9], "refresh_lastfm_track_stat": [2, 3, 9], "init_log": [2, 3], "create_app": [2, 3], "user_id": [3, 7], "get_recursive_part": [3, 7], "process_reference_by_nam": [3, 7], "process_reference_by_refer": [3, 7], "reset": [3, 5, 7], "meta": [3, 8], "collect": [3, 8], "collection_nam": [3, 8], "jwt_default_length": [3, 8], "jwt_max_length": [3, 8], "jwt_secret_kei": [3, 8], "last_fm_client_id": [3, 8], "playlist_cloud_operating_mod": [3, 8], "secret_kei": [3, 8], "spotify_client_id": [3, 8], "spotify_client_secret": [3, 8], "add_last_month": [3, 8], "add_this_month": [3, 8], "chart_limit": [3, 8], "chart_rang": [3, 8], "day_boundari": [3, 8], "description_overwrit": [3, 8], "description_suffix": [3, 8], "include_library_track": [3, 8], "include_recommend": [3, 8], "include_spotify_own": [3, 8], "last_upd": [3, 8], "lastfm_stat_album_count": [3, 8], "lastfm_stat_album_perc": [3, 8], "lastfm_stat_artist_count": [3, 8], "lastfm_stat_artist_perc": [3, 8], "lastfm_stat_count": [3, 8], "lastfm_stat_last_refresh": [3, 8], "lastfm_stat_perc": [3, 8], "mutable_kei": [3, 8], "part": [3, 8], "playlist_refer": [3, 8], "recommendation_sampl": [3, 8], "to_dict": [3, 8], "type": [3, 4, 5, 7, 8, 9], "uri": [3, 8, 9], "default": [3, 4, 6, 8, 9], "release_d": [3, 8], "album": [3, 8], "artist": [3, 8], "proport": [3, 8], "tag_id": [3, 4, 6, 8], "time_object": [3, 8], "total_tim": [3, 8], "total_time_m": [3, 8], "total_user_scrobbl": [3, 8], "track": [3, 8], "usernam": [3, 6, 7, 8, 9], "access_token": [3, 7, 8], "check_password": [3, 8], "email": [3, 8], "get_playlist": [3, 8], "last_keygen": [3, 8], "last_login": [3, 8], "last_refresh": [3, 8], "lastfm_usernam": [3, 8], "lock": [3, 8], "password": [3, 5, 8], "refresh_token": [3, 7, 8], "spotify_link": [3, 8], "token_expiri": [3, 8], "valid": [3, 8], "contain": [3, 8], "top": 3, "level": [3, 8], "load": [3, 4], "blueprint": [3, 4], "initialis": 3, "log": 3, "stack": 3, "fals": 3, "retriev": [3, 4, 5, 7, 9], "readi": 3, "return": [3, 4, 5, 7, 8, 9], "endpoint": [4, 5], "given": [4, 6, 7], "option": [4, 6, 7, 8, 9], "descript": [4, 8, 9], "respons": [4, 5], "func": 4, "request_param": 4, "expected_arg": 4, "kwarg": [4, 8], "secur": 5, "relat": 5, "jwt": 5, "post": 5, "rout": 5, "allow": 5, "html": 5, "submiss": 5, "result": 5, "home": 5, "redirect": 5, "get": [5, 7, 8], "infrastuctur": 6, "code": 6, "hand": 6, "off": 6, "playlist_nam": [6, 8, 9], "queue": 6, "serverless": 6, "subject": [6, 7, 8, 9], "gcp": 6, "long": [6, 9], "oper": [6, 8, 9], "stat": 6, "refresh": 6, "delai": 6, "0": 6, "second": 6, "execut": 6, "depend": [6, 7], "asid": 7, "client_id": 7, "client_secret": 7, "networkus": 7, "ad": 7, "network": [7, 9], "an": [7, 8], "authent": 7, "fmnetwork": 7, "spotifynetwork": 7, "callback": 7, "handl": 7, "when": [7, 9], "credemti": 7, "store": 7, "newli": 7, "credenti": 7, "object": [7, 8, 9], "resolv": 7, "other": 7, "referenc": 7, "list": [7, 8], "recurs": 7, "ref": 7, "documentrefer": 7, "resolut": 7, "walk": 7, "intern": 7, "state": 7, "data": 8, "servic": 8, "structur": 8, "kei": 8, "correct": 8, "manag": 8, "determin": 8, "whether": 8, "ar": 8, "done": 8, "convert": 8, "dict": 8, "valu": 8, "enum": 8, "enumer": 8, "1": 8, "3": 8, "2": 8, "spotify_us": 8, "single_return": 8, "true": 8, "raise_error": 8, "case": 8, "sensit": 8, "Will": 8, "exact": 8, "match": 8, "possibl": 8, "otherwis": 8, "first": 8, "insensit": 8, "bool": 8, "best": 8, "found": 8, "rais": [8, 9], "nameerror": [8, 9], "noth": 8, "If": 8, "fullplaylist": 9, "new": 9, "account": 9, "For": 9, "spotnet": 9, "fmnet": 9, "upad": 9, "spotnetwork": 9, "No": 9, "provid": 9, "attributeerror": 9, "ha": 9, "avail": 9, "e": 9, "error": 9}, "objects": {"": [[1, 0, 0, "-", "admin"], [3, 0, 0, "-", "music"]], "admin": [[1, 1, 1, "", "Admin"], [1, 4, 1, "", "docs"], [1, 5, 1, "", "folders_to_ignore"], [1, 4, 1, "", "run"], [1, 4, 1, "", "test"]], "admin.Admin": [[1, 2, 1, "", "compile_frontend"], [1, 2, 1, "", "copy_main_file"], [1, 2, 1, "", "deploy_function"], [1, 2, 1, "", "do_app"], [1, 2, 1, "", "do_cron_functions"], [1, 2, 1, "", "do_docs"], [1, 2, 1, "", "do_exit"], [1, 2, 1, "", "do_main_group"], [1, 2, 1, "", "do_playlist"], [1, 2, 1, "", "do_playlist_cron"], [1, 2, 1, "", "do_playlist_stats_cron"], [1, 2, 1, "", "do_prepare_local_stage"], [1, 2, 1, "", "do_pydepend"], [1, 2, 1, "", "do_rename"], [1, 2, 1, "", "do_run"], [1, 2, 1, "", "do_sass"], [1, 2, 1, "", "do_set_project"], [1, 2, 1, "", "do_tag"], [1, 2, 1, "", "do_tags_cron"], [1, 2, 1, "", "do_test"], [1, 2, 1, "", "do_watchsass"], [1, 2, 1, "", "export_filtered_dependencies"], [1, 2, 1, "", "function_deploy"], [1, 3, 1, "", "intro"], [1, 3, 1, "", "locals"], [1, 3, 1, "", "prompt"]], "music": [[4, 0, 0, "-", "api"], [5, 0, 0, "-", "auth"], [6, 0, 0, "-", "cloud"], [7, 0, 0, "-", "db"], [3, 4, 1, "", "init_log"], [8, 0, 0, "-", "model"], [3, 0, 0, "-", "music"], [9, 0, 0, "-", "tasks"]], "music.api": [[4, 0, 0, "-", "admin"], [4, 0, 0, "-", "api"], [4, 0, 0, "-", "decorators"], [4, 0, 0, "-", "fm"], [4, 0, 0, "-", "player"], [4, 0, 0, "-", "spotfm"], [4, 0, 0, "-", "spotify"], [4, 0, 0, "-", "tag"]], "music.api.admin": [[4, 4, 1, "", "get_tasks"]], "music.api.api": [[4, 4, 1, "", "all_playlists_route"], [4, 4, 1, "", "all_users_route"], [4, 4, 1, "", "change_password"], [4, 4, 1, "", "image"], [4, 4, 1, "", "playlist_get_delete_route"], [4, 4, 1, "", "playlist_post_put_route"], [4, 4, 1, "", "run_playlist"], [4, 4, 1, "", "run_playlist_task"], [4, 4, 1, "", "run_user"], [4, 4, 1, "", "run_user_task"], [4, 4, 1, "", "run_users"], [4, 4, 1, "", "user_delete_route"], [4, 4, 1, "", "user_route"]], "music.api.decorators": [[4, 4, 1, "", "admin_required"], [4, 4, 1, "", "check_dict"], [4, 4, 1, "", "cloud_task"], [4, 4, 1, "", "gae_cron"], [4, 4, 1, "", "is_basic_authed"], [4, 4, 1, "", "is_jwt_authed"], [4, 4, 1, "", "is_logged_in"], [4, 4, 1, "", "jwt_required"], [4, 4, 1, "", "lastfm_username_required"], [4, 4, 1, "", "login_or_basic_auth"], [4, 4, 1, "", "login_or_jwt"], [4, 4, 1, "", "login_required"], [4, 4, 1, "", "no_cache"], [4, 4, 1, "", "no_locked_users"], [4, 4, 1, "", "spotify_link_required"], [4, 4, 1, "", "validate_args"], [4, 4, 1, "", "validate_json"]], "music.api.fm": [[4, 4, 1, "", "daily_scrobbles"]], "music.api.player": [[4, 4, 1, "", "next_track"], [4, 4, 1, "", "play"], [4, 4, 1, "", "shuffle"], [4, 4, 1, "", "volume"]], "music.api.spotfm": [[4, 4, 1, "", "count"], [4, 4, 1, "", "playlist_refresh"], [4, 4, 1, "", "run_playlist_album_task"], [4, 4, 1, "", "run_playlist_artist_task"], [4, 4, 1, "", "run_playlist_track_task"], [4, 4, 1, "", "run_user"], [4, 4, 1, "", "run_user_task"], [4, 4, 1, "", "run_users"]], "music.api.spotify": [[4, 4, 1, "", "sort"]], "music.api.tag": [[4, 4, 1, "", "delete_tag"], [4, 4, 1, "", "get_tag"], [4, 4, 1, "", "post_tag"], [4, 4, 1, "", "put_tag"], [4, 4, 1, "", "run_tag_task"], [4, 4, 1, "", "tag_refresh"], [4, 4, 1, "", "tag_route"], [4, 4, 1, "", "tags"]], "music.auth": [[5, 0, 0, "-", "auth"]], "music.auth.auth": [[5, 4, 1, "", "auth"], [5, 4, 1, "", "deauth"], [5, 4, 1, "", "jwt_token"], [5, 4, 1, "", "login"], [5, 4, 1, "", "logout"], [5, 4, 1, "", "register"], [5, 4, 1, "", "token"]], "music.cloud": [[6, 0, 0, "-", "function"], [6, 4, 1, "", "offload_or_run_user_playlist"], [6, 4, 1, "", "queue_run_user_playlist"], [6, 0, 0, "-", "tasks"]], "music.cloud.function": [[6, 4, 1, "", "run_user_playlist_function"], [6, 4, 1, "", "update_tag"]], "music.cloud.tasks": [[6, 4, 1, "", "refresh_all_user_playlist_stats"], [6, 4, 1, "", "refresh_playlist_task"], [6, 4, 1, "", "refresh_user_playlist_stats"], [6, 4, 1, "", "refresh_user_stats_task"], [6, 4, 1, "", "run_user_playlist_task"], [6, 4, 1, "", "update_all_user_playlists"], [6, 4, 1, "", "update_all_user_tags"], [6, 4, 1, "", "update_playlists"]], "music.db": [[7, 0, 0, "-", "database"], [7, 0, 0, "-", "part_generator"]], "music.db.database": [[7, 1, 1, "", "DatabaseUser"], [7, 4, 1, "", "get_authed_lastfm_network"], [7, 4, 1, "", "get_authed_spotify_network"], [7, 4, 1, "", "refresh_token_database_callback"]], "music.db.database.DatabaseUser": [[7, 3, 1, "", "user_id"]], "music.db.part_generator": [[7, 1, 1, "", "PartGenerator"]], "music.db.part_generator.PartGenerator": [[7, 2, 1, "", "get_recursive_parts"], [7, 2, 1, "", "process_reference_by_name"], [7, 2, 1, "", "process_reference_by_reference"], [7, 2, 1, "", "reset"]], "music.model": [[8, 0, 0, "-", "config"], [8, 0, 0, "-", "playlist"], [8, 0, 0, "-", "tag"], [8, 0, 0, "-", "user"]], "music.model.config": [[8, 1, 1, "", "Config"]], "music.model.config.Config": [[8, 1, 1, "", "Meta"], [8, 3, 1, "", "collection"], [8, 3, 1, "", "collection_name"], [8, 3, 1, "", "jwt_default_length"], [8, 3, 1, "", "jwt_max_length"], [8, 3, 1, "", "jwt_secret_key"], [8, 3, 1, "", "last_fm_client_id"], [8, 3, 1, "", "playlist_cloud_operating_mode"], [8, 3, 1, "", "secret_key"], [8, 3, 1, "", "spotify_client_id"], [8, 3, 1, "", "spotify_client_secret"]], "music.model.config.Config.Meta": [[8, 3, 1, "", "collection_name"]], "music.model.playlist": [[8, 1, 1, "", "Playlist"], [8, 1, 1, "", "Sort"]], "music.model.playlist.Playlist": [[8, 1, 1, "", "Meta"], [8, 3, 1, "", "add_last_month"], [8, 3, 1, "", "add_this_month"], [8, 3, 1, "", "chart_limit"], [8, 3, 1, "", "chart_range"], [8, 3, 1, "", "collection"], [8, 3, 1, "", "collection_name"], [8, 3, 1, "", "day_boundary"], [8, 3, 1, "", "description_overwrite"], [8, 3, 1, "", "description_suffix"], [8, 3, 1, "", "include_library_tracks"], [8, 3, 1, "", "include_recommendations"], [8, 3, 1, "", "include_spotify_owned"], [8, 3, 1, "", "last_updated"], [8, 3, 1, "", "lastfm_stat_album_count"], [8, 3, 1, "", "lastfm_stat_album_percent"], [8, 3, 1, "", "lastfm_stat_artist_count"], [8, 3, 1, "", "lastfm_stat_artist_percent"], [8, 3, 1, "", "lastfm_stat_count"], [8, 3, 1, "", "lastfm_stat_last_refresh"], [8, 3, 1, "", "lastfm_stat_percent"], [8, 3, 1, "", "mutable_keys"], [8, 3, 1, "", "name"], [8, 3, 1, "", "parts"], [8, 3, 1, "", "playlist_references"], [8, 3, 1, "", "recommendation_sample"], [8, 3, 1, "", "shuffle"], [8, 3, 1, "", "sort"], [8, 2, 1, "", "to_dict"], [8, 3, 1, "", "type"], [8, 3, 1, "", "uri"]], "music.model.playlist.Playlist.Meta": [[8, 3, 1, "", "collection_name"]], "music.model.playlist.Sort": [[8, 3, 1, "", "default"], [8, 3, 1, "", "release_date"], [8, 3, 1, "", "shuffle"]], "music.model.tag": [[8, 1, 1, "", "Tag"]], "music.model.tag.Tag": [[8, 1, 1, "", "Meta"], [8, 3, 1, "", "albums"], [8, 3, 1, "", "artists"], [8, 3, 1, "", "collection"], [8, 3, 1, "", "collection_name"], [8, 3, 1, "", "count"], [8, 3, 1, "", "last_updated"], [8, 3, 1, "", "name"], [8, 3, 1, "", "proportion"], [8, 3, 1, "", "tag_id"], [8, 3, 1, "", "time_objects"], [8, 2, 1, "", "to_dict"], [8, 3, 1, "", "total_time"], [8, 3, 1, "", "total_time_ms"], [8, 3, 1, "", "total_user_scrobbles"], [8, 3, 1, "", "tracks"], [8, 3, 1, "", "username"]], "music.model.tag.Tag.Meta": [[8, 3, 1, "", "collection_name"]], "music.model.user": [[8, 1, 1, "", "User"]], "music.model.user.User": [[8, 1, 1, "", "Meta"], [8, 3, 1, "", "access_token"], [8, 2, 1, "", "check_password"], [8, 3, 1, "", "collection"], [8, 3, 1, "", "collection_name"], [8, 3, 1, "", "email"], [8, 2, 1, "", "get_playlist"], [8, 2, 1, "", "get_playlists"], [8, 3, 1, "", "last_keygen"], [8, 3, 1, "", "last_login"], [8, 3, 1, "", "last_refreshed"], [8, 3, 1, "", "lastfm_username"], [8, 3, 1, "", "locked"], [8, 3, 1, "", "password"], [8, 3, 1, "", "refresh_token"], [8, 3, 1, "", "spotify_linked"], [8, 2, 1, "", "to_dict"], [8, 3, 1, "", "token_expiry"], [8, 3, 1, "", "type"], [8, 3, 1, "", "username"], [8, 3, 1, "", "validated"]], "music.model.user.User.Meta": [[8, 3, 1, "", "collection_name"]], "music.music": [[3, 4, 1, "", "create_app"]], "music.tasks": [[9, 0, 0, "-", "create_playlist"], [9, 0, 0, "-", "refresh_lastfm_stats"], [9, 0, 0, "-", "run_user_playlist"], [9, 0, 0, "-", "update_tag"]], "music.tasks.create_playlist": [[9, 4, 1, "", "create_playlist"]], "music.tasks.refresh_lastfm_stats": [[9, 4, 1, "", "refresh_lastfm_album_stats"], [9, 4, 1, "", "refresh_lastfm_artist_stats"], [9, 4, 1, "", "refresh_lastfm_track_stats"]], "music.tasks.run_user_playlist": [[9, 4, 1, "", "run_user_playlist"]], "music.tasks.update_tag": [[9, 4, 1, "", "update_tag"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "data", "Python data"]}, "titleterms": {"mixonom": [0, 2], "content": [0, 4, 5, 6, 7, 8, 9], "indic": 0, "tabl": 0, "admin": [1, 4], "script": 1, "modul": [2, 3, 4, 5, 6, 7, 8, 9], "flask": 3, "backend": 3, "music": [3, 4, 5, 6, 7, 8, 9], "root": 3, "api": 4, "decor": 4, "fm": 4, "player": 4, "spotfm": 4, "spotifi": 4, "tag": [4, 8], "auth": 5, "cloud": 6, "function": 6, "task": [6, 9], "db": 7, "databas": 7, "part_gener": 7, "model": 8, "config": 8, "playlist": 8, "user": 8, "create_playlist": 9, "refresh_lastfm_stat": 9, "run_user_playlist": 9, "update_tag": 9}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Mixonomer": [[0, "mixonomer"], [0, "id2"]], "Contents:": [[0, null]], "Indices and tables": [[0, "indices-and-tables"]], "admin script": [[1, "module-admin"]], "Mixonomer Modules": [[2, "mixonomer-modules"]], "Flask Backend": [[3, "flask-backend"]], "music Root Module": [[3, "module-music"]], "music.api": [[4, "music-api"]], "Module contents": [[4, "module-music.api"], [5, "module-music.auth"], [6, "module-music.cloud"], [7, "module-music.db"], [8, "module-music.model"], [9, "module-music.tasks"]], "api.admin": [[4, "module-music.api.admin"]], "api.api": [[4, "module-music.api.api"]], "api.decorators": [[4, "module-music.api.decorators"]], "api.fm": [[4, "module-music.api.fm"]], "api.player": [[4, "module-music.api.player"]], "api.spotfm": [[4, "module-music.api.spotfm"]], "api.spotify": [[4, "module-music.api.spotify"]], "api.tag": [[4, "module-music.api.tag"]], "music.auth": [[5, "music-auth"]], "auth.auth": [[5, "module-music.auth.auth"]], "music.cloud": [[6, "music-cloud"]], "cloud.function": [[6, "module-music.cloud.function"]], "cloud.tasks": [[6, "module-music.cloud.tasks"]], "music.db": [[7, "music-db"]], "db.database": [[7, "module-music.db.database"]], "db.part_generator": [[7, "module-music.db.part_generator"]], "music.model": [[8, "music-model"]], "model.config": [[8, "module-music.model.config"]], "model.playlist": [[8, "module-music.model.playlist"]], "model.tag": [[8, "module-music.model.tag"]], "model.user": [[8, "module-music.model.user"]], "music.tasks": [[9, "music-tasks"]], "tasks.create_playlist": [[9, "module-music.tasks.create_playlist"]], "tasks.refresh_lastfm_stats": [[9, "module-music.tasks.refresh_lastfm_stats"]], "tasks.run_user_playlist": [[9, "module-music.tasks.run_user_playlist"]], "tasks.update_tag": [[9, "module-music.tasks.update_tag"]]}, "indexentries": {"admin (class in admin)": [[1, "admin.Admin"]], "admin": [[1, "module-admin"]], "compile_frontend() (admin.admin method)": [[1, "admin.Admin.compile_frontend"]], "copy_main_file() (admin.admin method)": [[1, "admin.Admin.copy_main_file"]], "deploy_function() (admin.admin method)": [[1, "admin.Admin.deploy_function"]], "do_app() (admin.admin method)": [[1, "admin.Admin.do_app"]], "do_cron_functions() (admin.admin method)": [[1, "admin.Admin.do_cron_functions"]], "do_docs() (admin.admin method)": [[1, "admin.Admin.do_docs"]], "do_exit() (admin.admin method)": [[1, "admin.Admin.do_exit"]], "do_main_group() (admin.admin method)": [[1, "admin.Admin.do_main_group"]], "do_playlist() (admin.admin method)": [[1, "admin.Admin.do_playlist"]], "do_playlist_cron() (admin.admin method)": [[1, "admin.Admin.do_playlist_cron"]], "do_playlist_stats_cron() (admin.admin method)": [[1, "admin.Admin.do_playlist_stats_cron"]], "do_prepare_local_stage() (admin.admin method)": [[1, "admin.Admin.do_prepare_local_stage"]], "do_pydepend() (admin.admin method)": [[1, "admin.Admin.do_pydepend"]], "do_rename() (admin.admin method)": [[1, "admin.Admin.do_rename"]], "do_run() (admin.admin method)": [[1, "admin.Admin.do_run"]], "do_sass() (admin.admin method)": [[1, "admin.Admin.do_sass"]], "do_set_project() (admin.admin method)": [[1, "admin.Admin.do_set_project"]], "do_tag() (admin.admin method)": [[1, "admin.Admin.do_tag"]], "do_tags_cron() (admin.admin method)": [[1, "admin.Admin.do_tags_cron"]], "do_test() (admin.admin method)": [[1, "admin.Admin.do_test"]], "do_watchsass() (admin.admin method)": [[1, "admin.Admin.do_watchsass"]], "docs() (in module admin)": [[1, "admin.docs"]], "export_filtered_dependencies() (admin.admin method)": [[1, "admin.Admin.export_filtered_dependencies"]], "folders_to_ignore (in module admin)": [[1, "admin.folders_to_ignore"]], "function_deploy() (admin.admin method)": [[1, "admin.Admin.function_deploy"]], "intro (admin.admin attribute)": [[1, "admin.Admin.intro"]], "locals (admin.admin attribute)": [[1, "admin.Admin.locals"]], "module": [[1, "module-admin"], [3, "module-music"], [3, "module-music.music"], [4, "module-music.api"], [4, "module-music.api.admin"], [4, "module-music.api.api"], [4, "module-music.api.decorators"], [4, "module-music.api.fm"], [4, "module-music.api.player"], [4, "module-music.api.spotfm"], [4, "module-music.api.spotify"], [4, "module-music.api.tag"], [5, "module-music.auth"], [5, "module-music.auth.auth"], [6, "module-music.cloud"], [6, "module-music.cloud.function"], [6, "module-music.cloud.tasks"], [7, "module-music.db"], [7, "module-music.db.database"], [7, "module-music.db.part_generator"], [8, "module-music.model"], [8, "module-music.model.config"], [8, "module-music.model.playlist"], [8, "module-music.model.tag"], [8, "module-music.model.user"], [9, "module-music.tasks"], [9, "module-music.tasks.create_playlist"], [9, "module-music.tasks.refresh_lastfm_stats"], [9, "module-music.tasks.run_user_playlist"], [9, "module-music.tasks.update_tag"]], "prompt (admin.admin attribute)": [[1, "admin.Admin.prompt"]], "run() (in module admin)": [[1, "admin.run"]], "test() (in module admin)": [[1, "admin.test"]], "create_app() (in module music.music)": [[3, "music.music.create_app"]], "init_log() (in module music)": [[3, "music.init_log"]], "music": [[3, "module-music"]], "music.music": [[3, "module-music.music"]], "admin_required() (in module music.api.decorators)": [[4, "music.api.decorators.admin_required"]], "all_playlists_route() (in module music.api.api)": [[4, "music.api.api.all_playlists_route"]], "all_users_route() (in module music.api.api)": [[4, "music.api.api.all_users_route"]], "change_password() (in module music.api.api)": [[4, "music.api.api.change_password"]], "check_dict() (in module music.api.decorators)": [[4, "music.api.decorators.check_dict"]], "cloud_task() (in module music.api.decorators)": [[4, "music.api.decorators.cloud_task"]], "count() (in module music.api.spotfm)": [[4, "music.api.spotfm.count"]], "daily_scrobbles() (in module music.api.fm)": [[4, "music.api.fm.daily_scrobbles"]], "delete_tag() (in module music.api.tag)": [[4, "music.api.tag.delete_tag"]], "gae_cron() (in module music.api.decorators)": [[4, "music.api.decorators.gae_cron"]], "get_tag() (in module music.api.tag)": [[4, "music.api.tag.get_tag"]], "get_tasks() (in module music.api.admin)": [[4, "music.api.admin.get_tasks"]], "image() (in module music.api.api)": [[4, "music.api.api.image"]], "is_basic_authed() (in module music.api.decorators)": [[4, "music.api.decorators.is_basic_authed"]], "is_jwt_authed() (in module music.api.decorators)": [[4, "music.api.decorators.is_jwt_authed"]], "is_logged_in() (in module music.api.decorators)": [[4, "music.api.decorators.is_logged_in"]], "jwt_required() (in module music.api.decorators)": [[4, "music.api.decorators.jwt_required"]], "lastfm_username_required() (in module music.api.decorators)": [[4, "music.api.decorators.lastfm_username_required"]], "login_or_basic_auth() (in module music.api.decorators)": [[4, "music.api.decorators.login_or_basic_auth"]], "login_or_jwt() (in module music.api.decorators)": [[4, "music.api.decorators.login_or_jwt"]], "login_required() (in module music.api.decorators)": [[4, "music.api.decorators.login_required"]], "music.api": [[4, "module-music.api"]], "music.api.admin": [[4, "module-music.api.admin"]], "music.api.api": [[4, "module-music.api.api"]], "music.api.decorators": [[4, "module-music.api.decorators"]], "music.api.fm": [[4, "module-music.api.fm"]], "music.api.player": [[4, "module-music.api.player"]], "music.api.spotfm": [[4, "module-music.api.spotfm"]], "music.api.spotify": [[4, "module-music.api.spotify"]], "music.api.tag": [[4, "module-music.api.tag"]], "next_track() (in module music.api.player)": [[4, "music.api.player.next_track"]], "no_cache() (in module music.api.decorators)": [[4, "music.api.decorators.no_cache"]], "no_locked_users() (in module music.api.decorators)": [[4, "music.api.decorators.no_locked_users"]], "play() (in module music.api.player)": [[4, "music.api.player.play"]], "playlist_get_delete_route() (in module music.api.api)": [[4, "music.api.api.playlist_get_delete_route"]], "playlist_post_put_route() (in module music.api.api)": [[4, "music.api.api.playlist_post_put_route"]], "playlist_refresh() (in module music.api.spotfm)": [[4, "music.api.spotfm.playlist_refresh"]], "post_tag() (in module music.api.tag)": [[4, "music.api.tag.post_tag"]], "put_tag() (in module music.api.tag)": [[4, "music.api.tag.put_tag"]], "run_playlist() (in module music.api.api)": [[4, "music.api.api.run_playlist"]], "run_playlist_album_task() (in module music.api.spotfm)": [[4, "music.api.spotfm.run_playlist_album_task"]], "run_playlist_artist_task() (in module music.api.spotfm)": [[4, "music.api.spotfm.run_playlist_artist_task"]], "run_playlist_task() (in module music.api.api)": [[4, "music.api.api.run_playlist_task"]], "run_playlist_track_task() (in module music.api.spotfm)": [[4, "music.api.spotfm.run_playlist_track_task"]], "run_tag_task() (in module music.api.tag)": [[4, "music.api.tag.run_tag_task"]], "run_user() (in module music.api.api)": [[4, "music.api.api.run_user"]], "run_user() (in module music.api.spotfm)": [[4, "music.api.spotfm.run_user"]], "run_user_task() (in module music.api.api)": [[4, "music.api.api.run_user_task"]], "run_user_task() (in module music.api.spotfm)": [[4, "music.api.spotfm.run_user_task"]], "run_users() (in module music.api.api)": [[4, "music.api.api.run_users"]], "run_users() (in module music.api.spotfm)": [[4, "music.api.spotfm.run_users"]], "shuffle() (in module music.api.player)": [[4, "music.api.player.shuffle"]], "sort() (in module music.api.spotify)": [[4, "music.api.spotify.sort"]], "spotify_link_required() (in module music.api.decorators)": [[4, "music.api.decorators.spotify_link_required"]], "tag_refresh() (in module music.api.tag)": [[4, "music.api.tag.tag_refresh"]], "tag_route() (in module music.api.tag)": [[4, "music.api.tag.tag_route"]], "tags() (in module music.api.tag)": [[4, "music.api.tag.tags"]], "user_delete_route() (in module music.api.api)": [[4, "music.api.api.user_delete_route"]], "user_route() (in module music.api.api)": [[4, "music.api.api.user_route"]], "validate_args() (in module music.api.decorators)": [[4, "music.api.decorators.validate_args"]], "validate_json() (in module music.api.decorators)": [[4, "music.api.decorators.validate_json"]], "volume() (in module music.api.player)": [[4, "music.api.player.volume"]], "auth() (in module music.auth.auth)": [[5, "music.auth.auth.auth"]], "deauth() (in module music.auth.auth)": [[5, "music.auth.auth.deauth"]], "jwt_token() (in module music.auth.auth)": [[5, "music.auth.auth.jwt_token"]], "login() (in module music.auth.auth)": [[5, "music.auth.auth.login"]], "logout() (in module music.auth.auth)": [[5, "music.auth.auth.logout"]], "music.auth": [[5, "module-music.auth"]], "music.auth.auth": [[5, "module-music.auth.auth"]], "register() (in module music.auth.auth)": [[5, "music.auth.auth.register"]], "token() (in module music.auth.auth)": [[5, "music.auth.auth.token"]], "music.cloud": [[6, "module-music.cloud"]], "music.cloud.function": [[6, "module-music.cloud.function"]], "music.cloud.tasks": [[6, "module-music.cloud.tasks"]], "offload_or_run_user_playlist() (in module music.cloud)": [[6, "music.cloud.offload_or_run_user_playlist"]], "queue_run_user_playlist() (in module music.cloud)": [[6, "music.cloud.queue_run_user_playlist"]], "refresh_all_user_playlist_stats() (in module music.cloud.tasks)": [[6, "music.cloud.tasks.refresh_all_user_playlist_stats"]], "refresh_playlist_task() (in module music.cloud.tasks)": [[6, "music.cloud.tasks.refresh_playlist_task"]], "refresh_user_playlist_stats() (in module music.cloud.tasks)": [[6, "music.cloud.tasks.refresh_user_playlist_stats"]], "refresh_user_stats_task() (in module music.cloud.tasks)": [[6, "music.cloud.tasks.refresh_user_stats_task"]], "run_user_playlist_function() (in module music.cloud.function)": [[6, "music.cloud.function.run_user_playlist_function"]], "run_user_playlist_task() (in module music.cloud.tasks)": [[6, "music.cloud.tasks.run_user_playlist_task"]], "update_all_user_playlists() (in module music.cloud.tasks)": [[6, "music.cloud.tasks.update_all_user_playlists"]], "update_all_user_tags() (in module music.cloud.tasks)": [[6, "music.cloud.tasks.update_all_user_tags"]], "update_playlists() (in module music.cloud.tasks)": [[6, "music.cloud.tasks.update_playlists"]], "update_tag() (in module music.cloud.function)": [[6, "music.cloud.function.update_tag"]], "databaseuser (class in music.db.database)": [[7, "music.db.database.DatabaseUser"]], "partgenerator (class in music.db.part_generator)": [[7, "music.db.part_generator.PartGenerator"]], "get_authed_lastfm_network() (in module music.db.database)": [[7, "music.db.database.get_authed_lastfm_network"]], "get_authed_spotify_network() (in module music.db.database)": [[7, "music.db.database.get_authed_spotify_network"]], "get_recursive_parts() (music.db.part_generator.partgenerator method)": [[7, "music.db.part_generator.PartGenerator.get_recursive_parts"]], "music.db": [[7, "module-music.db"]], "music.db.database": [[7, "module-music.db.database"]], "music.db.part_generator": [[7, "module-music.db.part_generator"]], "process_reference_by_name() (music.db.part_generator.partgenerator method)": [[7, "music.db.part_generator.PartGenerator.process_reference_by_name"]], "process_reference_by_reference() (music.db.part_generator.partgenerator method)": [[7, "music.db.part_generator.PartGenerator.process_reference_by_reference"]], "refresh_token_database_callback() (in module music.db.database)": [[7, "music.db.database.refresh_token_database_callback"]], "reset() (music.db.part_generator.partgenerator method)": [[7, "music.db.part_generator.PartGenerator.reset"]], "user_id (music.db.database.databaseuser attribute)": [[7, "music.db.database.DatabaseUser.user_id"]], "config (class in music.model.config)": [[8, "music.model.config.Config"]], "config.meta (class in music.model.config)": [[8, "music.model.config.Config.Meta"]], "playlist (class in music.model.playlist)": [[8, "music.model.playlist.Playlist"]], "playlist.meta (class in music.model.playlist)": [[8, "music.model.playlist.Playlist.Meta"]], "sort (class in music.model.playlist)": [[8, "music.model.playlist.Sort"]], "tag (class in music.model.tag)": [[8, "music.model.tag.Tag"]], "tag.meta (class in music.model.tag)": [[8, "music.model.tag.Tag.Meta"]], "user (class in music.model.user)": [[8, "music.model.user.User"]], "user.meta (class in music.model.user)": [[8, "music.model.user.User.Meta"]], "access_token (music.model.user.user attribute)": [[8, "music.model.user.User.access_token"]], "add_last_month (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.add_last_month"]], "add_this_month (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.add_this_month"]], "albums (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.albums"]], "artists (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.artists"]], "chart_limit (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.chart_limit"]], "chart_range (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.chart_range"]], "check_password() (music.model.user.user method)": [[8, "music.model.user.User.check_password"]], "collection (music.model.config.config attribute)": [[8, "music.model.config.Config.collection"]], "collection (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.collection"]], "collection (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.collection"]], "collection (music.model.user.user attribute)": [[8, "music.model.user.User.collection"]], "collection_name (music.model.config.config attribute)": [[8, "music.model.config.Config.collection_name"]], "collection_name (music.model.config.config.meta attribute)": [[8, "music.model.config.Config.Meta.collection_name"]], "collection_name (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.collection_name"]], "collection_name (music.model.playlist.playlist.meta attribute)": [[8, "music.model.playlist.Playlist.Meta.collection_name"]], "collection_name (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.collection_name"]], "collection_name (music.model.tag.tag.meta attribute)": [[8, "music.model.tag.Tag.Meta.collection_name"]], "collection_name (music.model.user.user attribute)": [[8, "music.model.user.User.collection_name"]], "collection_name (music.model.user.user.meta attribute)": [[8, "music.model.user.User.Meta.collection_name"]], "count (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.count"]], "day_boundary (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.day_boundary"]], "default (music.model.playlist.sort attribute)": [[8, "music.model.playlist.Sort.default"]], "description_overwrite (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.description_overwrite"]], "description_suffix (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.description_suffix"]], "email (music.model.user.user attribute)": [[8, "music.model.user.User.email"]], "get_playlist() (music.model.user.user method)": [[8, "music.model.user.User.get_playlist"]], "get_playlists() (music.model.user.user method)": [[8, "music.model.user.User.get_playlists"]], "include_library_tracks (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.include_library_tracks"]], "include_recommendations (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.include_recommendations"]], "include_spotify_owned (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.include_spotify_owned"]], "jwt_default_length (music.model.config.config attribute)": [[8, "music.model.config.Config.jwt_default_length"]], "jwt_max_length (music.model.config.config attribute)": [[8, "music.model.config.Config.jwt_max_length"]], "jwt_secret_key (music.model.config.config attribute)": [[8, "music.model.config.Config.jwt_secret_key"]], "last_fm_client_id (music.model.config.config attribute)": [[8, "music.model.config.Config.last_fm_client_id"]], "last_keygen (music.model.user.user attribute)": [[8, "music.model.user.User.last_keygen"]], "last_login (music.model.user.user attribute)": [[8, "music.model.user.User.last_login"]], "last_refreshed (music.model.user.user attribute)": [[8, "music.model.user.User.last_refreshed"]], "last_updated (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.last_updated"]], "last_updated (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.last_updated"]], "lastfm_stat_album_count (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.lastfm_stat_album_count"]], "lastfm_stat_album_percent (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.lastfm_stat_album_percent"]], "lastfm_stat_artist_count (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.lastfm_stat_artist_count"]], "lastfm_stat_artist_percent (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.lastfm_stat_artist_percent"]], "lastfm_stat_count (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.lastfm_stat_count"]], "lastfm_stat_last_refresh (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.lastfm_stat_last_refresh"]], "lastfm_stat_percent (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.lastfm_stat_percent"]], "lastfm_username (music.model.user.user attribute)": [[8, "music.model.user.User.lastfm_username"]], "locked (music.model.user.user attribute)": [[8, "music.model.user.User.locked"]], "music.model": [[8, "module-music.model"]], "music.model.config": [[8, "module-music.model.config"]], "music.model.playlist": [[8, "module-music.model.playlist"]], "music.model.tag": [[8, "module-music.model.tag"]], "music.model.user": [[8, "module-music.model.user"]], "mutable_keys (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.mutable_keys"]], "name (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.name"]], "name (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.name"]], "parts (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.parts"]], "password (music.model.user.user attribute)": [[8, "music.model.user.User.password"]], "playlist_cloud_operating_mode (music.model.config.config attribute)": [[8, "music.model.config.Config.playlist_cloud_operating_mode"]], "playlist_references (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.playlist_references"]], "proportion (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.proportion"]], "recommendation_sample (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.recommendation_sample"]], "refresh_token (music.model.user.user attribute)": [[8, "music.model.user.User.refresh_token"]], "release_date (music.model.playlist.sort attribute)": [[8, "music.model.playlist.Sort.release_date"]], "secret_key (music.model.config.config attribute)": [[8, "music.model.config.Config.secret_key"]], "shuffle (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.shuffle"]], "shuffle (music.model.playlist.sort attribute)": [[8, "music.model.playlist.Sort.shuffle"]], "sort (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.sort"]], "spotify_client_id (music.model.config.config attribute)": [[8, "music.model.config.Config.spotify_client_id"]], "spotify_client_secret (music.model.config.config attribute)": [[8, "music.model.config.Config.spotify_client_secret"]], "spotify_linked (music.model.user.user attribute)": [[8, "music.model.user.User.spotify_linked"]], "tag_id (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.tag_id"]], "time_objects (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.time_objects"]], "to_dict() (music.model.playlist.playlist method)": [[8, "music.model.playlist.Playlist.to_dict"]], "to_dict() (music.model.tag.tag method)": [[8, "music.model.tag.Tag.to_dict"]], "to_dict() (music.model.user.user method)": [[8, "music.model.user.User.to_dict"]], "token_expiry (music.model.user.user attribute)": [[8, "music.model.user.User.token_expiry"]], "total_time (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.total_time"]], "total_time_ms (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.total_time_ms"]], "total_user_scrobbles (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.total_user_scrobbles"]], "tracks (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.tracks"]], "type (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.type"]], "type (music.model.user.user attribute)": [[8, "music.model.user.User.type"]], "uri (music.model.playlist.playlist attribute)": [[8, "music.model.playlist.Playlist.uri"]], "username (music.model.tag.tag attribute)": [[8, "music.model.tag.Tag.username"]], "username (music.model.user.user attribute)": [[8, "music.model.user.User.username"]], "validated (music.model.user.user attribute)": [[8, "music.model.user.User.validated"]], "create_playlist() (in module music.tasks.create_playlist)": [[9, "music.tasks.create_playlist.create_playlist"]], "music.tasks": [[9, "module-music.tasks"]], "music.tasks.create_playlist": [[9, "module-music.tasks.create_playlist"]], "music.tasks.refresh_lastfm_stats": [[9, "module-music.tasks.refresh_lastfm_stats"]], "music.tasks.run_user_playlist": [[9, "module-music.tasks.run_user_playlist"]], "music.tasks.update_tag": [[9, "module-music.tasks.update_tag"]], "refresh_lastfm_album_stats() (in module music.tasks.refresh_lastfm_stats)": [[9, "music.tasks.refresh_lastfm_stats.refresh_lastfm_album_stats"]], "refresh_lastfm_artist_stats() (in module music.tasks.refresh_lastfm_stats)": [[9, "music.tasks.refresh_lastfm_stats.refresh_lastfm_artist_stats"]], "refresh_lastfm_track_stats() (in module music.tasks.refresh_lastfm_stats)": [[9, "music.tasks.refresh_lastfm_stats.refresh_lastfm_track_stats"]], "run_user_playlist() (in module music.tasks.run_user_playlist)": [[9, "music.tasks.run_user_playlist.run_user_playlist"]], "update_tag() (in module music.tasks.update_tag)": [[9, "music.tasks.update_tag.update_tag"]]}}) \ No newline at end of file diff --git a/src/admin.html b/src/admin.html index b5f8dd7..449d980 100644 --- a/src/admin.html +++ b/src/admin.html @@ -14,6 +14,7 @@ + @@ -257,7 +258,14 @@ run_all_tags

    Contents:

    @@ -296,7 +304,7 @@ run_all_tags

    ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 | diff --git a/src/modules.html b/src/modules.html index dcf07e5..6b8656f 100644 --- a/src/modules.html +++ b/src/modules.html @@ -14,6 +14,7 @@ + @@ -40,50 +41,186 @@
  • Flask Backend
  • @@ -151,7 +288,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 | diff --git a/src/music.api.html b/src/music.api.html index a929fce..6878740 100644 --- a/src/music.api.html +++ b/src/music.api.html @@ -14,6 +14,7 @@ + @@ -416,7 +417,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 | diff --git a/src/music.auth.html b/src/music.auth.html index ebe2ce8..1d8db8e 100644 --- a/src/music.auth.html +++ b/src/music.auth.html @@ -14,6 +14,7 @@ + @@ -171,7 +172,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 | diff --git a/src/music.cloud.html b/src/music.cloud.html index 6fae667..08c2d66 100644 --- a/src/music.cloud.html +++ b/src/music.cloud.html @@ -14,6 +14,7 @@ + @@ -244,7 +245,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 | diff --git a/src/music.db.html b/src/music.db.html index 569c77b..b6d21e5 100644 --- a/src/music.db.html +++ b/src/music.db.html @@ -14,6 +14,7 @@ + @@ -231,7 +232,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 | diff --git a/src/music.html b/src/music.html index 79eeda6..7f4bc8f 100644 --- a/src/music.html +++ b/src/music.html @@ -14,6 +14,7 @@ + @@ -40,47 +41,281 @@ @@ -182,7 +417,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 | diff --git a/src/music.model.html b/src/music.model.html index f0e4c3e..7d8409f 100644 --- a/src/music.model.html +++ b/src/music.model.html @@ -14,6 +14,7 @@ + @@ -644,7 +645,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 | diff --git a/src/music.tasks.html b/src/music.tasks.html index 4c175da..22b3b7a 100644 --- a/src/music.tasks.html +++ b/src/music.tasks.html @@ -14,6 +14,7 @@ + @@ -199,7 +200,7 @@ ©2021, Sarsoo. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.3.0 & Alabaster 0.7.12 |