{% trans "Welcome to your new Wagtail site!" %}
+{% trans 'Please feel free to join our community on Slack, or get started with one of the links below.' %}
+From bafd6b3569d017665c277d7097c1a8cd075a761f Mon Sep 17 00:00:00 2001 From: petr
p1F~D$c(N0YCKD-MNS!$VqS$8E z)@2oQX7+;4V KDM0T=?_3D<&Y2)2 zsng|Z;kqKM4>N0;#M!x>AXG33DdT{SD@Cn!G$9Q|_8KrBRBION1Hw> lCshcDEow|EF2VIOp$MIV2Ll+VWNX2d7}p3o-|0OQ8vM*$;H}hQpNG@ zP{o+33IV3KjgEK3Hy)0`$!$=0#8jBq3R_o7%AMcpvJG6xl6^PF@o+Sv%L{r+RzGPa zE=#w>vRqkgELkbV6PaWp@z54fI;Sb|+HA2>tKPb8m|QK}Cmv5GGu&ww6ecwVI5JUN z6pG~FxS1KTREm$E3xdd;Dgr~$;1FHI_aY?3Q}OiK00>>ygwjSK?X=%!2Jw6<9lPKM zoyRntl&W(Rj@dAqLVu-wNUqh$K@Iv49EvOv#WLwMpU(D!*tjN^gzjx)dbe zpwvYUj(b+^6icUIdvdA|Bra$YFsk$x*H4DhiO*U?NGG|6e4wGVHK#2~X|HLqsjf7v z9Z7NNOzgB56tuSHwAB?=pyxR^K^se?GD7OS2Sl{a%W0igpJC|oV>6|AJd+g8yIr=C zb6F!sLQ$K*+g94v>ofs&e_SS$8F#sCA+V{qT&jRXjGSDCFSlTaMdk`}A{J(bg|f5= z2b^jN&I?#l=6Nm=%Q`^{D63L}E~W0^=y3&Ptt5m@noFlR2S|*xBsQE7gmi)z_%S;$ zg%Wf^;5IIhit&kfiUD*ZW^`Q(!tVQ26@qv&5O|kuzyIydz%KT$g0E-4z+Pm3BKV=; z7lQvsu*wG6BW#6zI`}|vd*JJVj|b-hzsEiqSPJ}b;9`LD|EK>G{-^zKH}B-}GZH`o zNB{{S0VIF~kN^@u0!ZL42(YiT?OU@sPB4bA1?dSaZ98Y*`)bDtpPEYct;z+yaJplm zRF?NO9VfkNVqGTJ9?>(+u-#uN6|V2A>8Uk116_kJT fX_4xB~0?Lb &>PPa3^;}i4%*pYumyF4c8ohl+a$<$PWByFOtD1M;SV|neH0bx z*f4r_D4+DoAa45w$EYq3txrgAcQ{79DoA?Xf}FFk?QlDe*iF61_SQZSIp}9?{+fT< z|2_V!{{Z`Ue%Ajs|5NNA1pYGceeBN$ej#|;|4#Oc{@)884B7)<3X}rVfu#SLz%Ktk zu&)h%g53k>3|4}_8+ Id_253|$S`C4R@U%-B;XuSHl<{jav +r *4QX)^E-izQTn;8Lhl9@D+x6JNozCIi#=VoW&%JM-b9lrUP4-Tj z@P2cmwv#2hq~b!xYZaIN?4rBb8LhMb2&78!zr&O@zsC@q61+z3{#N=4`+ z AQahj0Pdm2p>=Eh1>dB)%qeaS@92)xe zJ4ah>ubnNbYj3=R&XJa*^vqEE=^>9%Rk4?bZex!kwrV!IhMdD=8W?geh0-;ib8+r; zj *WZvcJ#1o&A2c%1*O9 zyF2*J;NJ(I4*pE=`-2O?Q^AoS6Zm4_BY~d}yb7)Wm )_Rb;EoA z0jF(XfPAe;_D+Fe_!J_a=r(0r1U?RtkNQ?{>yXnH+TXVS-w}4&b`P2N|A9e>-QJ2F zxX)=D-fg%LK-vGpMjdXsFhrA0jkf>ayU&!U?c&L{eDB^ai9})F9!NZ7kkv}k{eNgT zr0%y!-L(r61`P?V{r~n5qzsr+4)27>lZHrrLvPxFA09B}?7IKoy#sO%S!! w0gL_rAnUXpimH`Z?f-WMAw#G$!+imW*V;kZ zFKfGa`e~0J(ly{pdTakb*bjz{s+v~&|Gj;rW2+fR_pKZD|2usKiwyh!eO{++RBL-} z+uz#%-{%2I%~6Z}|4z3-Rk4?bAs5)HsT%kHVJ9SvsWw{f{|6jUrG`%5|8KFw*xPU1 z|8HkN%Gd=-OOx;a-)f(-_222Q^-KLT> e-BUS`*HT& zfv4Elu{Ytn{z8BW{*T}v2j3NZbMV!{Qt)!{WN<9FFX#*WN8nR|KMA}i@Z*7Nfr-G; zz&8Jv{C^Gi2)xt(X8)@H75>xym_O_f^nbJe)BPXl|E2yn^~d|S_kFeRqkZq~dq>}E z`&Rm9`uM&rzJK$5%J*U4`+Wb+_v7%Sfs*gCZ_MZQ{ F z%JUbV-|)QM^Lo!MPu?@(NxOg1{RVg4{iyr2JL+a#-*Ekt>yKRTa{Y+wRjz_-+{L@X zF2D0XoS$)i-1!0LuRDL<`DW+i&b)KNnRX62`y5|${G;QK9KY;%i{mNB4aZ}S3y$NC z!wvv!|C0Tq_TRGqto;r4TlPHQ!aqv_+nvma{UDh=MD-wId+UIciP{gUx5aC*Z&6~^ z`+v3AAKm6;hV2K*Jvv&{kA$4esC|S=8V) 9PdYfO2wlA=l*Q{J@G$sDnd z5P4(tf8F9_2JHuE6=VXiy^)%6K-H#EZ&0FCQ5y9_tdrSqKS0#z=O5haWQOd+REAE0 zw%1b}!>W!F_XA3tDx}1{jv6pbl$40qQbQwDN 5nM3v=Dz6 WDrCZT!)Quq`+=}}zP}vbCOl9@c_^*Zr z9Am<&t{(q=O1vtp$G-}Ui!x!NtVe!t5Lh#Vn)DL@Y={}uH6K?Zbg|n3C$pCsR8?+4 z(+o5BsScCN<5t1`L(F|GZ%N!uC9dTviEC2f`xHM(M1z{WpGp~*8g=M(F=oFiXiTXo zDXOe7 f`lA=~&Oj)K?>?2heqsz34 zy=_$x%dS(Qy{0Ni$~7g$R0T;X(JJ;Dt02)!&?k9jPg@mq@wB+d$t0LPraEZSf|6va zgeJ+<;yuP%Xnb*>lgThnS`8gM##7^k`<%=P#;I1-k(^hO)#^HurM*rj#W+co9cizm zePwr>cOvcoyG@RLj}mM0=`om3Mws13cV0m|{w^xnS~k9%!ri56wxS
y%{HZEQ_bp{ZIYTbK+Niz zXM#5P4il{lwEynt!1J&Y-@#*?_J$qp0M664+)ky*+Wj1Dx$UYbi8-spsB$DGN855c z5h5SY&_2J7N|0en-WV>UJsoy3S!SE6Xp!NRl0mJ&B13k+lR3_8BlTINK1AK!+NxgL zM4Y74%T`0ZTFT3m6hnnt$_Y9MwrVwL(GOA&x6mqRBM~$74so11utlxOBEvBygIb|Q zh79#^3#r#4H63*N2AP(FsVz?5Fk|p5Nh1vIBmzz!`9fUb6{qg9w0!$lq%k@jv8q&i znxLeqs_kh!orqadL3;v6k8MG{sxdk#1&uWvRicc-qqGwSTY3*r{Q#9|+nXJsvw1+3 zYfHLcNm6ColA^SS1c-cF{9!sE{Ir_Z7Vi-40)DlMR`fw7T9t1_kI?DSPo!IM2PgzL zm8CneVT!W9%^mH_*a&U;ev?O9>X4FZa!N}LQ &Ap?#__joPI|sgg7*MBCm+#OUXp z)N(JC(e}avv_fyIO_cj7b||r}CQ)Ly(<;15izrds=m79g$@cHgx6+pJsKV`OTa+|a zzCDelXgs8n_Jkm{-cGC1z9bJ&JMC&ETC87*RpqtVermm)2y0P&G|CN66@aHeiL^uc zlqgk^MtQYd^yx=5%0tPzi5C6rrZu`$A+1-qlvq_ui*;&wshk$;pq03Yq84R`qr-^L zAr;_>2jr0#@N@+7{XfH&Z16w+Aps i7TK*e7i4|6>0go&oS_xZ3}(*gt3gh <_T(kO}{g01`j~ zNB{{S0VIF~kN^@u0!RP}Ac1E~zy(iU@G(9&JY0cc>^>JfN5RK H3u z1t8JshDQj%tHTWs3V>I;6P^s<^SR(@0F2L0zW=wgzh-0q4g&l`0!RP}AOR$R1dsp{ zKmter2_OL^fCRoX1jg+Hw*8EEdcf!19q_{K`CgyRYqP=K0X+F Sr zrG;25ALsM&0$l2!EDAziSdcRdQbrPrBan&V66pnjOLLhFmxw1hDZ}TvWIDkKTwLJg zV$q@O|Gx~^|Fd8I&Nzs*AOR$R1dsp{Kmter2_OL^fCP{L5 _-fT^ z!|NEJzYXXh&;PS+c^+#;X(WIIkN^@u0!RP}AOR$R1dsp{KmthM1t);}{};Ro&;TTW z1dsp{Kmter2_OL^fCP{L5 ?hg3VL!tDDLcmgGCUdZXW6&0Kgzz5eI0v;eHFXP-e9k@ zGApw4>}B>Gn`Mu)2{y_Ov-{Z)yOr%{UBUky{9nO;4}K~5+2B71|33J!;D>_07JPT` z7lS_+{HfqugKrAHKKNAd)xq1rdT=?o7?gr956%UrgX6)|!4tt$kPjXSjsypTyMx<< zfuJYI1fB_eE%4>Q=L4S(d@}GifsX|KH1NxTpAY ls{*Tm8-eQq zIUok+1D6AnfpdXu;CLVr7z;!L!-4&QP+)7IKj8F#%l~!%m;Imf|Fi$^{2%rIng9L% z_xXRr{~rG@`rqMyoBv1rKjeRn|JD9m{u};lfD8YS01`j~NB{{S0VIF~kN^^}Cg653 z_Jg*!DlczQUVc=0`4RFmV*6p`<;}{=o0OOTN?s1w-l)91L3#Nh<>d#-%dqYB%F7QZ zFRxQxUQ1pgw(nP7UZcD`rMx^zUWROUl$UkoWleecFD?hegkMd=@1x PiDVVQ(`uhZ}v4NEj!BH^Az z8ZOXKreTqU&H@edG?ZxgN)qlCY4|-fe2j*#AmOf;)9_Im&eQNJ2}4(C_y`T>XgEv4 zotJ4iL&Hlnyhy@ uL6QUs62wUg8>68>L!O2l34>!aJW9h+ z8a_b6z!4hWPs1n;50lV;h=vDgI6}h%By AsU8hI7mX*eI)GLPs4pQ+)Kkf zB=qg3;Vv46Xt SVIK+IJ{o#y=%JyT zgf15ioiudN(C&0FK6?GXo&6UZ`)?579}++UNB{{S0VIF~kN^@u0!RP}AOR$B?-J;< zJ8XM%#ZseMs|Of|ZD_Julxq_CNWTBy#(uAj{eRhyv46pSfc;JO&Ft&hA7{Up{ZICb z?Ehdt0oMck0{eFMJ?x!(7XVt01dsp{Kmter2_OL^fCP{L5 =)n+z=zmB zWZwtp1%B>@BZW010VIF~kN^@u0!RP}AOR$R1dsp{cqtPg_cYM^0PI`I+btwuNnmjk z0Ewpe0N8!xt(OEI63`m}?DPfzJG}t_P6a?Tz5d^>eE _^!@hid_T8_om#8vAqX@3HS@e~NwUOPMtKh6IoR5 @>T1OP960)UI|{$2D508aV@00(^nfSsNIaMBY1 z4&w;`hr{P1`+xlXzZal|u}UO>1dsp{Kmter2_OL^fCP{L5 ^&s*nH@ zKmter2_OL^fCP{L5 {s=v!(z5!X@x; zQLcrjrf0)ba}yKci! U8dM%U5Fo(&(hU!)Hjo8OmgQYJ7G)J25e@M&`~yEn3ge z)ip528d|-)XI&NDLRngjgzL*vxeVmP%}TwrSdoh@4&l@1bEhwWv2FQZb|TD0qiYX` zJfUiqS-W8xiqz&6xwc%Y*P(stqW+%rS$-j(Pb>(9meI;U(KFTewD;cb8M`Pey|{ZZ zLP@WVbdTuT$!(s{br^VclQX7yg?=PnWa6;|SKta_vr@XDSEXd%t~xL`HGXMMnQUN! zFz0Gb5Z0n*FBECxbOHTCD+(SQ+v*7|W|%ce_drS2T{SmFI$lT=GJ;Gk>&U##q8U0e znVLXTG#KAe#0vkBEuPS0VEp7p#w$tyKhFzXA-|BZwtH(&c6W$vX0lcw5?$x|>D2e+ zb~^Q$+tvKpuiB$dedc6!%yy3Oji$cmYhGwM*=bJ4ghTVH)^9SCMf(rhE`|mNnb!=r zBWuCv>jJ3@owd~gZ)nYzW!A^^9z&sY%swhAQ%B|FQZk>638wLDF1<@NtJ_F6=WmT^ zebCW4&sdwGqtW7K4dOD5gNX@-c$*T8^X)r4p-V7RB}|Uf=BO(RAv!~)5{XPA9&aI5 z*GM}ph6k;#n}FF~B_FYpzN7Q!`jpob%4C=)Q+oR bkk=`wo@_Q?VBNbjG&IDlT{i+ ksCP9h&BjVJ=|o$kDYe+l{MjbFXZP_p)-|=wPaqHycMgL%rRkYb;D6jtsLt ztmEwHdisdc8 F}$vBT&%uIU9-KQ %8qeV$W*-*}h IupD_oOrmdIC}t&^8RoXZr2g}9Q@W@E0v3C0swm^=IF z2}WaidaABaEtlaNYLL)RI_W0@^;B}c(U1c^NdjMx7vu~*``D9i((+_vPet#-B;`zH zPwM6qmu+rad;@Z4VXff_UAe-%<_JAI)>9=tWlFT4MeC`|U7cBLcd_$4sqvho(F(m> zZ>J`W-w 7rm>lup%{ mt^rH(n-TBLJoAyNdsvCasXX#c;BUzK*KFIDReavEFAB=Z87k0;GJ4sK#zhd_7J zw5-&uy`GQ^ TX<5aUYONs(g`|)yrj)Ol%m$9A2DX1aZO$cbpxA@O I50ux=)8f+cjNASIJ7C=Sh>)ELwec0#}Vi`II}98|*gS>0iw8t+(Dg_a{9YURdF2 zZ-iFKyPT}*_0?((8cn-wju+BxUkjC`dV^d&S*jSn`vK>a2B HER8t#J>%5 ~{*JY1W18iz8hHZ` z)JBM|9XJHnYaMC3Udyl?Fkb3Nrhixwr;>79xd=he7gWtwXMgICo+@@zQKl?YZsMt_ z09-3``Jg9s`v|kn(wWv&q@#iY{6;x(UgUTwA4?@9{i}W5EVpWO`;>ck(mi_uy-PC= zE Lp*wR|{lkoT =*Z*4o=_~ttY>JGTa>hja HnAhU+urs{|NcLz`oz@ zd#Z1$?`WUb_X*#7e6RJ*`wn=&?0uj2?cVS8UiGHEZqHwM-r~u7&Up@cT<*`g-{rpM zKJ5B}>vvo~;JV^E?EIqhoz5la{m!7{i;fRE-sO1G@rdKF{r|K7x_!yMhxst`TIQJT zi{CEzi5ZuTnVjDVzbzrdugB;=6?U^Euh!&xqgJB7{&!lcgq1vDJx`cq3LA1wTvF5u zOHyTV6E!8zMrvm-g4(&uJEdZAW5XcBMmp!GL1%n!fLN>iP@wLD{!1goL+TIxT^ggF zo@Zi;`Zu7`qB*;1skAmyn^e?PS{tgVv^G#XJ3(m;5Lz2b5n3DQ9KHZLM`AlDE#0{m z9zE)Thau-!YDY)kvFt1lj4Qc2`Uc6}(HRb&hul$qM|<0otnH1x?;PYCJhYu!OMbel zWheO%J`1VCN4BdLYUygz&>T4>hia9UL$!x|+;awU>>t@qEYXsQ4dnfUry=dc_%>QQ z`IRm5#xNdQ#*nm*(eltKD4m_$rdrpfylSkqLRL{wt?#0sI%BDD>>*G%er_A_u1j&^ ztYz8JlTdanv$f^D_G_c ^izxHPbftU{%J|1h|w`E{>Xz+ zWHhx^b4ZIP`CFc7kq;h+%qPaTP!H&sAdc$ez2%59UMK}U^`T=>Iy<>Vb*M{u)h}y> zjH00W*F`~f(^BDB8WfJ7+d|y!Qk-~gS$1#AW%CUlYBgWWTjJ+n5)y}x7#fQt8yaaa zK{FVdhGZ}_$?iC0*gv8*1WDBzK!}0Wv6C#V`bJZ(-7dn %RE|KW)84@2p z4+%*D%A`)SszsfpRNFer@k%+>(9UwI$>wq#2j%z^EU~|{5b?xZ;=VB`F%%8zUbUQ| z0+FMTJ~A3KdO&ihhAVkSl{`jkNgmZmnrGhwkZ15vuw@y^Kn$X(V@DvBKOUe~G*`-1 zsVEmq%h04PYqZ!fjgH+91rjF%s##iMtB7iz7OxhHDuq-#wZv8-)m|-LDKvT*3XNp~ z#BeR8Rf0I6MJm}39)j#q-cLQL$(3S>{0?!;i&o722O-~R!mm2eiYGZ$<6Cj}k0^On zyIb)juWEBE?!W=aduYs0%xy)IjKtJd#C^k%YbffbR<^t$pA;_=5lByE``g;1SS>V{ z sPDji zQ0UN@i+X6xO(AFzNA^Rm(Nv$p0e(txrB+=il?}ZT;=*d=*gnY2AMew=Z_lnaD)~Le zR)M`r0nO+30-C#q0?|EC;7Fp6dfJ|wG_O(nzTJ>@DC(n@%gcGW*lITVDY6UFM@D_B zv8^1cnM$6Jl1H_#l}ELVe%`ke@(dpG5tCXOh%xlTfdNQ8H0GsN)L=;0;CH!OhG-Fo zcR;QqF|TTi7H#M*TGZj~N>0@xEt=$1jnbkb+aTx2sF&EK#gS~pH0?9L74pPRc&K#? z)!K5snO`o|$#0LhY$VZPJwCAoilnk0)zr>HDnD~ERw<_1-C0bv-c)QX2*vp09^yo2 z8RCkmz(@cJ9OCWNqowMyOpb~zUq}R96-E7!?MT9|dST3{+OKErSF);>8?&l5x3UiR zLDrEmJF(W7kJ#DD6!DQvqwc~|wOW_O*4(3fR%V}wSIMKA*UF>XMn6Y9nhxEyweqM& z(a-zbkZ16an;6u}K&+u34!a=rNX(^Lq78YaFA?LyTGU~ul2f%uizYc$leDPA4o#C< zr9~^6B&wwuu|v+0Q5Uhzn2ngHeZHR|c}_T_LP4&>PpB4`OSEGupTk$A#RjZ2!myow z=M1_2-_Cx<#(swV>bJYU#_~u22_OL^fCP{L5 e+r1FGom_mQ?EgPuW4{S!0KUq8iTwooS@xg5>p3F;B!C2v01`j~ zNB{{S0VIF~kN^@u0xuc@hONEjsQ{ 3vhAqN=6bK= z4W7`IE6i(-G^Bi4UR53?Sg6+AA7tL<3C+(lPx(wKvemP;mFG9t_3|6#dhqm2E<2kG z&t^|e^u5>pgWk|u^a8WqELDo~Eu)0RL!p(5#FFyFZ~7|N)Q5G7joT}-$fYysd~qQy zHY=qYo2Z3VOXjA=FU{q`<5OpHSHqD_3O!2`BH`(&O*JFo!x8E&cocac93ju^)ZVuH z7m4=0*ER16$tRe#$2y3Sa@qsJ#X?P%8gfyT8e%e;NyOz?-sqY!FQ ^5Uw}Tk({7Fwp1miDlY&?00EoojM&Si?iLcE*h5A =0&7OFE*`UbGN!l5I^k`p3sRC%xg|s&Qsc8=;p+6)d?~e<=Tg-xf{dC43{bm z8Ae!mYI-(2H8(L4zBn^JnVp#rU&zgevvaf4<5M6wnVXu0LEP2qaK2hCw=^JUp$fW{ zhIp-Btwh2N`BuZ2Dy_hirEfw5Emp;H>81<=Iub6z&~B9ALB7Nc!;H~s;!N&rZYDQ% zI(NC#KQcVQuW0xT$uvVDj8Bcvj%Oz(=GDmD8IacogDy|JH%d#*#*#>~^{i=_7Yy#G zWT9nkHBV@Klvx|G?7(8Z+*}mpRDtL7=>>E99^SZfwii}A;M&CcR!?a80<#7W*fkxB zNM|5VQ#SlS20adv;m#+dbY7N{W*bcTPi$ Lh$73f+tjk@pr?T zD(N4(-@5S&1ui8gQ@pWf(2Cm&40RuX7P&j+ySUz7Nt@HrJO1@;bO=7hb__v_IyZ6P zWcMLxA$C_okm``;*?0`n$)4uzdGtNcgWJ$Ax{vMX+UnXZ7`d)1%=)t#xdw4E-{+G; zQb;8_T1)TXdVyn`bULdtrYS+IuS@^4QXs9O+d$egy0*Bs>Ippop8Kpvmz9n_2)INs z$;XpiPflm<#%ZnViCR_9(qFASxVpM_^DbIh2SBFfL|lj^QVFRihtqfCuyuXU((5)6 zSP#R=2!{QN4gSYJB!C2v01`j~NB{{S0VIF~kN^@u0!ZMcKwvB5W}Sl!c^aTpUaHm` z7wyXa|Eo6q^}m-w1EUW}00|%gB!C2v01`j~NB{{S0VIF~R06?(V^BW f`G>{;Hy=u^ydH^+VlVI>^JD||GgwU zL?@5{5 %0RNBx5 dCSPfQp4_Z zx@_Bhj8rVz{Z5CE@sPkx0v8FKByf 4FB*C2_OL^fCP{L5 Ky;zFDkl;{6H zV`HDWr<_7#kpL1v0!RP}AOR$R1dsp{Kmter2_S*q2sj;#&jFVh*ckRJHuxX^kN^@u z0!RP}AOR$R1dsp{Kmter2_S)&2!SBuh9?Dh2guC?Gu3K?KIm@?b#C}2;v%|%1dsp{ zKmter2_OL^fCP{L5 N(*0C+Ei *qY7SIsl)fl{R? z-&$3kUQnpkWN}4Wly8>g)tX#y)Jla$sag>iYt`mTU3n2pMKKvqatneGvn&S}GyGqk z(4j-j`ba~{mu2!G1d#+px$VR0(=)m3Y%V;TJp~B wAl9FCaVfGB}LG<=3+n#rDmy2hu*XUDS>6Z2|h z?o4!j=lWT1Xl*z2f!wp{16JJwdc*=BPf3}KWVXh-C!JSYaD3`a?rNtC)`cv4rlIOc zczUW=Ee*H1CIW6fx1IwsiFxLZ=Q$ul#|{}ZMIpA3=JI*5St;G `vVaC}bb}HrRC6HW+hv zyf%`CzEoX51q>%;=1%H4W~eokm`SHInS>;F4AAbTDMXKMI!rfH5W8mpu+|nn518AA z@7n5m7LdEHFzfrD1#;aJGU=s~e1=QQg`PU-@ZI!G>-wGr95PtjL?Y2Uq4kG6q4{~{ zDIZ;p7_GND04m*}w_G{ZNm%rdRX}fr)PwrQtAgy@?DY5)$WP{`W}zvqEVW!(Y_yy( z&CaSJo2)L3{ixGsV|7xqv843x-jt(v66+^DAz5ag8trHry%kMXD>c-OtT)S>?cPkA z6}_v*>Mr`Mnyjl#Z+M@_hFh<%zswW5a)o&^*L%bD)METyG}T?Tk#S4ZxV-|~0c~?3 z7&aGl vLOxjfIu+ZOZ|`J*a(i>0YW?hf_NX_}OJUbm+m+uHH&E?CW=)Gdp> zaHlKXOOv*vI;8QV%KiV}gy;Wnx~0bqNB{{S0VIF~kN^@u0!RP}AOR$R1dzZzNPztQ zAG!bErd 2LdjHIO%gcE_@A(POyl0#HY4@VL-}QdiitDKJE6yKtKIR;7 z{E6cU$DsZ5_IKDX*%{`)GkIpv_Hn4p;%_SHvJKB=4Ue1PxL8tLsjf83@Yp-$;SFV} z-Vj%s`EsegBo{@gA#ege%Ed 0tRhiOFS**eH3dvIftt=5Tu}nNY83T#SCW#mnT&_a-#cG+z(C7T!7MJAmib$RT zXepNx;+f2pU;#=HrD9RcH_O+>qFk0WUizaoEcIfUL^?UeTj=prk32&{Bu}#eWA*1T zl82AfE%gK;8RMrp(7R%CmlNspKSX$(BN5f0iG`XBjoYmy;TdSDcsw@-f~J-fGUPc~ zg=$e2>*eO+LP;*eGw!bO87sT^WRmC{1(~6CyM(m3EY}ug%Tn=lOb{L&g;L9=QgKl# zH{_bq3kp?uSYo9i5-h|&m49Adl5Uo&&6>4#JQfos9suo2Che5CP`YJ!A{SHw4=Ex~ zY>~**FfG-DL@XV9_z0*?n$(i& vscG7P{P?U%~ 72(IGNt_koOQYT$XLd~aP=F=u8k=sae^!?iVBb+rPM zEVNpsSuX2St2HrVo45xwSKBqYjCQ1jr@etxb(J>3Lan+?jc&~%8y$)W!&oepp4r`L zGzTL@TcnVc3Jlt3r8%_=G))U1E~Nmy8@+QO&^u>>kfct-*FM)3;f)RgnzM5|L8xF7 zQpN!tSBjcGUV*MUA5?1=>jNSy#M0cc0gxRv$!aSqFi`F?G)Y-$2b6unR2B{jFs8_J zZJTlh9@z|smkO*_BzTB1=`_ltu1u4Qbsr*C9N!LAjG3wsV0zo=ct?EW;TW9U28BmV zg?X*8b)}@-`K>P7z?Cd{9w98r;b=sc7tK0!e`QROqmsBR-4e@kWwEhjr4&zOl8MAa zTR`cYro?Nr#Y(Mu>$a%3x@G&s >fD55Hq55bUuhqbYc+CE zgFXa@B1=RucuXsw&h~@YxF(i_@qVL8p3CIO>L zZ*dB!TwN?x=)`BOA*7SsLq5>Z+M3fArL@ B)Ty8jd0TB)loPi(_4mX@wfC#$>&KHmfdi}qjeVdK_3j2@jU$DQ!zKeYu z`ycFQ*}rDr&;Ba=bI+rLD2)V=01`j~NB{{S0VIF~kN^@u0!RP}*lZpb?9>^b-|K>V z_F@0uuS9tI)CiAHiEw+>2y!BT6mh|c0b0ZbX97rs!>L9%97=@U?jbpRc6-1*Y1?Ms zW()3Oy{=z#J`?;)=ldP6wEw<+TVTrH?0>xPtG-=um4Ds+G&{i@`;IkB@V%~I_k> 9bHGd6$(wqExB%etZ3UDzLyuZ~^Zm#_Y z7dz5>)P)~h1aKesgjP>5>rBUwTawGoT2}!|D{%SMO}J!su`1Gw{iTK|Cz8@aA(=AV z@6dKR;_-GfyJZtM(zgClNX;zrGmsXgBhj@7)~|X((ipQg*CTrP;p&vc#R?rTFSmQq zk=_AYQ&LRt$WLr;y9$W>g5}zt^(&sx9N2rJi@kc+kcDEZ$QKtnlxH@xv{PdP8(W#- zx5K6NM?9giG3Ln|^p|HlYVL@*q?)4sMsr8H`rE6WKW%(*W_&U`GatT?n-80Rj#;;; zqa6J~Si?OGoBrf)@fuvTU2SVS)uzpVnHjtxKReoCMA-P7v%1T@=|*GgbMDZ&A;v~K zK>bFUT**(a%c7s@tf5REqM&PETuZKB_JoFpnDvyYY4l9w7p=3ixo}5g+*K=(i`Mj? z<%Juu^q=Jo&rOYAn#)0BkgKpa&J G^Mno^V%A3}(WNR}wn_prAGUos z-OjZwjmRq3>o#iEokj2IYux%PJt6S~vv!G+=sHnSK{z-R;{snO@WpN!A804jEt_%~ zwLx$5$yT)hCalc52)`l@Hb1tp&H5$jB3zl9h|95jH+zosXtssq=9cS)!1&_&_jp5V z3>@|bHnzU&ts;eFT9D)MLN{L`J^Hd~1)F=;O(GJ#^T_&Rp3sRC%xg||{9-t1N$oJ& z&58N;4&E)>T}>lhtq$j_)pB@hdNw>YH!(pb_SXG%kuaGK8l`2qEnU5N?OMHBiG<0G zhsIQ`$8J1Zn_W{~+Wc5RuQP5t7=Y1j2Lf{at4Ol-tZB8PF?bFYMAw|_ukeI;o>_|- zTb5qn3zrAO6~n4WhM23Ct!c>c?AtNAwz~du7)b$G<91uPnASRmHLh|T732AQCMBh1 zdi#TZ)Kb^TkEm8FhnBGVGwB`K+K%L80o__GkRvCFXsbpURUImXfXUtn^uU%D`Jl+b zBr>=D=!<-HKSix=-*as0Vsvfm`n)GJ4Qo-JPL3UvG@=Xfg+xA;goTG`Uo+c2`E{h5 z1vY36jW&DMmH^uG%zD6b#wK_88gKBW_j ^-d6A3hJ zVRBu*t*>n2#?_C0M4u;1Aax-FQ _hOw>AdaxLr?Qt>4>vX4&uU~S9rlZ}K zknKK+eEa7K*cZD!Ay|w^JuODmnNJkrT&5^2#LZKvc5va^J43f@bc!V7RMXr1z^Bc< zQSy*KKl^?g`%Sn5;H&JH*w3+_hPwd%mi;UCL+l430soKy5 r^CniNzhM%J`(sy;3a{F1a1 |4-Z4ue1Nk{uA8& z|3UU?_8GVv;9uCkgEIhs_~LL7tv~`u00|%gB!C2v01`j~NB{{S0VMEUO@Qp<{p6SY z?8?@kzE$@A^sTb_r*D 0j zn*FWsYP#q=5 z30-a)x=847($GOdyS=slXV`DT_5U^wTzUZh9f5z57ur3n9|<4i@BhiI0r-amkN^@u0!RP}AOR$R1dsp{Kmter3EW!* z{Eqz$$8qr3X^yvh90NY`hHmne{r|n?4O)u?kN^@u0!RP}AOR$R1dsp{Kmter3G__B zu>XG$3LS-i!#x+qj7R_pAOR$R1dsp{Kmter2_OL^fCP}hJwYG 1&*ic)z5%;jEH!*i z@_xHrDi-|?l4I{mGhZ&%mwemo9@`+}V**e_Dlb**jf)Pl|5xw-e{pz)Rv-Z+fCP{L z5 w#A7CaH`3;bE&sX*NSE&u!ckNF+_ALzf;f3WYL`hK$Sk-jay z-|;=+dzp{%{=WCs-k9feo_Bg)>DlW3TlY`8A9e3?{gvwp*Rb -8$zwv|C>M_l87^C~k`P3=UP4q0ixp{Eu3Jj*@mPva zErY~}*$Q4PRZ5MLRPHPoKblF$;)&QpWtZ(xLMtdQ=j9@?KP^h-a&=WKS1XHRvsSjK z8Wa-g1fO}?bx`0t6jI_!b){LB8nU<~)t4+S5RyqQdGZ>Rk9Cw!QunDrT?NvaOfr?a zR04r39Rdllz9JV&3%A9_Qgb<9fz~0Oh|AI~u`E{>8 l&}em$mK_`R z5oq5umpEB;*@jaZjbgO`J%ks;=1RFL73CsCG?(Q{!>WnXaXuXras?1LZ4%&V0~eO6 zFgC;$xwc%Y*GtukWlu} if&>!N?Gju@m*}x& z!5SgXWnbB84~(34d+IO)SdmGl1OXaX1c@P&Jt=Wnt}R-Zio>YQJn}tIN;Z{Bz>sao zwN|r;`P*W%4iVLgSd_~$3`D8W0K%5m#N)9fcjYnAT{P(?#X@!Ew(gaosl-MV63b RPs3l265B!l_q)@ClP}Lf6zqtc**fGYKyF(91!iHI9^C$i;h^XX8f`NiLC&J@lxB zLadi*HhwgoNWw5WJ`W0GCO-simKBRqL$Y!pP9AZaPF{t=tpTVyu;K87iJeQQCa*xb z%UY#{YE9<2BnQ3ymbhB2U0)#cbhA>r(UhSvD)mN9Dp?OknD6;S^86zp*P7cDxkN^k zR#wWl4Xr6wYel(Msw`SL6ywrDBJtoHD79vORVgj5NQ=tdzas5Hx#2QeX@%5dq2FN4&iNh)b2r5%&3%;Ga?F3x9X zK&v&$s7@s;v@9i3F=(+9mq4O*L{lZ=tzM!yXH}d_#$%cE@rzKr)ydT2F^$P`6$Z0q z;W!sh3dg4{3JcWya&-}A>Dq0}!m(I9%|A2+g T vM@5FUhFDmVDvMT2n;5K6Qb{g;W&$L$?UM0~!KejT z IJ6 zDAES9)PVIshL4>Yx3DBB)=R*btn$Q~yj;Br?=8E0>}ZNl#A5u#^Pn 0@U>Zq#HT?ZwyC zacyY|G +E68`9!psX-keZ^^~n^0L|`=mCc|iKShMR4NgB@Fd6_*JZ$wCX9T6 cw*QA&d zOG6L6PL8{^dP7t%(ua{HHAK?%Qr_A$vj2?pXHy`U)B2z)m=fzUC;>&Wx>|w7=!QB8 zE|p1Yn{f7<+B _FV10;jP2Rbby_H@_ zNcG~fyqu}z7gy6ILAp`De)HC~1+D=Xfvg^tAHMa-wKMhU)oa tGBt@)vNPoSCZ#1%r_tBrYE@O?K$au z=9X}MTAa(5h3T78?D6vS<>u}2$!5Ayef;9>(etCR;w4F{EKDzECs*UwR>v2vPiAgr z;dy+k E02lP$!S ?0dQp_9Sigvi3(K451 }YBjJ3tT5eehW#DE&xIA6I zwp6|TzcVAbS5HCHkZ(1N5_P$%TqoPT?)nnk6jQ3ejZ~Fpy;Hj`6WVa)f4xvEt&p3d zB4Kka`sL)2Fx=Q9H%iMgZA@@NzO_< ``<<8W_I1Ma^N8@E?v(Xx}w sm!Z9{!EF)b?kc^I+PR|PGbG;(?S|u1 fK(+bP02(Ih~g| zoAN~0wy!5Wp-ZF8T7u3sW~ FrwA-=T3`gY6 zG1-87-sZNw!NwkT{)yu)_CH|$9X^=;bAD1DC993TeNGq%U3!-9!;I_+jgB%;HtC_> zSQEM1%KZ7H%0WHAE6MB9`ps`!q)eA3q)v7EY8}UWS|E_$MId*EbwAv#RBJHZYKsF+ z6b=QYdh7N!rF!#GsaCD3_h+ JB6oE3JQcTYZR_GdbZuh2=?N`gVAkL+ zC%DJUSd+y)Y{~);h8)};o9Fqsv`PMG_YU5RdS{onC`Dk<+gt!+bZvUQ;R#j2pBp{- zL-oiUvQXesax&F6C@d-)dUg(V$oK4#Rx%P@A6u_`Lu=6s%zE?L`J_@Y+;^rdfw*)g zoi8q=>AlOFv|w0uSXmB-Ee@s@l+?TW0BcVsJbNfGzO*JMZ(ENrp#DXocl_%$Pw2u0 z<|(#g{;@E369g}}nw^x1#X{_^=9yM&cg!T6Ye$;5=NUl5w6U;}04dSCya~O&nd0=l z6danoAM%9e;V7Bw=)u%LWr<6kn*e<#U&yDELOfwM>e23Fue(TR-_rau)=3WJ-UptW zh23WBPV*|QwL;v$RC05zwhkvd7% 22$Nk?kq%%cK`9W zx2E504XQ2FTbqLJ25MQUS^T}T-gG_nqFHY`|MS~gZ(gw3oWDs|cyHd@F-? 1i!^VCS0{lY)NB{{S0VIF~kN^@u0!RP}AOR$R1n!DJl-Xq) z@c9M?d|o!-g{SR%eKs#q8sIpNpMmGWk!Qk <{4xMM5-=9a$N7A`z{k_cq9Ejj z1v#@IWh9{pHL!-g|5eAnuBQSN^=>BvxI}tE;L= o;#*Ti_Z=A+bun|7X}w+2DWtLjp(u2_OL^fCP{L5?I$z#f;$pyHvIj+d$x7aa3p{PkN^@u0!RP}AOR$R1dsp{ zKmxrGAm9Jv{=XMem isd#e%Br6TO6NqM3~P)2J+|pKW)G336)aJnp~tNF-#b7fTwdCF4_Pa##QV_Ra;kjXS^Z3xFgD@d5j68GcCC8Zu47 z5=Fcpl4Y5uAc-f6vS{*b-r2Xe0G8xhAeLGzL{UE96$H<@Jez4Rue-~0^0-Sg?X{C8 z&EzrdB+Yc1CT-Fr%}kPJI@2_nT$*Ouxm@bIx#{n}*j+5J3lM(Dm8mZ+(AfX~_xtVl z_xV2;SP)GmCZl(D(lCE@vA;NBek$xdhg=Frb~BCpiN!Rr*nXER^b@dlEfi9cl#vQT zts>v(hfLKVv$8mUZ6(jYYe4Qw-UD1G`6fonG90Nt)40zcT0iTliw<(zih6ymtZeI@ z)jZJI A16Fn#Rm< zYv0ajw{B|)*YoV3of(g{3iU86+4pfu+;1Xcorl!%GR@%YlFBb$UFH{878dvymgcX_ zF0JyH^Q-*q%JS9uMZ$L_zqo7;m5v$HCB#zxLVhW~IG2BMpUI4g(BW)ps@{Y7^UQTg zpV{XZ=a=Va7Zz5H!u)wt0W)<9x1Uw4X&cS?-N-Z2J91=qyD{PqojvRMjK{H9nXSo` zb{plJMjx{+N@fe#-QN-Qs-kLwqLw7pmNhk%t!MS7VHeGk=#L47H>K|n+ =L&p1xKW+Qi;S>GIRdN<$e-pyH(-LMw+@8%{W9k1&^wa+m2 zL2Ey$8HEDuGj!j#Zd%-Z!ymeM(X*R(%n**9m^~ForO+Ls! yT=`An%&->omuwr?n#*@#(dB_h0Z0XB5u- yMKXi>GIxp$;=o?B^W4%Mjr3>+BA=$PTFpH=5k>?1|U7Bf1 zveLWT{*Xkn*4@dOrot9mw&TTgJYC8}9am0F;DjNt`&CkVqRxnYD5hS;{K64@|DXQK z27ZA62!H?xfB*=900@8p2!H?xfWUz!z^?y2V+D@>;Rggj00ck)1V8`;KmY_l00cnb zT@m=qW1avvJp1jh)Bobpcx*bFn2u%mXzp|>eL9vq6;H;KvH0uZt?S{_e1g3(D{33` zG#rgaW9-3h7A#3ydSRTNS8AKZ4Y^z*n s#vL(MNL*J!gXm!_oVx+C53LTVCPiDHM)ztv$$HW zt+SJC7-sgn6R4aiEVJ7$PV<^tljvwetkN6ZTeU)2u5L(lf9VF@pdeMrU`;GnnMF-4 z(`^OKtY=u<8FqeUyFxd&o#rdGa+waRlF|~x>Z=>dwjfu8O{r3|N2^Ngz7U}#Rg0>; z#kf$AF!P|>BA7Hm)LLPsTU#>SzV0kyd`*D_>bm4CX!B~?2nE&xhU7I_t R_6AT zl*JxZnnabVbW^UfRxPR$-B({~KO4)#v}m1CEXzb&S! jp4o^$d+FvYwP-9> zxLp#TnW5wG8$R~=e{b;XT=1Lpi{m~_kEiJ|MUP2(jL<{>69M#p{D1%mfB*=900@8p z2!H?xfB*=900`U(0x91k+)>Z);lqL9N5+Qft@>dPH_T3Sm@{7-^0HTJ^p{NZU;5$G zo=3RDfdF$0Hr?n2D2^NT9rc)Q1HORA=ko;u?EQa#@Sk$QzYBgf_@}|&3;t&Cm+27K z{&%815fcPJ00ck)1V8`;KmY_l00ck)1o|Q{;veJ!fk$c;cC$fXh#eeePY(?aa-P6p zuT+w?zyN#xfLAP)Mt#iUG2;e=fLFI?Hp3qF^Z_!_@Ba_}IY )8?_y7Nb3;xByOAr}>00@8p2!H?xfB*=900@8p2!Oyn zMj+%FpgRCuZUAUr|9_MI{@*=D1nGhR2!H?xfB*=900@8p2!H?xfWSRM!0Yig|G58s z_ejD>69hm21V8`;KmY_l00ck)1V8`;?ok5zm;2%R{~m39qzwWf00JNY0w4eaAOHd& z00JOzuMlY7|Bt`_cdxWJ@&o}8009sH0T2KI5C8!X009uV=Lq;bJ}!Xw|L?hWN5UWg z0w4eaAOHd&00JNY0w4ea_aFgW|KEd+j+8+F1V8`;KmY_l00ck)1V8`;?l}Uu{=es% z90`K}2!H?xfB*=900@8p2!H?x+=B$z=l{9p-~W^7S&1GZJw8DX{D1%mfB*=900@8p z2!H?xfB*=900 NPw<-@{lgCkfB*=900@8p2!H?xfB*=900@A<0VLq_1@QO( z4q&??B@h4s5C8!X009sH0T2KI5C8!X=p=y8|929>F$jPF2!H?xfB*=900@8p2!H?x z96SPJLosfQdyX6ZJ>Rd5ern`55B=St_|Q`Dx$!r~{=ob9-ZR{Dfx73nyXW25Zan1= zojvRMHjgG2%F?#Du8DHFsHl>#C9X?lWnHRh>Q1-vn{!L~+2uUHJp24Yo)3333-eQ9 zxfJH*iYBc~D!+JjnO|I4Sm0k+n!hr;w8~%3uky1i%U9 nN+rzS6xHH}s7}RGsffM4Bx<7YT9uh}x@z*KRMo`ItuRkk5<9ee78R0L z(F6)xS(iv|K~c(fgOXI1G`9-VQ`^~+gtkOkl1upu`KA2gT>eEqTzZXSD}vp@fD_@* zGrJ|7 bb^*KeV3l z)J3^cl5W}CP7|xw36v%YYjQ=dZb&7eutOn)SYj=gjmLAY#$}^3%rBnLzuev#_6->3 zuP%0RVSL(Ugd_Fm8&CQ}n q&>G#>Sb&YkmocGEHXOmkhjU2a=NrTh46vwKGau&7GZ1xkXbbr~-;Rb}IaHLiu& zHpp4uUs;^Lwvulf0`_FAe(~-HLDzGzVbgbbRk~55Il}Dl9og7NvRKnL1U9t#j%~I` z`&cxmLVIjGBGaqy)36>>tF|V{RJ1ieMgkw_p6EI1-yCl6{!k|4`OX )sbF8zYIgw-EG7h^9BHR(o|*Ywl?8$IZFXJ`wNVF7JBwcAuvA>jJC?o1T4l1IB#+ zj5=Gg@9<`~bQ}2l 5N#dtEBjped-?smJK?rV_U ztTUW*?Xg=k#KyKMQh%=TxIZMH^VB7W;I?)V%p-l>UyEfEne3Wfwpp*YVyV0CHapj- zPW5d*OukvbdUT||&^YQ3-Jl$5`{d9uoeRlmE?OvxiLQBw{pQgvav!;LxKcjJ#u0x= zq myT!C@veD%qTf6^Ble-+a0y4QH69xZN#{JAuDW`oEYpsW) z7P^WPVqL4Y>&3 !;nk zYTXfab8()?iL0A0>&2$daD*<&jtqzD_fwv!&OGZ+Hjev4tF*bzcUI|pEq%Z>cU_cn zF_F$>iixBhskPq9-E*{T9Fd$kS+*<*9lSma&o#pS&~?%&_t2^L7IXDtZIoL}#f#Z& z+qI^3f{lIzcMZ9Z@=iY*dCxRxJ0w#I&e_n?)ONMTGKh+qRCcXYbVXk5Cxeb{hZS+3 z1UlTp5xoE3{k09$fB*=900@8p2!H?xfB*=900@A !3m00ck)1V8`;KmY_l00ck)1P%s)0nY#z2(ZupdxGEK=pTMS00ck)1V8`;KmY_l z00ck)1V8`;4jzGlfq;4a|4lCV&4ZU9G6De*009sH0T2KI5C8!X009sH0TAFgpAXmn z=m#JG0w4eaAOHd&00JNY0w4eaAaKwLw66bg|NlX6Yvcz4AOHd&00JNY0w4eaAOHd& zaL*FJ{r~rD(<5;Z009sH0T2KI5C8!X009sHfqRKS>-~Rx{{LQTcjO8JAOHd&00JNY z0w4eaAOHd&aBmS{*Z=JM|GdEl7yJ$S#c|i^A=6`n9z}ZK2LwO>1V8`;KmY_l00ck) z1V8`;K;XS0aLzl*9X@e*HZbh*1Ok_oO=(+P*F?E|YO7W#%hioatz3>r iD0H zFOPl6^Ut`qxXZ!e;Bc=D#s_`%6OC8=A#vJMUy&;%>6Y;-Mp02EVM|<>gtB~75>)A? zT$PoIAeV$(B3dYA ;-XP5K*{Nnli%Y3-Ax_h87e|6DmALggRo#zfm>aoVh z{2__tzUnS_O;)R#V7vw+l>|`};)PVHlul$i6+OL=;2xp6OLjVu=m#1f^@pyJ=#;x? zWxFD&jO|)sEmKS+9Bildk?IK0U7%@7vZfo8{?MyuJ@qTDvdYT3RMFHOK`d&l?Thhb zG#krhJ2{$mJH17kW}V^OrJB~P8#K=!j(q2l#)>~QJ?;HISrZFo^A$I%uXYOK_6$YK zv(GQ&-Mg4v3iEPBlh!4bU%a}^FRm;s@GmUQUzuH6 )LYb$v&DoI<+$_!kqROR)GRBBnyUCPg0rqm3>XV3D{ z2>DfNo5c;eY}3@;wPkC1YqD0Bx@e=|)pBjUdo3GlVZNX!WlJUbY=~8%R%s0 a6`%3G{2I?uAMG$$BQ z3-cvWlQel#(i@YKkZx_sG@W&?BHo>e7ZvIh6;04~wj>&vt+uo}$x{A8eks2=mw%Dk z`!&L%2zDpdamg>jpJ#SUdJmjmoL`=wU07H(3iIbloi!k>?xOcWdw8*?Z3wlhr1l-O ztQ4 2-nkrVR1fR{L*QK2>ug@Ndcx&>Yo z$wd1Z)$~U--!R#;KvuOEE8}FDKO-Wm%(9SJM>zSg=PmQjIywxPMTOH>Ule zSj@8 UP|t&?W4w`Oy!GTqr|GEs^} z6ZS@6oy1(R-{@1fTg?5n+q_7BwDELb%=Mit)1FKxC3^p@oAyuksl7Aa{<;kh(tN2A z@rM**exo;Y`(nblXOdDT6U~a Xu< kTsq_SpNrucj?i_|@_W4-u1_^qsejVO-+fMK+c2;;F2=LTc(SzC*~XK-d325A z&Vfzm&bIV7UiOFPN$Z4bzZBT^QIImlSgeqB2pri*V4HJyRr(e+QvYb wlkq{jdN1e=ptokNf}og$Fwj z009sH0T2KI5C8!X009sH0TB4W5a_u7AJ_jMn3jW35C8!X009sH0T2KI5C8!X009u_ zpMZ7!KSn;D;Q!_5AAUdp1V8`;KmY_l00ck)1V8`;KmY^|8i7HNkGo&0u+RT{f^Tv3 z4?iFP0w4eaAOHd&00JNY0w4eaAOHdfj=-Sr{y_8kAD{m}aE*(EKmY_l00ck)1V8`; zKmY_l00iD20x$cHa7R7EhYtsa9~m2_o9u@@+%P-!VU7!2iAJL__V8X(Hl+=E%;>-L z!)PkI7LR75xm+}rOh?6BtPo9SQ_*-d8IMV&(iP7U?r uhc)SoF@NpiW&&TQC|Hs{@Ly_qBN9l2y9v`O1)AX34$0R*Q z=)rCkzz+z300@8p2!H?xfB*=900@8p2!OyHB``5?CE(fb)dAm=WEF6~=pXeR^_Z_b z`24=Z0d~MX|3A)6aKTr{e|4t({GNfUzVG2ChTfF+g8on< z;r%W}6ANW&TU^&fxh!vr>rz$F|L0P~{lmGX{Ood`U!Hw_A Qp?H zidc?Ry(Zgh>2;R2+HJX{Z8%RzejAd!zM;8R6;(;pq>>;~b%~y7@}|^wN~I{4g)N2B z5N@?1)GAeZy&{#GDa~EV&t0Z`*V>JrJ ^ `~Bf_6&wM%+GnqQn> zo}XP 7iM4TB9eNCVQ6YAD&?|N)MTa7uFC9-c4bB%E-I=dwEW(l z%nh+hJ<#mFNn8Jn)X(mX`$N*4xBjYJDM`1C)2%7$W>wIC*9x0*waT<^(cmM&f|Sfk zxrCJIVat7oF%st&&*xvZMq*!K!~E67o*pcDLrXZaduDIUADWx S6mDngrT05s zXAZY0?`Q^Lfdm@JVwl&YTbg|+o0(YM$eNP6bpz(ncL%7l_R|D5fw)X1kqdjnL!s4# zm(yFndZR3Bl0c(@W)|uVf`LrhEJ&rQp#M*ZxfF8W-FRWoug} i6$fW>W&$dtxN3moy$bCxGYvRp|-_V2U^eE7K!#@pNO}XC4Oab{@O~O zCB9MHEL3P|6`aT-b*b@5f9TVB@9zEf$)That90h({7MJ4O^KEvv%ogt3fWRA9TPJN zqvc&4xo>x!DqL-Qo}_KwaCK*0$wekjB2P44_lNR%Z)48hd0m6_%;no$yR&PYchs-j zw;J(|t%h4}t!d?5u6dDqqH)_FDyF>kRYz~244b{6wM4O%BA&=*W9fLx&dfCB-t6A) zrj2dIvxjrGwCTX0wn+#_>iNcwKctZC8{K8QkP~8=cq&WpV!4Xn?L&O8puJOY@eD`y z?r+@khf*o;w>dkhnZK*n&vx&Wrr$g2jPGh&yx$Jj4Z(ZXmucc_? WbjK4SF~>2bxfELH_&jm-(McrKZuH>>U0F(a<-IzoE~aVBQ& zwQQ%PDdnNY$Nixfr# f=dsdbZeH-d~(ENKbv1c{swZ|GmK>F8CGtg&z XW{s&inOeX9Kfzzy6f~XTELTdBc7@8jnp!6VtH_AI+UkrBBCl zr{c+YG8T8O$;1 (B*5 jXyB j|tTqHL|CS3&jnwLZS3{HMLAnv<*R11Wmf732U-cF14Q_mOdR%pNgfTv0U`o`eTFKWXwE+ zyh);}o#%+hTmvN2v0V0Q{n0^gV#N$lt4b>K&k5|=ma44DWl6XxsRgAf2^DdZbe3zX zSayw=$i-us=j)G9#50`{vuzQ@o1!MFu0i7Qcsg;V{xAi())^$z7Nl5HRjHy0noP28 zD;3EtUNo0U#B*2bA-8zxws>2rv?i(4EM;nt8j*C3mq{nGsipcu6z^l5`clHCcwG`y zsVr&~N9ScUzEItgit?IVbPbwHB$Juh`e6#1>kOI{isF{6iDmh=WVD29j94y}pcoIj z#YhNZsnphvRcDOUscbGCjpwe`AD|eHJ`s1s5R{4?plifTHk!#~>K~$r6P=mG1i2z> zvRiK=EwN-gnR&5(KXq^mbX5}7;s$llq;R7qsXHYaRy!NAR&C3zYadOW%4Cz-SoVDV zK8kwQ)MG_WP}6NHHzh$T$(o{8g)O;w-7T$5CY?>>p05WfjMZRP7$+%L+L>fJM? (wS^3mwKT-Hpoq1HPfK3E2~mbV*@x%nKX}xaZ!~-8orz2Eukz`*0l|{ zl+v+8CY{UIM=7M0k{N`BO!d Rk7cs8EAS|6b}SKOo}g{q_pwTetF$a;`I--(ry zP?a^8A(uLp%tT|U#6tZLMZD-1G0_}$%)dEd>g^{M%I@J3>3A}kuLrs%+Gq16qe+@s z&eVq~j@5j2U_Dzf5sRfVnTvHlHU6BLlsSLLo8z^(p|ELpOHw!GYE@P$uH7h}jiyt% zXX`^0$*~f|<3eq#tcWG*4Qz36Yx#IIn@z=@s}E9ultT(-!5j%JtpppiZn=esWwN W+U8@Q}VE=x!1R4kLpB@&nFUJ8)! z6cNjsW1H3t8r?*brPMRjQr$zLRvn=-Y;e_z#6&5Iv|uYTtwPtOoqa}FQ{Qr(qoA)k zf~F}!T7inRa!~koiBv!<3Q2b7md+*87e7r=9UUo_Vo8>bO!YO0p1W=-7(W*1!lx+E ztV3Q>pZ%M}`igV)4T|%kBaSgvTNyUHC(SM8a<>s1%cOFN+($l10Yyi^xKLEKc8pGH z8!BuIRaDAlnh?8 {s#>HC{!_ga}SpySW5ZDGq)M#}mNw?fHV}YLA zra+EKA)2vI3RT*exJO9jlF8?9x~7wM>?T|%w^)Y7xKyJUjv-AelD^%tcgp6n(p}Ax zMv)vNnzj?oNFC$3qG&>;)~jR2bIHubD#didPS8lZ)iy=wBd<%EEYMk%0?l-GqiEdR zCJ80lHM{4=+_N{x-CBvPj?;4)ie+fq7`?bf+cS&rnxby91;07u``Y}cPDN?mPepC_ z|G%$SXgC=NfB*=900@8p2!H?xfB*=900@A<`$quR|L-4boCyR#00ck)1V8`;KmY_l z00ck)1pa>!7#qFH9rC@!9s2pe=Z61kc*3s^{mUWGz@Pcv8h>VNdGrT;PkA>zS?<$h zcJn>e7|^59310Vy5()2aP-8a}8TZ~c@2PCwG3rvp{n*@6es(#}FV8-|kmtiLCSiUm zESJJO-RLE)ODey3b(vpWSy uLR83ISlBC)gQ2vx sE49so&J@3T`QXA-|MgoXfvx0cZEe z>$kxh5+nS1X0)WY%KYN|^8D<=!m3f2KOd>5_AdHE;yG`9MZb&5U}N2a$?nqAZ-~|J zEEVLEKsO_cQ7LBj3$wmzS#m#YP@G>ppMTj><}`GK4D(kPd)Tv-^!rl@Mx_42-UWZC zO2T*c5pJHi`RM@4ppeSMvto9wYp&cE`^}(h>^@TI^rf7{y@&mwH|D&%WA>bycOkXk zgK8ZKg&qC=an>|+KXW{m&gP87-2Av7a!t+6wC5?>@^kZMjb+|7YttBx>^{C1@`vW; zyp37=Fm;R3D~}&^9jb0o-qB#C`{5+pd=rhf<{KK4Zi%(#H8!W&ho)Gg52LWpg7iBk zqk9keL&6zv{hCWRXx;UxC(GJBA;s28nM|^smu1NPK(98p%#7O+ZSmY1*)rFY(eG;3 zhhuK 7_!dlu49| znN&M--Jbj0{=$2O>?z;Hk&<|7??e93$0&*Uu1VN#v(2X0#B{OL(aoFM|MC9XT_W|A z+_I-h>&V{y!=d^UXS} _ZqpjZyr07G^WqiMBC2>l9byf@>s`2zAcxu4cm6ih)5}JNb>rI=33R6y|pck zrQ22sJ2cCtZR<+sF&oZ#rnWVtot*Au;Mi}6$8nzj8Cp$vIlbRjZ w*#3zP%UB8QEUQ{Wt~sNq?wFJFZpx5HPnftqq`{luOM|BozvY6ny}#V4TEh%6-9g z+&T@NG28mD(}B@3b t8?DnP`}!ZohI#f>9bDp5`AovK5f-Kk|DZ|{$+eS_2uFJ^qZC()BV7BI&UZENK{zf8&w&a)P%5~fJ(tbG`vHktO z_w@1}!9V~6KmY_l00ck)1V8`;KmY_l00izH0=WLad)fj@KmY_l00ck)1V8`;KmY_l z00cnbP7%QM|D7U>xF7%mAOHd&00JNY0w4eaAOHd&aQ6_v_5a<|7El5LAOHd&00JNY z0w4eaAOHd&00MW40IvV<6j{Ut0T2KI5C8!X009sH0T2KI5CDO@hXAhs@1C}R5)c3Z z5C8!X009sH0T2KI5C8!XxKjkiSm68aRCL4z0T2KI5C8!X009sH0T2KI5C8!XxEl!I z{r|h66`%nGKmY_l00ck)1V8`;KmY_l00izV0bKvzS-yx40w4eaAOHd&00JNY0w4ea zAOHe)0|8wB-wmw*4IlslAOHd&00JNY0w4eaAOHd&aAyhN`v1=IMRX7V0T2KI5C8!X z009sH0T2KI5V#u%*slM-NP50NkI&x?x}X6BKmY_l00ck)1V8`;KmY_l00cnby(3`z z`~N>oQSlnUdxsX0KmY_l00ck)1V8`;KmY_l00cnbt|4H1{~y=?cTKB62nc`x2!H?x zfB*=900@8p2!H?xytf2w@BhEIfe{S^KmY_l00ck)1V8`;KmY_l00cnbt|4H1|NpMh z1R)>*0w4eaAOHd&00JNY0w4eaAOHgIEdjj$|K9RMG!Os*5C8!X009sH0T2KI5C8!X zxEl$u>;Itlx47WL zdZZ= zLY@!zj1=al!g49h%N0#pmsEc7>N3B$varCvurz;Vc4?KroL}W DO(}PP~0NHH}|(wrPrilAMqFh!By_c;{3Ih zJinB`kYCC#&gEaElh?Ej9h#mawf~>`>DM3mL$R25xBlV1O@C-|(z|<2$GxF!N&@?} zC9X?t2i(uK<7}&Bp_zxUrF9Wz=V(`FG;L8)$(bS;4H4nbvlN!}rkh`!U!I>`SXea* z^XG|aK`HHoc}=>dS)?N`?3IT?#j{>cu9T!()f;75lLX3N(T}@!BO%tUgK=MOl=iOs zLub!=-(1xJb+hbN-q{Pg+1)c8uoT|EZMRfuO;S}FFlDi_Uemk9O;Igwi0V`<8nGIj zx Xux*uJ=+Jd_p{1EEMCJWLHb>r;QOazj!|XG9T`0=m;6+uP*kmw?-RH0g-xk zZ^a)flJM1igx{!1>JC$0OiPlK6r)`QaX;0sa!1TQq? w9iUi4d2=LQdCV))RIKq##$L@RiJ)XlBz{j-eMDe$1FsZR)#Gvb3JjH`;2sT zr@p5@eYSO70$k4UHfPsJ{rujdKP2b9b;+eq=|W4i9`9_(T2(NU72>gMDwj(Z+S{Pr zn)}gSJ*(Z;8QHCKwfiuBrXU&{>w63S&>MO0Zs={~Q4(p@h?Pq5L|jS>wTgVBXGTA1 zWMnM8u7kZ@WGgY}sorLatS6G(aAY^NciA7x=e>>VE<>sP{5{k8iCzP$J 0rSGE4(nrg$tkQP0DwxlND%(%d0+Pu_#i$gM zjC{=cmL>PYuEX4E=m^=?|DE=Xg`t9m_X~R${Glo>eLMEy?euD8U`(4rA(e?|#q3)5 z48GWJ2IlFkRosl-M=G7Z`f{FkS GoX5bn6t<(%$M(iF7<(%Gjq{ryuuuBN5lR)@i@bdEQQPG! 4)_1x z?XMz09|(W|2!H?xfB*=900@8p2!H?xyn6z;{(tuj5dj2100ck)1V8`;KmY_l00ck) z1nzbMxc u ;7 W*(FaIbi |E82w@DB8sr z9}-LSomRbskwLFGm#$Kr`IW;=gs`qEwXIgPElJ&!t5r&vWvJ()TiD~ZY!(*v{0 0NrVAhV#@YE%;j>H~pZ+m9i-q=SjlHIY%2XwXU8$2wX?0~;OwZ~69 zU??=}ji%8p@=Xgvm1$w *8;Sb&oLHj9{qm62VBuHNxrVD8iYGA7a^cac9Z8`c9uC- uCYzS6sHb6W 32G@OgcRtpCOMYBIB*BtYq{6;ZsyUF+Fb2fLR#A zn>N!;8@pO&V~Eskj+`W$W0T{SGG@R8>9sQ_s5W+HOjl9cDl1}%zUga|n$%KbmhyUW z;%Rb7of|V`nU$7{A F}DFX^ gse$I0r6$dInm%7z^^vq*)hJ~KPg)*dCLSlguUHFY+LS(AH$+|J}jI$Fi7w&i9) zGwX7E)3u{*%xYVz4%fsna!s8ZvA2-judR{HiYFf@r^%T?Jwvn5%FHY{ag?m4Gl!ZS zT3_;P8M1FZ=8bQDo;gCsu``Fv?Ay)F9%*-Ytm$Cp-0ooZMw>(AQF1tuI;3aXZmlP2 zGkyFKGJPTv(3MM@1*v3d){nvuQ~ktrzz}O$7&4nSp{9+Y&$2O;>BmPNBAa8A0Vc^Z zU}E%xCl6EY >m44XI8iLvW{Cu<2 zcDfnrJKSc*$t`xq&ysNZuv9u6CdSBNGUnAYGQTq0;>`;5T~TC|%ub}dMizEMLx0P3 zq-km>x0@Q8Ez{$N$aG@H%hcNKm`=+m9AHM%L&Xh6snQoWnsa>fxH W*q&h&9X5>>BmQg$mZDO5EEn>Fg5zY)F9QKNDLZE%pu?GOH3SZ7EKK_Ee$ QXMJL^C{?S1SlX2JE57D2 z|5EcC=&4InIlKPP50tpzF9bgyycPUNFdMvo{J)R?;`sNBzc&8d_(NlVJNB=}ZjU`P z<{kadqdzh#k7h?lM*e8zr$%m$%#9p6^t*??c&Kvd^r4}^9|nFQ@V$Z80+#}(0^`Gf zGyHqQUmm_ae0iAnzeU&nKjFXazvd4Q{hy(KH}vJ9y&+-f*`X%}zcu*BgTFHPy@MYg zJUQ^Kfj=Jj7X#l;Qt$%;AaH;PgzL=>!BhJ3Ql&Y`zO^-upQ^JRK_vE+F
hXchbQW6V=$eW(3KUHibnfXZD*@>`Cyds ztZ=5zHV3gY6NbbNdqZZs2iq!;hoQB@!_aH@h}79m;Y3Qml TG*(Z1PE6 zJ=;=ROSZnhtg~&v@e@xPa!mt6XVZi&{A6P2GffO(?C{Y#Tl9}kJjp1U^-KwS{&<}& z^G`&M>k9M>Z%cxH6t3%w`}A=`gJoifFpQdu`*A~sWn{?EkB`*Z>V9nUIMZQSFd_QE zRNYV2ClX;@N$YhBOHQlkWSy<=Ga35cd;N9bRt+;YgtZD!*4ctj=7zdf4Kp_+whEuB zvsFJ53p1UqVrI+4wn`@IY|)>LJ)tWuE9=zt)E!GN74UjVq|TQ76R9T*xpqrKtj(4! z{bXxswc8p>E!*RDj%+7po?t@lhD@eq75TItP=7s7(8Tq1y1v$=O-p98h-YQfpCZ$l zoI$X|*idRWf1_z`NNta8h_#tdev-^12?ntvG}CJ{eDrlPJUVeq$4cdPsgK{Lx+fyX z43tJ~OWWf+&H9!m=G_wW@GYu;?D#Q51gkX8&TmuA@e_|5jad}StvRHuu)`;BlEviA z kZ@bUQE%KSp9c8*Z9hmxd>x9Cx z$RE+O*jCi*Yh`6y6RX#)CN&GG{j1k`MJ-8crov>+A2CufElf8f6|>mxxY=|x@-Zz; zM 4cwmewj%sLsz&OF+dK~)oNZ%Vvmv>2}!C)UUzb?(uQ z94r?ji4G^J>C};h PmPosKwn*l={D7W`zLtnv^vcXlv1~RX ztKl!Q_tJQ?N^i?&3gmfqe!xh{)z?VN&0B1G8@ai98~M3-r$0g7nYjU$q^m1S)Wz>f zf&3 kBH@yv(*(leGPJEOMr!x;50^3Xt ;1&DapxGM;#uj3;9c zGns9cOlQmN$V+5)Y%*jiwHPud{v%X-{6xqm&&E!-SZP|=G})Lji$|Bq;^;)k6k@Vs zb(dbGy7`rd^s~3#q-2L~@5r?*9Pi6DKmY$#F8I|0bisjCKmY_l00ck)1V8`;KmY_l g00cnb-X-vW&&N$avk`yx(#_xa!tIjy%nUvMe^73wF#rGn literal 0 HcmV?d00001 diff --git a/home/__init__.py b/home/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/home/__pycache__/__init__.cpython-38.pyc b/home/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc58e4b8117ce7d9d255f105ab161476b32ba8eb GIT binary patch literal 128 zcmWIL<>g`k0?iYF2_X70h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2DN*(xTqIJKxa vrW8oVWR#^=r6k5= lIYq;;_lhPbtkwwF7DY48#loF+>|_ literal 0 HcmV?d00001 diff --git a/home/__pycache__/models.cpython-38.pyc b/home/__pycache__/models.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a7da3d930df96a20b68eaa24e43bbaf2bb85c5a9 GIT binary patch literal 371 zcmYjM!Ait15S=95(p|bIKfzN$`T-)c;6YD|B6}%?7 1J&>B&O literal 0 HcmV?d00001 diff --git a/home/migrations/0001_initial.py b/home/migrations/0001_initial.py new file mode 100644 index 0000000..ef46d12 --- /dev/null +++ b/home/migrations/0001_initial.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wagtailcore', '0040_page_draft_title'), + ] + + operations = [ + migrations.CreateModel( + name='HomePage', + fields=[ + ('page_ptr', models.OneToOneField(on_delete=models.CASCADE, parent_link=True, auto_created=True, primary_key=True, serialize=False, to='wagtailcore.Page')), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page',), + ), + ] diff --git a/home/migrations/0002_create_homepage.py b/home/migrations/0002_create_homepage.py new file mode 100644 index 0000000..5d611f8 --- /dev/null +++ b/home/migrations/0002_create_homepage.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +from django.db import migrations + + +def create_homepage(apps, schema_editor): + # Get models + ContentType = apps.get_model('contenttypes.ContentType') + Page = apps.get_model('wagtailcore.Page') + Site = apps.get_model('wagtailcore.Site') + HomePage = apps.get_model('home.HomePage') + + # Delete the default homepage + # If migration is run multiple times, it may have already been deleted + Page.objects.filter(id=2).delete() + + # Create content type for homepage model + homepage_content_type, __ = ContentType.objects.get_or_create( + model='homepage', app_label='home') + + # Create a new homepage + homepage = HomePage.objects.create( + title="Home", + draft_title="Home", + slug='home', + content_type=homepage_content_type, + path='00010001', + depth=2, + numchild=0, + url_path='/home/', + ) + + # Create a site with the new homepage set as the root + Site.objects.create( + hostname='localhost', root_page=homepage, is_default_site=True) + + +def remove_homepage(apps, schema_editor): + # Get models + ContentType = apps.get_model('contenttypes.ContentType') + HomePage = apps.get_model('home.HomePage') + + # Delete the default homepage + # Page and Site objects CASCADE + HomePage.objects.filter(slug='home', depth=2).delete() + + # Delete content type for homepage model + ContentType.objects.filter(model='homepage', app_label='home').delete() + + +class Migration(migrations.Migration): + + run_before = [ + ('wagtailcore', '0053_locale_model'), + ] + + dependencies = [ + ('home', '0001_initial'), + ] + + operations = [ + migrations.RunPython(create_homepage, remove_homepage), + ] diff --git a/home/migrations/0003_homepage_body.py b/home/migrations/0003_homepage_body.py new file mode 100644 index 0000000..121e6a8 --- /dev/null +++ b/home/migrations/0003_homepage_body.py @@ -0,0 +1,19 @@ +# Generated by Django 3.1.7 on 2021-03-17 09:40 + +from django.db import migrations +import wagtail.core.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0002_create_homepage'), + ] + + operations = [ + migrations.AddField( + model_name='homepage', + name='body', + field=wagtail.core.fields.RichTextField(blank=True), + ), + ] diff --git a/home/migrations/__init__.py b/home/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/home/migrations/__pycache__/0001_initial.cpython-38.pyc b/home/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..85ee5bac0863fdb1f85b3070f92a6330025ca021 GIT binary patch literal 723 zcmY*X&2AGh5cYa^lg*#h3laj(NPCHb)DuFeRZ8K~0&06%MKVrik~-bL+72kW!nF^= zoA3<2a^ejTmoVNGHOy*0dHjuc=JWV!Fz7O}^vB0fnltv(2m2OLa71pN699uCXGM?& z1J1du?i0_Z^ZE}|11=u!E;>zw_oOHK5? z$c2?EpH&*ON2Af y4Y{&ioj3=ywM1OT4TIPJJ!c9v@$fk5AsXZdK#`*uFFUlu{e`b2xrExgs%UvLc*Z zf5r{S$u(Ww 3{7N8V?8IUkh~3FaQ7m literal 0 HcmV?d00001 diff --git a/home/migrations/__pycache__/0002_create_homepage.cpython-38.pyc b/home/migrations/__pycache__/0002_create_homepage.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d58de6d196bb8b5d0c2d947006ca915b142152dc GIT binary patch literal 1463 zcmZux&2HQ_5T-~ #1xOO3QiE{g?NS)_Nh&`Mj9 zN?>CR6iBZ74)!r`l4szxr@TSoi#sFP&bkN*ew-h2G&7pv%fTQaFw*zG|2gat@((iG zg9GyvmVF4Ihzd%w3?@N96jkgknNY=52s`_Qs7UqR64leeg1=!CuEcYa#vkAwNduoO ziQCBvnD7zdn?C8QCEc-XWnw-LC&Vm!#QWPlGQVb~GQXHso%@)Ces!&Cn;FO(_ zfUGG G1g2O=Y6s5u)j-|ah!e5qt!}s$>bBb5FbIl(%XjwA z@8xynbmiR9O54$1$GiaM`1b2;=CY#9YokZcvf2M6&kLu|2lINVN52B#fe#ohB!Cvm z3)HMY=s8mFs1KL5(xs2H)k>Dxfi5Q;FHXdGJpK`v3E=v1^Z?I4NQDnw;Y#gyl*taA z>= 7lujETK_uE~Kfp7!k-5L1 zBpmje^WUi7>OgD0hdVcF9GeJNTjNiG_+*WD^~|uLHgv0^DKr*Sy(?K;qhjAMuw&4w z5eVpRO3f{#cM&i%2D>Ze<{r|YBYc7IWhea#>8}y)BYcB^iR|Dzp#0G2W&KKDCk53O zzt<*(f5yxYK<6mf9@no18qs7DD10e`SukOW0&*RmM!KiP8FH~=(01I%zg;~MDfK&B zjW*dGkAHe3+k(|y^+BlUhVNsK$f7D-k(K*t;)Rr0#!~u3;?br=x-aElO;%oMOjF4N zeF#15`_Lh}Qo70uZ4LISkN;?@XGd;cSM9HCL-a|#(wFboR+8FuVUQ*Tz&FzN0R*EL tJj9h;w3_`i^s!oG)vO+=gZ48YZMP>rWz>tuT?9|iFB<{$nYb?o{{iu&evtqG literal 0 HcmV?d00001 diff --git a/home/migrations/__pycache__/0003_homepage_body.cpython-38.pyc b/home/migrations/__pycache__/0003_homepage_body.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d950136809f20601935c20c9b797b2ad982f5103 GIT binary patch literal 601 zcmYjPOK#La5bd95JSKyXNVtPpj7DJ>AryoJt3=9gV_9l?TosRv#~$1>fn*EY9E44d zk^}TME3SZql4?7@vg)aRe*LP|C*yI%$j+`0zFu+0ZhZ3G6eYXl_ALQ0;1yf&gmWK@ zN+j|N0}1Lk1BJX)zht679I-g~OY 5+x^Vfp4)(uU2;1mK$dV|i2$DS zM4~DK5Fl|-4$H6{fr8+Y!{Aa c*nl}qfHmB3+w$55KE7ZQSGEP zF;cSz&W}l0Fsn@cEtaIP0jzXw7U)!m!D)dN?8h%$sJpt>F4CIj))i8`q4oE*sr; (nJ6|{*9KLULA9B%l- g`k0?iYF2_X70h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6wj*(xTqIJKxa zrW8oVWR#^=r6k5= 1DW(0 Gh#3H*9Uu(= literal 0 HcmV?d00001 diff --git a/home/models.py b/home/models.py new file mode 100644 index 0000000..af7b579 --- /dev/null +++ b/home/models.py @@ -0,0 +1,7 @@ +from django.db import models + +from wagtail.core.models import Page + + +class HomePage(Page): + pass diff --git a/home/static/css/welcome_page.css b/home/static/css/welcome_page.css new file mode 100644 index 0000000..ce8b149 --- /dev/null +++ b/home/static/css/welcome_page.css @@ -0,0 +1,204 @@ +html { + box-sizing: border-box; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +body { + max-width: 960px; + min-height: 100vh; + margin: 0 auto; + padding: 0 15px; + color: #231f20; + font-family: 'Helvetica Neue', 'Segoe UI', Arial, sans-serif; + line-height: 1.25; +} + +a { + background-color: transparent; + color: #308282; + text-decoration: underline; +} + +a:hover { + color: #ea1b10; +} + +h1, +h2, +h3, +h4, +h5, +p, +ul { + padding: 0; + margin: 0; + font-weight: 400; +} + +main { + display: block; /* For IE11 support */ +} + +svg:not(:root) { + overflow: hidden; +} + +.header { + display: flex; + justify-content: space-between; + align-items: center; + padding-top: 20px; + padding-bottom: 10px; + border-bottom: 1px solid #e6e6e6; +} + +.logo { + width: 150px; + margin-right: 20px; +} + +.logo a { + display: block; +} + +.figure-logo { + max-width: 150px; + max-height: 55.1px; +} + +.release-notes { + font-size: 14px; +} + +.main { + padding: 40px 0; + margin: 0 auto; + text-align: center; +} + +.figure-space { + max-width: 265px; +} + +@-webkit-keyframes pos { + 0%, 100% { + -webkit-transform: rotate(-6deg); + transform: rotate(-6deg); + } + 50% { + -webkit-transform: rotate(6deg); + transform: rotate(6deg); + } +} + +@keyframes pos { + 0%, 100% { + -webkit-transform: rotate(-6deg); + transform: rotate(-6deg); + } + 50% { + -webkit-transform: rotate(6deg); + transform: rotate(6deg); + } +} + +.egg { + fill: #43b1b0; + -webkit-animation: pos 3s ease infinite; + animation: pos 3s ease infinite; + -webkit-transform: translateY(50px); + transform: translateY(50px); + -webkit-transform-origin: 50% 80%; + transform-origin: 50% 80%; +} + +.main-text { + max-width: 400px; + margin: 5px auto; +} + +.main-text h1 { + font-size: 22px; +} + +.main-text p { + margin: 15px auto 0; +} + +.footer { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + border-top: 1px solid #e6e6e6; + padding: 10px; +} + +.option { + display: block; + padding: 10px 10px 10px 34px; + position: relative; + text-decoration: none; +} + +.option svg { + width: 24px; + height: 24px; + fill: gray; + border: 1px solid #d9d9d9; + padding: 5px; + border-radius: 100%; + top: 10px; + left: 0; + position: absolute; +} + +.option h4 { + font-size: 19px; + text-decoration: underline; +} + +.option p { + padding-top: 3px; + color: #231f20; + font-size: 15px; + font-weight: 300; +} + +@media (max-width: 996px) { + body { + max-width: 780px; + } +} + +@media (max-width: 767px) { + .option { + flex: 0 0 50%; + } +} + +@media (max-width: 599px) { + .main { + padding: 20px 0; + } + + .figure-space { + max-width: 200px; + } + + .footer { + display: block; + width: 300px; + margin: 0 auto; + } +} + +@media (max-width: 360px) { + .header-link { + max-width: 100px; + } +} diff --git a/home/templates/home/home_page.html b/home/templates/home/home_page.html new file mode 100644 index 0000000..ac266f2 --- /dev/null +++ b/home/templates/home/home_page.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} +{% load wagtailcore_tags %} + +{% block body_class %}template-homepage{% endblock %} + +{% block extra_css %} + + +{% endblock extra_css %} + +{% block content %} + {{ page.body|richtext }} + + + +{% endblock content %} diff --git a/home/templates/home/welcome_page.html b/home/templates/home/welcome_page.html new file mode 100644 index 0000000..6368471 --- /dev/null +++ b/home/templates/home/welcome_page.html @@ -0,0 +1,52 @@ +{% load i18n wagtailcore_tags %} + + + ++ + + +++ {% comment %} + This works for all cases but prerelease versions: + {% endcomment %} + + {% trans "View the release notes" %} + +++ + diff --git a/hvezda/__init__.py b/hvezda/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/hvezda/__pycache__/__init__.cpython-38.pyc b/hvezda/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d7b48ce0677a29dcd739239c08defba3a4746fdf GIT binary patch literal 130 zcmWIL<>g`k0?iYF2_X70h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2DV*(xTqIJKxa rrW8oVWR#^=r6j_r`1s7c%#!$cy@JYH95%W6DWy57b|3>j12F>taZDUU literal 0 HcmV?d00001 diff --git a/hvezda/__pycache__/urls.cpython-38.pyc b/hvezda/__pycache__/urls.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7a0c5d2e40370100b5f00799e3dff44222812feb GIT binary patch literal 866 zcmYjP&5qMB5VjLHP4m-j%a#Ba4oFBn&>oQxLj3FsApt8Eda){%5W8)v{H*MBSM=KR zJ_v7ucmyBe#4D^gFm}@2b(HZpGhb%DaXbw}55XG!{PZpS8X=m@gId`O3;W|-a0BN{=?0gra*DFWVr z4}p6R-utY3X*Dsz4xqNLYcFvGJl6Y+M*Y7qCmLbpN?uiIv6LfAwbLTWHjFEB7FR1s zwqlm21pu-Unbd*vlwZhg$kuVOET5S4Wa~7$$I4`r^P-ZIZCmnKB&&&XYM_f0an50P zWEEFw0w}7{BF(s*LknnIaZx}g8t!Y&MOjt~eH=Yde%*GQl*K|=p#M6e+ ++++{% trans "Welcome to your new Wagtail site!" %}
+{% trans 'Please feel free to join our community on Slack, or get started with one of the links below.' %}
+~5P
}fifCn_gXr%Yv%uEjsLV`B DEo;~a z&dSQHAahX|jvRyUrLka{TLNp}bEWt<1&mw9Sz*Ll!Ak`-C|2`IZcCaMAXu96vQ#qT zP8yx2i1!Ie3R3}-8u^NCff B$<2TXk zcxkSki3OC(+!UZ)d~I_XhyQUJWIPD`iyU0i+$B3Q{Nd^6598rQGC8}t8jXjO (RX-cL0 literal 0 HcmV?d00001 diff --git a/hvezda/settings/__init__.py b/hvezda/settings/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/hvezda/settings/__pycache__/__init__.cpython-38.pyc b/hvezda/settings/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e6f76f9161481980ef19bc5b34e908e12977ff7a GIT binary patch literal 139 zcmWIL<>g`k0?iYF2_X70h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6wj*(xTqIJKxa zrW8oVWR#^=r6j_r;?$Co%)IpCnE3e2yv&mLc)fzkTO2mI`6;D2sdgZfJ_9iW0Ht>z A8UO$Q literal 0 HcmV?d00001 diff --git a/hvezda/settings/__pycache__/base.cpython-38.pyc b/hvezda/settings/__pycache__/base.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2d599f62eb13e7130f7d39cddf78aae14a489b65 GIT binary patch literal 3010 zcmb7GTT|Oc6t;!1jWL8v2)U5fZJH(|K@KGiDa}o>1#xR^icIM2Frx~e#a^O|qm@I@ zZ^=XR*8Y?J2EF#B{R8bxrW1N3*+wzUlv>t$_gubn_Ut)ly)`zLP2gw#w;z5gP9_q+ z2aEV;1{Y89 x0-gIQ`coyljrwrC*OKaJ<#)Q$KIz6SITDBs6`#! zrI6n}%-?`eWkCm%S$Xd2j@y;Ik?(K>$#*fAq(x~NwO0|+v>lpf7NVQF%WNx;U$@23 z9y912G*7cF*KPBaLILasmm(WI4;r>vpjH6^3$EQ}4PNN^TZrJ@7R~Q<3?pwa?&j^i z P3osO)tyGmn>o;%uFedpVOy@lcBNp4 z+`BYLb|^3hgUP+|9*dg06u39mTXW{p*s{Z^!@Y?<*JAB9Mg7Sh1>@8)sTGH0rrt!1 zzKO1reG}o4dAS}!0}qAdOdF`tFgo0&4oSIsv&mfVd~^W)ZAF^XgVc`O@~#XJgGiuT z?qM5UnH^wq$~hkYNrs7x(D}=Q8ZIVGBS;hO-5ca}(Ik@r81z7QsH8@;^*+U$?`p+_ zFriG_l8WKae~5BtPb%W@g3*JR=< sXIhm30s18ao&9#b6LL~rMD<@G2UF|GTj zY{FoTm-~9-CDxqu ZwAK!ai^ud9PU>;m=s3(h#85?(nE3K>ZbbRqPu#eBo84@V zDUL=>L+UsN_X=I3E;ZW*_6=zly`&cO>RKv=Eu`LMbAO~K$?Ie)OrSTehSlG|IM`SQ zHwOVv%1A(WJ5BG_86+M03Oj-8-R{cvYBxN>Q;-9?w=^K!Kekg8dc1kjPd}53-z(J; z5liJw)z8Qq8(KI^*EZ_qT2=LCyOBHKO(yB>HlAvjGJYE9p58HBuU8VVdmKpq%D{fH z iFLfZyRJ+dAh5wgVbAMFyccX$u>U>;_G&<5HEG z%+P}@c@at2j`#SiNbAgEX2+~htLe6m^`D$oKPt YAtj) z8QQ8BPaG)TWW7cs?J*0m{YtCYcGN@cjOJ=c@dm5@G$py+E``nBb{OT6B1uJ(-lKs% z!~wW#JJ `YsPC8BGiNtfrCCjm_G3O0gcKD#<*P zRVA4D a>+_#zKkJOd*jfz}X zRDWVyT`LD#m2y!I65k&w$#pq^R{e|eR{goQA*7ZQ*8>Qdy4ZBhehmWO7?xtIOqzrk3l97SvrgV95M6;atZW z42So3iYq%ojq#n}YTt>DtM}9UKeMx|b1JnD{metWmpcZ1jDOM+{1+U=v5YX6%w>h7 zAmDrQ38-<-AL86cQiAZem=i@o$Q=noG0A^~BjLSxBu 24>G~k*#4=u99Z01`NpHpj%7oIi7lNDt| zD2oZ-qZW$n>aW{26Ve!CL1nCts=Ygz>Y~~cvfU;c$V{cx>hw|Fz3+7GuFRl^N~7gg zE43zS*JaG}C)krmjrGRo0pi@}Z-7UM9q7AID?2?wxp20Mo%xQ21pf^|gJ8jC!Xb2L eZT2#Gz4po0qc>3o;zUtWHx%NUp=&S=kKqsCa%sr` literal 0 HcmV?d00001 diff --git a/hvezda/settings/base.py b/hvezda/settings/base.py new file mode 100644 index 0000000..bb1c465 --- /dev/null +++ b/hvezda/settings/base.py @@ -0,0 +1,162 @@ +""" +Django settings for hvezda project. + +Generated by 'django-admin startproject' using Django 3.1.7. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/3.1/ref/settings/ +""" + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +import os + +PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +BASE_DIR = os.path.dirname(PROJECT_DIR) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/ + + +# Application definition + +INSTALLED_APPS = [ + 'home', + 'search', + + 'wagtail.contrib.forms', + 'wagtail.contrib.redirects', + 'wagtail.embeds', + 'wagtail.sites', + 'wagtail.users', + 'wagtail.snippets', + 'wagtail.documents', + 'wagtail.images', + 'wagtail.search', + 'wagtail.admin', + 'wagtail.core', + + 'modelcluster', + 'taggit', + + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', +] + +MIDDLEWARE = [ + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'django.middleware.security.SecurityMiddleware', + + 'wagtail.contrib.redirects.middleware.RedirectMiddleware', +] + +ROOT_URLCONF = 'hvezda.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [ + os.path.join(PROJECT_DIR, 'templates'), + ], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'hvezda.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/3.1/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + } +} + + +# Password validation +# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/3.1/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/3.1/howto/static-files/ + +STATICFILES_FINDERS = [ + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', +] + +STATICFILES_DIRS = [ + os.path.join(PROJECT_DIR, 'static'), +] + +# ManifestStaticFilesStorage is recommended in production, to prevent outdated +# JavaScript / CSS assets being served from cache (e.g. after a Wagtail upgrade). +# See https://docs.djangoproject.com/en/3.1/ref/contrib/staticfiles/#manifeststaticfilesstorage +STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage' + +STATIC_ROOT = os.path.join(BASE_DIR, 'static') +STATIC_URL = '/static/' + +MEDIA_ROOT = os.path.join(BASE_DIR, 'media') +MEDIA_URL = '/media/' + + +# Wagtail settings + +WAGTAIL_SITE_NAME = "hvezda" + +# Base URL to use when referring to full URLs within the Wagtail admin backend - +# e.g. in notification emails. Don't include '/admin' or a trailing slash +BASE_URL = 'http://example.com' diff --git a/hvezda/settings/dev.py b/hvezda/settings/dev.py new file mode 100644 index 0000000..fed6301 --- /dev/null +++ b/hvezda/settings/dev.py @@ -0,0 +1,18 @@ +from .base import * + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = '^anrkn_hjy&+z&6i$#^k22jma)jab)3af-*vsn%f$t7u27q$ft' + +# SECURITY WARNING: define the correct hosts in production! +ALLOWED_HOSTS = ['*'] + +EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' + + +try: + from .local import * +except ImportError: + pass diff --git a/hvezda/settings/production.py b/hvezda/settings/production.py new file mode 100644 index 0000000..9ca4ed7 --- /dev/null +++ b/hvezda/settings/production.py @@ -0,0 +1,8 @@ +from .base import * + +DEBUG = False + +try: + from .local import * +except ImportError: + pass diff --git a/hvezda/static/css/hvezda.css b/hvezda/static/css/hvezda.css new file mode 100644 index 0000000..e69de29 diff --git a/hvezda/static/js/hvezda.js b/hvezda/static/js/hvezda.js new file mode 100644 index 0000000..e69de29 diff --git a/hvezda/templates/404.html b/hvezda/templates/404.html new file mode 100644 index 0000000..3a5500e --- /dev/null +++ b/hvezda/templates/404.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} + +{% block body_class %}template-404{% endblock %} + +{% block content %} + Page not found
+ +Sorry, this page could not be found.
+{% endblock %} diff --git a/hvezda/templates/500.html b/hvezda/templates/500.html new file mode 100644 index 0000000..72b6406 --- /dev/null +++ b/hvezda/templates/500.html @@ -0,0 +1,13 @@ + + + + +Internal server error + + + +Internal server error
+ +Sorry, there seems to be an error. Please try again soon.
+ + diff --git a/hvezda/templates/base.html b/hvezda/templates/base.html new file mode 100644 index 0000000..9fbf28a --- /dev/null +++ b/hvezda/templates/base.html @@ -0,0 +1,40 @@ +{% load static wagtailuserbar %} + + + + + ++ {% block title %} + {% if self.seo_title %}{{ self.seo_title }}{% else %}{{ self.title }}{% endif %} + {% endblock %} + {% block title_suffix %} + {% with self.get_site.site_name as site_name %} + {% if site_name %}- {{ site_name }}{% endif %} + {% endwith %} + {% endblock %} + + + + + {# Global stylesheets #} + + + {% block extra_css %} + {# Override this in templates to add extra stylesheets #} + {% endblock %} + + + + {% wagtailuserbar %} + + {% block content %}{% endblock %} + + {# Global javascript #} + + + {% block extra_js %} + {# Override this in templates to add extra javascript #} + {% endblock %} + + diff --git a/hvezda/urls.py b/hvezda/urls.py new file mode 100644 index 0000000..d1b8710 --- /dev/null +++ b/hvezda/urls.py @@ -0,0 +1,39 @@ +from django.conf import settings +from django.urls import include, path +from django.contrib import admin + +from wagtail.admin import urls as wagtailadmin_urls +from wagtail.core import urls as wagtail_urls +from wagtail.documents import urls as wagtaildocs_urls + +from search import views as search_views + +urlpatterns = [ + path('django-admin/', admin.site.urls), + + path('admin/', include(wagtailadmin_urls)), + path('documents/', include(wagtaildocs_urls)), + + path('search/', search_views.search, name='search'), + +] + + +if settings.DEBUG: + from django.conf.urls.static import static + from django.contrib.staticfiles.urls import staticfiles_urlpatterns + + # Serve static and media files from development server + urlpatterns += staticfiles_urlpatterns() + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + +urlpatterns = urlpatterns + [ + # For anything not caught by a more specific rule above, hand over to + # Wagtail's page serving mechanism. This should be the last pattern in + # the list: + path("", include(wagtail_urls)), + + # Alternatively, if you want Wagtail pages to be served from a subpath + # of your site, rather than the site root: + # path("pages/", include(wagtail_urls)), +] diff --git a/hvezda/wsgi.py b/hvezda/wsgi.py new file mode 100644 index 0000000..e472a66 --- /dev/null +++ b/hvezda/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for hvezda project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hvezda.settings.dev") + +application = get_wsgi_application() diff --git a/manage.py b/manage.py new file mode 100644 index 0000000..1a6d6cf --- /dev/null +++ b/manage.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hvezda.settings.dev") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..fafadc7 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +Django>=3.1,<3.2 +wagtail>=2.12,<2.13 diff --git a/search/__init__.py b/search/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/search/__pycache__/__init__.cpython-38.pyc b/search/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ede0d42ba24f7e7320bc99612abc55cae7dbaa3e GIT binary patch literal 130 zcmWIL<>g`k0?iYF2_X70h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2DV*(xTqIJKxa xrW8oVWR#^=r6k4_rzRF9XT-$EXXa&=#K-FuRNmsS$<0qG%}KQb8Soj1831ph95?^~ literal 0 HcmV?d00001 diff --git a/search/__pycache__/views.cpython-38.pyc b/search/__pycache__/views.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b33f189104b2635acff18a5dfd5170be7bc934b7 GIT binary patch literal 906 zcmYjP&2AGh5cc2hX17U*3YE%@Loa&?cT}OGwnAJg3ax-uq_V_Te%PO2JE>A_PwiuH zNVxF=JOj_*E2lgG5(mWCyFhJuJTu?Scz%4|=|l)t{QdO(Pm0hFE8JZKgabJ02na_U zXDG)B&PhUYnow+YBxAXkc#fx;p9e|cc$T&DFbRS8xPOb1hzGAx+}c1S6jKu(=QF*0 znT~|%S$b0HXT^&`i;<8f1kI#Kbtz+PdS@b^WvLdggqoFw5};$&1#a(jF645EZO~@< zaJS$b!cpIVRA`D;m}8FCSxzK0iJ)bR@L29Wp`rVJe1N8J0~J!uYkl3>=nnelebC!-}#Hl7UW!mcSoD z(tZjP7W4eV=B1 AeaB;GPRe3}-c zvOg@P=>L1&C100et1`Qdm2SRRANu9~n5)X%zf4Cuon&>CyyPNNu6@bQU!=~s-(a?V fE(KTQ9rDn=*4hWNc_yCPSt?uC1KcKU+@^m3Nv7jL literal 0 HcmV?d00001 diff --git a/search/templates/search/search.html b/search/templates/search/search.html new file mode 100644 index 0000000..5f222e5 --- /dev/null +++ b/search/templates/search/search.html @@ -0,0 +1,38 @@ +{% extends "base.html" %} +{% load static wagtailcore_tags %} + +{% block body_class %}template-searchresults{% endblock %} + +{% block title %}Search{% endblock %} + +{% block content %} + Search
+ + + + {% if search_results %} ++ {% for result in search_results %} +
+ + {% if search_results.has_previous %} + Previous + {% endif %} + + {% if search_results.has_next %} + Next + {% endif %} + {% elif search_query %} + No results found + {% endif %} +{% endblock %} diff --git a/search/views.py b/search/views.py new file mode 100644 index 0000000..d9ad9d0 --- /dev/null +++ b/search/views.py @@ -0,0 +1,34 @@ +from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator +from django.template.response import TemplateResponse + +from wagtail.core.models import Page +from wagtail.search.models import Query + + +def search(request): + search_query = request.GET.get('query', None) + page = request.GET.get('page', 1) + + # Search + if search_query: + search_results = Page.objects.live().search(search_query) + query = Query.get(search_query) + + # Record hit + query.add_hit() + else: + search_results = Page.objects.none() + + # Pagination + paginator = Paginator(search_results, 10) + try: + search_results = paginator.page(page) + except PageNotAnInteger: + search_results = paginator.page(1) + except EmptyPage: + search_results = paginator.page(paginator.num_pages) + + return TemplateResponse(request, 'search/search.html', { + 'search_query': search_query, + 'search_results': search_results, + })- +
+ {% endfor %} +{{ result }}
+ {% if result.search_description %} + {{ result.search_description }} + {% endif %} +