From 46765aebd267b53f81b2eb2159933772214e68de Mon Sep 17 00:00:00 2001 From: anymavpochka <31773307+anymavpochka@users.noreply.github.com> Date: Mon, 11 May 2020 14:32:11 +0300 Subject: [PATCH 1/9] Add files via upload --- .../Workshop2/WorkShop2 Flask.pdf" | Bin 0 -> 448428 bytes .../Workshop2/flask.py" | 56 ++++++++++++++++++ .../Workshop2/source/templates/404.html" | 10 ++++ .../Workshop2/source/templates/all.html" | 49 +++++++++++++++ .../Workshop2/source/templates/dish.html" | 21 +++++++ .../Workshop2/source/templates/user.html" | 19 ++++++ 6 files changed, 155 insertions(+) create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/WorkShop2 Flask.pdf" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/flask.py" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/404.html" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/all.html" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/dish.html" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/user.html" diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/WorkShop2 Flask.pdf" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/WorkShop2 Flask.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..6f00a06b66105a2cfe61f4f89cbd253e3551c1d3 GIT binary patch literal 448428 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 z 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 z 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®D+C=t=rgXI}VE3dvOYJ817u>!n zS3Mr!Z)e}wZ&RLninh()vaewOo33-ORAqhD^-jIZRfxICJA^%rNFX*@4Bb=FoBWG@$ zxpijq%zX(+1d`|~sU%LaTe3%zBuSMVI5Q{7MC3>gNsgRZksOnpsFGrhV#!I#X-TEz ztmK?TE@_Z7OIjrzk}gS)L?;EYr^m)dgIN8D=?3D+64?>X8t#G8FEACLf?gh zp*KQ*i!I6D&z5e@x8gMH^UqWghm-&jP3KEW$eeN3l1!X&CO2y`XPj>)&bSyu9M+1K zWKtf<-|{_1zg+;3jDdj^3@qNNQy~P>fc&pPq?9EW(+ydu~I)ff_>2E!8|$B+nh7(NX%81~@Y--Ra`F(Zbj z=wAlQx8^F%2}zgcNDoPmNRLTRNQrKhEp7|u%1N#*#Y0n3`DtC8R@*#D?M~3OS+1^tV?fVd|P@~`kWYy-@=FwjKp~oL;v!o5R`O@398>BDnLta}_n~ePA&|Xhq zsN_S#RzTj))#ge&YK2l8a&fG-Kx)EP#kGYvTd%aTwyd@s=RZZ!f&I8^t7@xJ9v%OO zy{`d_>be%)d!KVgenv5f2#ACtQDVK8AfA?0fTaO6?rb>U*oJzCOF@kuKpOxWJ0Y$Dtq67~#SSGx+}PE)57HMKHZ&e=>}@<+ zV})AmYiw&gN#(0H43Kvnjc13;251~?ywtF_F$%qHyh14tp#N&_Jq_v37P4&w_@g^p zoUP7wgZ(-n9@y;M?d*2$clHchr~`j=q&W{ekLj)V0Mea@v6VGIJFspv`y1bL-GjbZ z+<2$qIKh3V3^lyO8RVSUaKstzjCRI36B^by=Qxv{Y1Ff!pE|Rgd7$ZD!)E6qXVHu9 zhTG0ks>5Puxw8^$(rI(nI_n$XgA$<)ola*nKL2!X^*;YppMGxIy{UWC{!Klb4trV> zOK2S2bPNHXYc^a|b0BZiTbs^l{YR})Pwi2Q19;n1?N^?*guaDON3nNoy1MB`qqQ-1 z(=F8CY;{FY4y>DwhT*>NhW@75rWp`sH(qZ_f{^MAcin5sY{+TK zeKEDE5K0_^*xFRmw7RLHsT%0(n(7*E(zDtvP1_;t#AnEj!t)fl@j7Ta+SK=AVbjTm zJ;P6v2O9&LuF&)3_dxOvl(D5@v-inzQ|6}VjRVNRC(P>e<;I=r^W{xNFxIfQ;l#7^g3Pkp(V%j7bEb6O_5uxT;|6G{LOp0csm(kIU}b;M(YF8qtHxU~WU8 z_HlM2xHh}CVc&7>aP6W#-a2;|TLHk|DUH#;Tr-#G*=sN8>gQL=Q z-nk#fb}YdGwcoiex`tfWTsK{o#tATw&S*H|y8R6^&bFKG;pswM+I`4<#C_b|Uz6!RP4i#6+IJf+y3e@J zQ=Nd_?rZ973H7uC=F$o7i|!#>3%>;G-i-eW`zY|Xn$^2uBQe6(A5`qmvErfaqP6*8qwpQcU;Y7ga1J=;DF`s4m zP_G5-v#_sN47&ppTL!fk4E6jRo5Z;Jy7@L)L~p%pm5kfZLTrP0P?~Eiw-4AVHNdnD zpjJyG)B`wmyk;HGBUh=VZ93joT^i{v0Ifc8y_QC3*T9qBt>byXV@tb^R<298=*q10 zv8P<)KQ6TUfUhkN15X`Q`q=3K4_{BW>0+Das~*Znfp$&4U26lUuD}PoLEHMVk-pEr4?msRv*GA7zt%e0j!k$7p;^Uk13Ur9H7{UiQ@K4IS^6R!?{BhWUCe z12EaWbB5M8)|vrAjb*Qm0EhvIw|nOYtskyUv8&@(Kfge{HeJh`V>gV)wH6hSW{-vR z5-mLgV78t5qCE*96(AEJSG}fr9{p>!d)J`HXj3YyMYT&`hKFx21hD$4>(Tn=qxzcf zeC2OmLR(4zR_pA9y0upr>uQ7zzPhkJi&Yq2*F62i!!H9^qd^sb-ELS<*KW||)vrz1 z7dF~QtZ!?Zw6^eoN6%(0-UhG(V3&R5+N6WE9V*aV=ArG;)vLCauH6f8z^6?QX}%rN z`RohW_l~RnqK|9)bvjQQ>uc>9fb#$s0fqps0o(+*4R8VriYDei$kBT36Zq%=*{^Dk>y?x`4GS_2>+O^fE zd~I%eRoF-FZE=381_%R)0$2x7r{%5Gm1EO<23__ByLSxN+l~8U&-nA~Lo|ErZab|L z_APerxJUYSb^Ph`+jr{h^VJP{?QJ@mXME}AC(m3oymv;MJH32+mwkACx9`){n`X29 zpie*X%;RT$+PK#49gCQ+7vQLx##2ziLBZqc6x4sI=k|PuVDwK86Id2wWw!wC0wk!g z3aX)O4#Xw^Ge9Un1V9WxJn)hso~1#eMn}06FDy$^|=dUzKYAD!Zl|VS`cDCtp@seVMbYxom4$OId4Kd)e-?ZV3BVo`vh4vL1*J1ML`v z6J@8$-YPp+cA@MT&@Y!=ExS>6t1Pc9Z&?6hjJ4EV#H*kVi*^+4SYZ(b8Q_4NfFdRblm?Wt$pH-kP8J@pDd5X2GTZ zjiuAS{}B9i@F&?b!HL0%EIIhy;CI=l%|ADvU@7K)b3aQRKXLqIHgEit@l)tOe*SaI z<2;nBCuxtcPcpXhAY)7CsIamZ;3zo!DRYRb;kd| z-)9p4vj|~9<3E@%m3@K6PqPxZ^ae z`}uzMMSg%EV3qtJKghnsdw374;)nPl_B`+9y{wwPS5d=%!hgbS{HOe`U{f}i9zDG1I z!aKYP&riVLx%f(C(|>2a{t$^AlGyVQiG?K5^$-a>GsGvn<0FAzDT&g6v1k3-YLvzrq2cffEe@r9S7krhTQXq@n&1QcFqd|B5+A9T{YtIyk$T0iRH;!4{J^jAgb&N9Ews{)^&_Rq{8&FyYLy@B zM@p^sWBo{}=locY4St?}D4M#_D`Z{LWZf6nuE|yTZP}4>&--oLk#g03TX&>fjUW4D zlJiKa{lMnOK7Vp+{n+PE&hE!Pe{wI3u#dAO*l!G|lh3yn9951OmA>{^-34p3!|t%4jAMht;-OoM>Mjt?1YoZ_2HFmh6M`&5lFQ#(-3WBj(u{N3mm@;|N|`qx0`NVjN|T z9ggFUc!#;J$FU8h*En`Limly?yV26(M9RUILJqWL@qV==-&k)S#>4h$v8Q~GzR_a; z^|qjFw0Z;CDk#M=Twk*uRbN^?LH%GpZ~gex%VXAu$BtopwemcAJpOpJ|hRG+mPB?t5@p7;YLMuWYfh{Jz^(9r^*{U?Z7B3@7B?=ive z2#bMskx6_=Fp+Gao&+7nyuBcIo*(6X2I_7m^F9dOaQ~;LZ)FPJ8A52`tp?6I(6fWr z!F{KmS_*m^csW3wfu05Q3J7_8wSk@h`U@e<0mwCQCIBaqLKvT==dfGM#KSSLyMQMe zc;_L$%P#Uc25KL);t)H@hIoX5z7Od58;FCP8R$Ei0wd%QYXi7y;NbJ{b_z{wz`!YI zCi+!{8^*31^67cl-zr(BfrkCf3c*l+)Zfx5cl_4l!2NIWgOvY{D?4k&7)yF?tu^oaNWQWzzN`6VNMx>w2lK~ z#{~1l4ZaTYoYF>;hj*Hd<3+rPodLXsAAoB;_W+E8Lp+&R^UVhOE+{LSb?|7g+-~4F zp)7p*)(kj>7a4eKKwA~N!lQV)fo_4(JOC@f0OW}`aOS{h#u*?PX8;~F%;PY-;68zA z6wj&@M5B%ct_pk(*5l6yLWzNuftAb@SQS{s#s$^{*06xU7Xx2pfq@$WUt&Rl^)NEc zG#YWQ5+q(9Ue%_-s&sg=3xp{Ld(F zYV(SBj`(N7-(p-IRKno?!3_6JQy8DSnt*AsFPOAg)?x`j==l14icj99)m_!SmiFr2 zn)=kf)V}JHg|~Bi7v8R^t-b=Gr20z!SxV8>!l8n_3x~3;8m~7u7V~LW?&@9ux91A- zxjp%OBp;TKc%Bj#4%Ijp4rvx#&p(^nTjR{O+BSZ^qPirz(9)h=SaU*^e6~C{7NF3d z)#?@are3w>_5zd)mzQg>tk+w5b!UyUy3^}z%`v^?!qcOAWVp)TX_51H+H&x!CLy=8 z=2&iLZm(L``Dbgo^Us1NRq`QM#(L3T*-XRr(q!9ayz=!A>`2K!`)nTNGoxj>v9=uB zW{sCV8t*UBL-O6Zo%!y3H?_;h)F=G)f>GQ3AuavU+twCpi^wgsEvfFTZUEjKTMX1? z4CHI5K3J1yi?_7filGL(svD43bJ@M4VT6m6x;^=x&4YRvRIh64 z3vz5#o)V}%dUHD=4R+dQ<@VZUfqipof~xy$F`%zZ^$)MWBagR>Y>D8z9cmbA0>6(V zz6CQJqq&m@mccwOU>^Sh%;1$UcL&1UUCTmf?tUWB0dwjknnx$o-1``JB*C|XZ?i=- zUoY04WJl2oq^=|{jp_ad?he7yGFW$N!8#6hIgmy=Zvv>hhdPaN5$+no*cAiq6zl>e=0UJosq)0RL+`_O=@ka1W>UHhKyRcUXfEI1kWKWoXSi)T*4lr=ttD zpIw5hLA?gpv$fH_t>2)b7eX@tX9o=$Yz%+r*JjYLjg_#s;Ciz`1O8q;i=I%dGiXR) zd*Q0YKnsI=F}%a_&^}x*fEo+LXUf4)W6&394j4~8VgmJu5b6;Vp+~&To}eC)NIl{i zs@tTHYa!RzTGH)WF>-}m4cuM8jZun}Qk{*t@*Npw92u^_k7Omyn^PW= z6XXl>9N@x^Ux`p+yfq@9gkYAB%b~!{0*~$~LYH%&bVJ@F-2z@5l(A2~DC=55-Y##K z-jX*Kiql?O__zscFVJ_k) zK!;m+XC*}>ibP%~5_kh}_X4+4H0W}M@)8k*&n`LmFG5A0Snaijr*iNZpGSy7oh5Pn z9EbUjmymy6=^%V&2{{Ds7tuQT1F+)4{KsMb)1JLh*>tLB5LaJVvAOo_Ma|)4#~Jp2 znE$wwpV8&1;1#T!?WYx6z|~=IF18KI#yJ4yKc2@sbh&1;S{@H;DE`9_=gr>Q;h{W~ zmGB^jUc>yytG&6{ZI%YRi!55L1-s1`dGpZ@1OH(rp7wl#4e~^dJGTAqU-vl+?9)UW ztd$?{^A`P+mN)U4JBP99c{lrsJHx8z86H{6fCzc+Wn>M#-?!>v}snw+^rA;0{eF!s~SF|Evev;F{ zsJ3;l+~;c->Oh-@?a^%UX9wv3y_gSWKvzB5w6Zg4dud8i=Uf@DlhfxGr5po#acTO> zgL5yJ?ke59GQeO9=%PEqk?+_lhTpL%^o}hkur9EU1yg&QslCVk=26|Fyh6R~HPFPV zuY7%kM8mKI_NJZqc943LJVLV3AlV{zXzvm6UIgE4;0b^nu$VmwyAll~UD^Y}hmZ0T zmfu-%Z$;B`p~frH)j08{Mj!C9`xLn!GgIa#u=WB>uK2TBeC zZC}Y*NDm^E^p*@@9__vEt6lD9$RZ7_LjrgyyK$=eC!?Ih}X zVdU*(@++KLH=XW@RAAsI(s0F|qk)H3%=Bjfox`*8*xoPq5&k*gTGmB1n+d?CC65Z+ z56!$Rc3JFl`|=zQ;1xg$q*H*Bqoq~e!DX>yvUhB6@;&eCH){7^E?QCTa2JRFwo<91 z;+-izw^%Yv8*8n;ilZ3%dEF?d0Z`_(4}S+pGm8LEaF@`dS=mIiO8N);P6N#fcd)qj z>uKrq_OjkUOQ2p`qT0JzXYVG>-X@*B zn>2fCb@r;X3fiA68K#ZZ-WG$s|DEuThqj`32B(u5%#G{NL-ss1u;;-ilfksx8Be>N z5ZZA}r1=f+g3PQ0-&jQ+7#$YuemGwTp-X$04t%b8Y1`5PNVNgnS$ZGhE{NNZioB0t z_1JUbe1`keJpg;D_P$IsJSWitdM&I~M@^zpEJ2*ansjuW3Gsbl6oo2{^YJ|)`a0ns zP)TvrI`kh<5fcgc;={CNe_M1?Uk(HuL{E|Mo{=l_J=YI9bl1w=HUBYaI8kV3pe*`sv@%#V&7omU`AG|cuh7aELXW0ke@<;vi@BLDrcnmKhsQTm&R7D+H>&2XO_%vjhACUk(;+y{gfTc5JV<;Gu(D=at|d9+~X3|ql_3EL9} z3NERX8Knj8f==M;}n(!u<)`XOuqG_f#9mfMj8EVIHO3S*r`%3wsI%3JxYT6xL%1+g)e_ ziTbD73fi8^1*w})MWH@DR?AhfTCR#!{c7Hk_;EZXAL3LW3!S6+h~AN3ajIW>j~?!e zT8dhts#DFS+NOH<^tre~^b~SzpHcr*RKY-DGuA8W!MX))J5lnfw!*E2y9-+&)Pu$m z9;qdcvKRP}dpTqOdZM2R9pE+h0infKOR1&&$!l>(EEA`v#@(D5ou6u%V+o(JPNNJx zIW%SU^wfN7eym2h7&kOM)e@9%ow6FJx%nq8<@xLKt;ox_##NEFDoZ%fwp)@dd6uB* zcPv{ib0F93>DDK&d}i`=>x|i< zS<|hSAWIhN(_^(5SdDxO{Qw;b5m-ijIgoY2IqxwCRN_zP1K{nIJT(#vU*DFlACjjC%i z28}z*D4TVHxG`h&b2jaMH9yDiV&;V@{=$L_!}?g7|8_fu00J;l0iHSp*!wntK2|IrJgmNN)d! zlJ~&zhv*wk=ZCRvtakb4^)2%edPh0^@nQSIVRqbm7ZSXUz?z*Jy)nBwx+*(0TR=#q zI5oN|wj}cOv`g955Tb}0OBh0I*tFQ#5)5=jacr0x^x9&DR~KoD@@hdHIqf;SbGmbO zqlU;ck!PmGs*rsLA!k2ucjxr5v7PzgEK&Q76?q%fL12zfda_y#(MgzAAty&y%9#7V zaZU+>e!t*CmU+SMkgE$W1jT11F1SFkdBHiPK)8&wsX-xE;rd*bd1}yta}o7GKZha9 zoMlGN)S!rZH6Y)kZNVwMF4TjvULDzk*_R+(L2V&dBkE)BPCc>ULd;#%5>cOhJ^Q`v zJK1=eM?D?z5$2S@9A=J+%e;|!4B$ox!*mEk$PORYKlVDU#P?HBRv`;vEa2Rj!8~nU zrd0(DnbxROOh;KihBr-P_s%dP$K4^YMkYsgXRgWI7}*`&9DM@P*CLxUPDJK~XGKno zoVZ{xvN>~OrX3{gk%wd2qMIXIBaUWnUXX+#<3z@Z@T~BxOnbypHR!cPwq#ygaAjB* z>H#fY9T0a%=7HX1&~<%5Qj|Fg^gx+O3*O7@SG8nrX5KdqA7TC(7ervqI35uf;hZu6 zxO8$+L|n$M$wlesrtQmU$~Zn{AoKdv){I>dhch-r95$Z-nK_a1(H+qp8GA9LpG!Xn za!nD3kw$c#wv3HlT~h{74{Gu1h$xMSo3;;hAJ5pEnH$kPEjMGYs(V3DW}&Jjy5r;V z))Y-(%_y0AAiX2}65t(EY*PDT7p$XJbG{#8{H_}A2+*Oq?Xt1AMo(r=>{ua5K`Qx8DSGZ`hQYs%I1p@@`>lJNH; z$};Cfm#A9i-x#yEmv|U?OK$;`IUfqF^Y6^>i`+4P%hc}q>mttpzB9=(`PTfpPnLzp zOzloP65bJhXntMVuJGctZ+4yvx&%R%a|G7!{7U4d* z34eEmX?D{@XL3yV2A18Y6H}%Qn9KA%dgp*o6YrX;3GX0`SEI5*)$q933% zp3QsLMCXr8bjFP+OgToBTa=~~)1;Fr^ov-9erHUUGxEw|KPiy}P{Q@6xwYx%T zhL%gUCOqAI#dI3eXeaMeWr*H9E*j}rx)h5RO0y7)qvLV`_ao-z4=z*QbUdeZ{~l5Z z_o?*zZ6pIaGsCGUX==pD$F%&H7}A#PATT){R1pBd7TEA}E*PGUWS z+)c-U1D7{x;z6(?0Gk@dlPl>Gg!?5k87^ z@iwM;HQ`I*M}UhZ#4jU7Y9YzD#s9=yNC$1dLd}$(howv50#7gs%q!i)-|LAxbY5)- zk7fAdy8i{~e*S+b{Q;&$K9z|5@RoQH`;`p$*F28z!(ZKUJYjxQdK=Gvi(i1wX#P9O zt7278Ct*B=bQ9^k1%2l-o-_mcdHfZ!2t}_so+%9ArvR6VC(%btgCyo!F0Rt)z)JG# z-zYEkaOf^U#u4bOC>ujd~Dg7s9 z0kq)f@MNUCSb>o!M-u)W(VxMz2qU~pfpMg$=_v}#`lg>_S}9lZKt5J}1=0!fVo1-E zv6R=9C6I0-nXh45aVlWvxFrh6C@&~bw@SNG0x}IKBYji+3*br8GQg`87htEN06rnD z0h}ShJj=g>zjKvr(zhV}ys`;2tjFJ>0tN9_^4cb0oqS9B4B)Te*;FxAY61F>B4!j%mtYi2&q+T8yjPkD8r~;-1F;lOc0M6Z!4W4x zFOoimnAc0+B@0pK>sZfni1am(36XvVGOHz=m%?x~$(Q9{QhP!FQC?DNAnl-5ds4v` zsgj|$$j9*{w0s3m+Cu%<04FG`s9m0;7FmVf(TQmpxnc%VphaxdA{C(RXUast9}qrB z+IorGj;%j#DfNLi%KHwT)6JlM5+|+4le9PkON#Vmz%MA-)C#X6UBdH;o24PZtDGqglHNNv#r`1jI}ar{0Qz%l#a z4>$wR+nu*D&6iX9`^23`lyaII`$>}BU+ww*g%^L+N#rf93(KEK)b6zk^u$0b=R9gg=eH=#jebTkuq;Y7dq5 z9ek@SZ6%#Sc;-Q#h*+Ae>PPzhtIA2nAN)Z+NNWV1)m?9TAMkI-J%hfRa4lW0T*kDD z$AuCd=d0f$S8@@(3n_9m(Z7!r-Y=IDhMpkean=&?)YeS?0%72agEX7{3sL?9G5?*K z3(wmNrr`Ve2d0_0T50Ruk7@myNtk}kZTd6f2dl^zsE7OW5Q9f1#Og_TIi4uE%7IW#FdG%nka`T{WZe7sl=H? z{~tuTOY%X4bBX=}(cdBLB1$Et`w0Jm@cV?RhGh$-Ysns}4HHS4enVW<>jR|!8KN&H z`d0`y5T;g;eoyHKg#Vo=+Ytv*dj%FF4xrW<7fmu7h%!W!*NDQ+8W{(hCp zRZE{k^k<2_izuHU$|A!3l=n-7Hxnj#tFCiBD5KGe#k5lohL?JBG-dp^C&b|aZi(*;3W_o(Q zA(_mFF|x@L!kQ4Wun7SnLP%oRSEB;5%MuU+0wOLTvV$Bz1P*X80!Ee)*+fNU4G|F$ zV?ab?lO-SqL`8%zf7d&6bKySsc#r?X!`qeW>gww1>YkpS{$`pnnm`rX8Hnl(#B&B> zI|I?q7>%-tD76#xaFkjHZJ>>BT+NVQ4w+xUX^vXLKraUU8glo6qk|I(%|7r?gEJjA z4@NDZWkc{Aqm*Im*!v4ob-{fGfa(q~X#%7`0AVIpFu5dOD-r z&+8D`lhHT}9L=b&WfWByeJ;)c2WVjRqBmnSfifDoiQw-9JskXXkOysi1I}{f{t8ZW zXb1zn81!q%-3N{iP9${tz&{Pnbl5W(+Ca;O;5SAow=LP=UkASxIGv%PFX&k08sPK- zXA9_Az?G=64*359=N9CHfJxww0RIB;MQ{d!-VMA4{2d4n8>yg2!5(S9d2f>ME&BpiO^oI@G8I3c632Zs=Hlw}*co=sO&%)15p)CeBOJ0v@ zt5`oQSWf< z91cOfJD_bZ=+lsde!VjM8BnWi?mNz12o2w&t~}7&J({&`g3K$hxes*Sh9%{I-5{9( zZ&w1kcbE6U9v{l~f}S++djW3(ac-X9G^$D+Lyt@XXDIM>;OD?yuzUgfs~RLvySt#s zJ?wc>p>(fG>6l5v(9%Q5MZNs38ifN;3Nx6t4>|`yTNCff#q?$HyFhY=Yc2FNKpbKw z*WU%_e&mjWd=hGpM=c*9x0zQLJP-PL;FG}jPzvuV&>YC@gof?F%^3A@kogqy5olur zXomO158$6ejaAX=eAw0w{FUC!@P?Y(A!FrY)D#0}p_Xr;4N>8n4L%~%xCMKtR0TrIf#vMpu6)fgn@okSJG6D zdAHwT72-`#ft`!Mugp7>`f~UIeiJ^RyOX>V^0m=}`yu0w%B|q6MD8@Nui1vS$XyS~ zC(-I-z?XonA(;c2MxgV6;~-xb^hNjw>lPJh98qUsPjgs{UJG1Q*8$!oSjl&?;yQK) zmSL{|zZd2^dc|pqyZfftCBU8lOHvDu#vM1`Q>Z)ZMZ8ylTtAT1ij3*okZI53i+AAl zvB0aq9l)8u{)}1?=se&iMll$ugA)q69MA?9fWHD|3-R2cNZ#U^A9w?IJ!6^HLqUgv zUjY~mzQrhP1DxnS#o#9$LI)jyOakarpl|vtw%^y7BLwtSMo|tp7q;C*Zk{J; z@qEP`g|2*K$TO#q_gfS`#g>D<0lI?R2pkA&pF%6v0+}YWrowfuZQvvzw;As~iIeb5 z1*5Iv2-GqQx&2XZlxqn;b5R~+{$X&w1Dyvt2lVTp_rt2MKv%$%4h#E}Iygm;9EhB_^FM)0)FTZ&zxfWjp?wwky%S&Ki(bHZ<-(T{Eyb{g8svh z-wn=8&ecQB>ZpsKCXoD=Ye%Uf)D?}sAnd=L13v)Y24G9wH&nNCvWo z@=WV^UZ!i{=P+Me4crIpft|^#kgp9o4_FxA9P zB27jSY24u}HSa5mEa_9ZL*)@g*F$auqwc_ySKzUiQSVmxe1bcE5$6Sn1l^-8&>TfY z7=799xImFX?Q*HH7umAb;HMjZR?VIB+GQjEv#u;e&2q@(Nr@H4?rgyceZ z)L;Y+GkI;0#N$QaS|G~9|5tfOU60^6(UxGIZ)d!Vk;@U4X0nC`-Y8)Ceu%(m#PFNY zzYD#2Lq4zQFHsjkPa$*E)#Q0ZESK$sQfpaT$zI-97Yq1WW3&hU20R2@2JFcws{$7> zsw?JrjCAHSfJ`MuGXTz7T)8fSUlw!$=rhQj4V=vA>j-)za`(DAc~@Wf;O&-78zwY_ zgMSg2%DL(q#PYR~I|Y3-9=TnCQ-E2F`VQb>Mm5iev9(OgTadYpTAG4h4|)t=DdbvU zOWtjy!!-?&4Wxk<4=`)8l@IMaw1>L zL?4uWmUo5?TmfYa^Yv!NF6`hr=ml>3AdY<1_TktWW~-W`k0#1+UaxZ7TD=)_)HigSP9aWe~>i2PkzLk|`L)opE(*3q2`(PDw=tueBcGkrjmbs!Vsz_03_l z2y<*@jOa{8>l|k3X22t`FqkESFk`E-l~9&_@&ZQ6B#gdD#K1*xX7CeaRqt$!4qi>| zXB10tP08c6tDKM7_;q-Gf!u>}x(B6Va1~&BBi4RvF^?@WxGnp*PvsPMZf9+VhL{H?h4p&-n9ynxX0Hw;jUi?Z9(Q7%hP3Wo`rm6w{_5*0IMAE8$$jpYzTs# z?Ljw0jnzTF4#_i+)S#yatQv>hhe3zAe6KFXV)!8mGUGsRhK9YsC8($rH~4>YTeLjT?w)frBx@pOj)T7)JISBnjEaeU;Lo^} zh=lwC*bLi@p`h!*{s`o{{dEQO%karo;0EkXEd>^#f3v*^Vfq~S0nk@HNiLP`#aIDK zG2%pxz5~0U77#Y;mtc7j=$WARd-N!blq}#V=ubtA6(A;=zYv-$c$`$w+^)gc(JBWS z3$*U-53`JelMC2KIJEyKLG1}*J{R`9+k`dw>>m`Ot$8$eGVwB1ImUPkQ!U?DIEcnlZ~ z4R50CF5s7_7g4Hrg0{8b_vLp@>U|M=V~vgqcj1ZZF6>{Rvjs_hHOaiA5a20Sn@CHsmmBrbc^+2|^D%w(l^UMyfkm(j* z_0-*E81s!Q3iseta4|T)0*~Nq)e+t!rPF+eNLBgjMlG--S{E4RzWvg}K{!(cJ7qg? z{sg@e^cB!yp!tNxN}RU()8Lh@;qs|IupLJfpYYU%8hqYqi}@{Im4I7(?BVgiEhcE- z7GEpyTY+u?x&>rrKxPK$S)lnOWF@R*D#_NsUm4AnKm(j)U_AT8IKpM+SHMHiGYP($ z3;G0bA}|sB5wIa0{rfgb!75%!s@zVhT`P>YfNwC$$AQ}zS%bm|a8`o;gy(0zQ`1(- zH-Id;3X-dEue}O39L3vLkDB}y%=5n9pxK_Iyr)6Ae2SZPF>0OUAF6dxrex$3YkCwk zUu8Xto&}r>nGQhqNt92=8Yu<$`^y=zPZG_&tmxUmd`5nEui}3Lyo^$>Dtd@94EO<~ z>iiG0H~E zt>AY-jYD{bm*W_Xmq9TN+Y_8O&gqPz-quf=<$PyC^h=Di3Xq9 z-p;6p@EwgFVm?E>SDeJTysFo>11HMSphts#5%i0oSA$*+dI9JK(4+M0kD``n`8HZH z6Z8+T?Ni{-h`REy>StbG8AlNz_w#j}?NKuPhOuH_FChE56VAcjZ}8dmrA9MG`H;d( zeBM&KgucGSXA2c_yj}7|gYJ!ZUaatfxt#lmPi)c!$$bt#4x<@~+{@rJ7C*@E)Ic?Z@xIRdjRE6+u4?`a$-g;F!7JgdUTl@st}~R0GIg8{NZCs7uZe zW>oKcQ;Tr+k|XdIWd7;N5axgP4uZ$pX>f{ZKKmKpm?|zYxL#m!Nd?dqAfs}%sFE2# zo}IF&G3aGXm*j(%z%<}=Ab&BYI8Yth{s6*$z8WfeHs}X{zXQ90UmrC8wyY=+iZx7c ztX`6Ue}FRz_y9O2=yJe|s@_?!tq*V(*P<|zIl%o`H4Q}WbHJr+kK(gu7M9e-YVA`X z?<7LusR=EoG4754~lBWYab0(JT1s((LW1Zlva*?f4bXm}&P8#b1xdr$2lh3eqrf{_^D4Uo+L44sWCEC9;}nby^PMUF_ycovi;y?Vc`qFPO(eM`e6cYF?!JkJufB$In+p<{v>KWo= znh<53q)pzuL()vW#8ehl_*1^ArU$F0k2W()`96GstIFwoKYY zjO~G5znes3P)PE9N5>ls+}f=z(YwTGRKwl0@4?BvltM&cnc?_H?yIA4Fa?=~2I(V| zwiYw$tKr@1gycX?O@)0TFOduMg%IKNz&r;vJ2$j7G<#wkVQN*`el~1&0!Wjw3CE>T zKcl7up8C5P7dE1PCYr{5@TsyUUf_u?-{I;9bM+%^dr9N*&3_*=(V% zZD9WP;R1%}^`VnCQAmY@+++t79`-Ju{%3j zo>SePAHx779Qi6YD{J`k=dcSoVUd#WPV{W-`;6NT{l4#nK3{ZUP187g|J7L5 zrS;{}^7dHeA3`>GJh!8S69uEhO#=A_JQp49Z!Qfm)l7@tk!cInNW?rP$115_=cf&s z9VRovV_cP&zZdcV>>#S4a~EnJNhuxLmPcfM=QxB5shbPepDmcnNT2>#zPk%6C0WKT zu{z*MlJ=ty3{`hv1Lt4iieJtJC(PYkF#weNN@G)XLK#2CorIOLG?jGC{R*v+-Dcm> z*N98X@R(WeJ`D<~r-`$*Z z@8xt`PP7$h*n8pzK^R`BhG1M-05g zn?rw}VD(b8n?gF<+HyBsA%Wc912`WZXB_7@H*H>CqTSK#4=$Swo8Fsvn>TO>($O!w+RGl7wHH8-`Hv8aIPHA z{LZY-l+Fy!y9d|^(j(kGhMQqMojno-GD8Dn<~@l$Zaq}rFF#lB@_zq0%@v3VQaQfj zU1d@)>K3yFoV)^e&Ohn`m|saF$F7=+Gl>+~0ooB7oRSFK$6V@evN+u2Tv||tU+GNx zrPC1gm>Eg#4Sk5lRY1WHZq~k+f<{`fQBj%n%?rU`xzpOTzqW0#VKu&f>U)KE=cZn~$5M|0ywW_p zek%BPh%&!svg@S!bXpq_*Vbk{2NRjiPLfzXz!@!&(3GW{mxq?)=SkVcG~(+gEEpeG z-^?Hb2vm?1Yrg z%SH0ArW8SNL)RJ)Qk}Zp46?fUm9qGxQY!3H9WzdIi6*9p|{WqKl=e(mGriQnvKV3Dq3+2cONN@YjOxm9^0JIt6dQj`_9G z@&dpBk-Ypu^yHSIC5_V}kLu1<*2bFP&y>63`Qo1>W+XyGI&ka1TKEmqQObz3^6v!m zH)Y}X-|@6@P7xjh+!la`VU7=?4!l+0AW9YKqo~TO?Y2#Zi{${MGsr(oF65Aw_va-3 zb#2B%B@cDsEZ78gBsI3}?(>4$P(kK-yN$}-Kl*k}&a1k1g{iTZGa8Qi?GYK${Kovf z3URHr*B+k1k^x)KeuD}Kj{4mRsXQ)z`rQ?&w|Do;#%+rVoj%79kJ;a-j!fo6-nO4s z%=)jR2|sbNTamq#e=^{0wzLN?#n;W6rw%wqPQ(e}0XbQ@SQ%LvScM!d*5>};xfpC= z4raxb+`C?~UyfY*Z4C{9M~i_`i+Qq{M}V;yr)haeosm8qMm1$yvvyNe~;O{F~G zut;Z}%R4-k)s^~-H^!)rtZ_~UXX{rOATn8|ud_9kmR^WGuw+6mo{H|Y$AO+d%b zv#lL{vSA3=ZevhzPIiDJ(7$yXMziT%*nbl)RV~9jaT8wDPF9Bq?B_6y)1A2qw`?P; z^L?ury9w9YbMmraBQ1pI&l6OaTs%xEwiD9^9b+>sy)}F5B>vVT_85B%OjbAg*6Yko z$SmZ)*z+xJC95O*9;dte)@0WxP8V-2ypFLgyN4C~hfT?2yVCo6MxG!F0wr5g`Xkbn(YBPPGY};LL z+G*%Gb+z@qe2)jzT{I((H!e<-0A9fehp~d&IrB>AlY8Nh$ME#SRb8WK*zF=&QxEIA zd9BN?%Tgqdy!;jMvr-wB+PFZoRwp3<+y<4Q#(D*}*7LM+mGxt}o*#Or&!cyFdm@T8*QlwivRR_Fty0{0XsL3S#AI)?5 zZbkUdx`1hzdKBwhLET)wLJ__ZOVh!=dQ_wWOPe+zp6F3O8ovPlIr)chr?x~*U<xDQt#-m$l4Y7F*1h~ihyGJTW`uObADDzNv(lC)gjlKtrKc{I&*HMmf4br?W4{Z z4;anz$=;bo%Vf{|3P-%_>8-TSyv@q5NcukYG$(M+M6a=GJc$#@Z1*v9e>1I==M|RB z;iHJKzx?tVGFZCM{do9d=ie-~SaTrKYWYO-BC01&C{gO}c9FixT?jkBKmU%`4;)Dk z74p3i`2Ybj&tNhb_ZkW2;gts*Rg15B6X^7-DKWPYGPL6yvi6O%=FhT}isgTT(Vli#K)L`{Ag`H~Z!+B%@Mdri)jsx!nXbUf$G?L>QSs~d7uyeE53 z*PE!EynE8eC;cQvWjKd7O(o6sQK{d;9Yt76k$`i+kX>axg6)&S0BStVLU@x|=dhaR zUPeF9W!}By3BLE%&u?F1!^K?;GjXl^y^D?`|CFCC)Qq*gtX`Qe%L`Mj4mWd12{W#a zDA#BBDhe~?Bp~d}y8iK%j!oHqvq7@tlj~wMNu1q5=Tn%BuNey%M!Ld)6&q5$GNg_L zjI`_kVAX3BkVJ#s$190eiL)f2WtSj5));lYC|NSy4uiL{agvTjT?eJp=qhbmsBK!a z-U2#z-#DrjO+&d}U!~;&JN1N*l^^FqG%s;_%!HMdTSGD|e0lK1;g%C6tssaO$?3y} z)p4^e%5p3zAhm&MS?lzDd$ZAEY<S3iMCR@qq2=kwxdMKEh#~{ zXAvI5ld7>`ICS6zme?x!>7k#?>0mjPOL(^JNw;Mj2qOi(-uOGb7i+&WQk*mfwr}ip}@yY%!q{K*F6$+wQe}6|lE}mqPO& zO9pJYhhFLZ3-z}W{zx_rSh}Pgh3E9EXzDyM`xnc)C>a*e>**{M`Eck?CSER=#PAGg{K)!-BGv>_m%1r zuiCZXOIsOca7CpVDRX6PN}k>QA)mszt0*7euxl@$?6zy@qdA!frB|9vg_dO*(i5ly zTV+}EF$bv(8h4uWi-LYv-DE4c?-tr)4xk+Oke*ZG#{Lj6Rh%X_8w5e~ zkF!E_!rV~g4Ej&Wz-l?YYTDjlC1G#L@`QtH5wlL>!2MD9Q8?XNhKNvMZ}K0w4mMDn#UV|Btd zZGF^HYV4H9gIM3RWQpOLtvzc!R(mDuMEN>ped0`7@7Da*{JQzM@cBzseNKH&{`~Db z;Jd22oaUTj&y&1c)zRj#)xJZceVTn5{bNNB+F5?6rNk{tR%^%$nW7HHB}?rr~W@NX{UWnJ%iCzamqsaYApqGVd=-4O)5D2lS_X5A4;nzm|2}Jt#+gqm4Q9>>Hub)#t9y5EB6~SYCrqi z|1zKU`=#71TdAlAFbElrBlPNnPN;yxLzYgolqDS!jsxGYXQ?NkLPE zAKvE?z+p?!Q-&alzo!f~lMD}+{m?1Lu6Y=|5%mK^+v$0z1P3Se)V1%PI>sXM>?@K3 zzJuP}fq5T?ANTfJ1$f&9&KHxi);rDpzrQR$MZt8SOi{JE%>MXg>m0mIh=2iRB<9N$ z`4l33H3b=k!lEdLtaXdKrq$DzTf^IqTlib5TM8f{&>Kht)B-92Nr9!E@ttX%MV&E1 z;~Tvj%Vg#%pr9RsD<(d9Af4I~F6B zCH6FSy%0v7cZ&`H=Rx85YsB`IrrbD_*5EPj0z)6g`>Lj#MQr|H=sSdIA5Q^3RC$P2 zJm<~x<<9fv&BIL{8BQIoO&y8axRcqq8{6CvPaXMA9X+WY!mA$sQauz`J^ZV>Nu|1( zuexcby1AvgNkM;+p}P4=b+aY6hbFJbNg^;PujgDeP(dtEL4tTplz2>>IBROqb!zZx zYVf0tIg*XJl#RKijX9ppcKg&|`P3j_YVc@kkZ5W!eQNM7H>T+=#+*wKABz(o zixErY#oXk@VC2SNC{sDCNc|<;6_o#!TeJu#`S){q}p8Z1=&>4$03BL+SBj z`T}zLEjDf?3+{W^A64V7U)CD-y1#HxX52*NXok!@Mk-^4NVm0}BI_y&w ztWy=b2U;Z8dKuj(Oq;x#BruA;{t($YLQgZ)u4TWQmZjpQsptsD2;th*0q!P#L+< z8M#Opx!@VO61eEXV`d@&PIi_}A5ZIe42cVrW{Lq2n}#N*rsNfUhl1v0U$fNPP7hsy z;;flT+tfz86(y}vIXAMzJ;cO4F7}qMEj%sUVHpBx1><#lUT*n(%WI37fNaZbYhxQ@ zfU(%Fa~9uH$MRE_cdB;|EY~AiSmihPH{0);-vL|@9tiKNg+IXG^kw}oi&fNoz8&v` z5_7AZ?Ug~B9%Gt;Mrlw{1I?iCKy!Lqny^R4x+zxee%*cxK{G*1YIACXPGh%SjcJWT zjkS}F6X3PyCGXiB2m}TTt!x-!CI#)Prm@nE*6gA$g}9a(QZ5d6Ui}oLiW{4~>M*Z1 z4>XT3Z#8c+?=)}N78qhx&$@oq$a>WvO+Ct`na5v&vNzJ9ugqeu;9#EGVx1noJ3V}V zdWd)$@$>da=&htUFh5sldMf*~jS7K{3UebJ=E^MI$}GkT&Rbi|Q@NkF*FSH+hy#7Z zfeE=now-6IQ`s9+*|;_;V;XR)ENf@q(SY!^>z>Ta6wffGu z1!3-j^Z}=eO)eeRFpfMlSokg&87OXI5pp5|6pw2Vk2T1iatKDWU7$JTFyDhr)cmGE z!cPiaHZ#RnHxt=YKqZo}w(B%UXlNh$?#piVd)DLU1%e3R88Om5{-^yoK>_%p|c-9v`_)kog*HgW}nKUL{u{-!hia!H)ZR+ z+6p#I++S?XddEi?%dD5Y_sG%&_s6;QaU*?=g9hjmL+#pE#N|c8?B+Da%67kS*VJ%Z zX}g8D!YA%A?g7Rj>fo8*yY*ZRjb<D7kF zD}mOic@V*_l=hIzluJ_Q`M2#qBSa5w0h23KCc?wkr1coOoW<1!VeM`w+mlXko(yig z?ZU1wj1#G7MZ5Ri!JWa|&L~5-=WA#vb`mh{#VDLZk&wS-%rWA9OE#z~KjLKD7BtTV zE8ug=2GUjk&=jdfxtp=$#(JJxBAiS}FO4mg$gdQfbT*N`gOS}vSm(^QJk~Oq*1Sx} zP!imVgkXFRIt=(6GCyApXOEoGhu0{1QM~^p1b_k~!k0XnQ&}cJ3=lk*$5oVhgO_hw?z;xk1GH`@%PQzVAn ztW!xZtZ!m;%G!t-5JP*W%RN*Y4RjemD_*u*v0}H%Fwc=v^ z(imckwT|77H6hi+Nyx4sO3h2bn?tqjT3MA(^TzYER>#n650^tC%q%V8^i=T^ zLM*ZMH1QJ$EJ3~+DIlkjgewO^W=MRIg{_`+O0u$^a!M*?{jW-TrjgP5NM9Z8+^AY_wiC}6-s=K8SA>;8Fa($kCaD`e?|4`Clo*Dg7C~{@#OFQliC4vQOngQ~t z;1x!i&Z|;DS@+BN>t_hVi*jX{Cs@=sK0pLOD%kZ>Xu;)616sr^ux> zu0JKo5hMOxQHqL8XZK4)c6mTK)|ALB%2CiY*Rz{n?MsNTpJIV{{ih;=Q;jG^;Iq)-(CH2CH;gC*t=ogJ*}SctgJu^X!vj|%(K2ss(4i7;v2~Kj6~(hw zS`Y=?O9XvK){}m*Cdg|y3cV1lBn$}Z?oEe235wYDqFwzuK`{PJV8!CCW}MWtHQ?>C zklsB4u^_){xi_f92*~K35Z>y$|GJQ(vV*fc^q*AW-?=97g;10rz1Fq2fmp>?Y&+_v&3qQc%V05wm;Lu3zr|D()Ha z#}+TRnPY4AkM(rA;+-tk@2$Gh2B1~GOvjVm+mJfMuAuYpLiem)Q8ZUVzF5a2cb9(5 z5dq+C>&|;Ie-I6{@9FFDM8Kvtb}-uatK)M$v@) z6YY)m{bLs&<(EwmzrM*BZJ7F-1%K|1OxS-=bJ~SK*KBvn zW=8_7{|I^EdmkHK&3RwUhwM~D4I8A!v$4@R8HsH?b3Yk)d#u=P9AB+ZIG#U0`rT2G z7VSAgs>bGw23_nw!p?LWHNO+u(^kk<#Vcy3Rh1N>3W$xhpP;g6EpzLa*OA+nO*&4i z2d(E7(YDKs0Z#~7nwDxB=d9Rl%leG#M20=NtK%2bThlrg!X9fM*5W3m5RRgjM?4R& z6VBB`WV$jE_rE|U2HfJ$k*`Fr);k2*V2;AsalS3@*hISw!U?D#EPtaw=lI(L!=6E2 zA7PFkjDPvId|{L8A|4MK@eG6h+i6d{|8lkdCRPbM(-cnj_2kb{?s~*{4fXY;&5`R8 z$ND1fX-)t*Bwo)C-!O_OW}8tMy%9K3H{n8sV4@bbhDZ4yJ## zj^T>{JEQH2@byH4hCZ zV_A_Wm1PH|zQ~@&pt~z}LoRMg;5gnViL7eq!01|6=ndNVE zSPMvv-OxJUO(Uqd9sDAoCa5o{$;$Tt*EP3tQPLP?ano{xyRsTu8L@$qGjZd8Z(m-) z>&MZ#WS_MekDEcEZ*Lb z_W!av8fW?2p03Xl$dC29qIbd1u|-=}mL6A`?NxP_I1#(p?||jfggBq5tzSUGQVB_jAT)23pk=x(K=P$d-tQe-8OP9ZGYtEfGgv z8KwQJk_Z<((}rFdHjb;DtDK>{x=|4)5Fjx_OMa2WQd z6VauP@g+BVj(kD0hqv0mF|WjY1|Cdzd~`I{9W`J)_0tocr_aFtF8FfoT?}ON&P$rd zwB}FSYZG=nLgBBH&gNy6(NZgoGEW(=N%E$gJ@bXsHifQmohKVW-o)Qb##lm)GcTSX ztYUmp>!TB)QDKPvd*Z*_tw%cL)>E0cRF@qzSi47roJS)f27>*Hont8-sB8m=zf~bw z=FOT5+R3G?OrkdlZQXhkRihi_?^wE>0}adQO1}I_8;dJFi7GQ=oK?b6#QEL-XhqtU z*OfP({>m@djY@RM_BH6vH9Fa;w$cOwKtO0KwslS-hMb2-DgFMrM0 z6Rt$m3lo(H3Wj6zJKnSFcWUWGW1Ek};%yJd78FqRd#M{z(w1`4&?cOrszXM;1!>H= zQQ&ub^R>}BU! zzb@As!ri+PROzEpUrRf)Oi*|zXEAS(7}AvLL)XN;EbrZX+guD%%2Q{n^eYX1&-kb^ zB3z`-W)Ci%Lt}iz8Y!=5Bl&!opYYp{SIPK3RzX49Rp z!xUJ`X$myO#P`YXm*3IDkBh@&&IRi_uw%}caQDOB70dQ&PfLSS`MD%S5%S!%=x3q_ z)gLp+m`WqId0uH7^%?dVQ@O{xsMuNjTT=n~-c9I#{1p4J-k@hMWv}H>MZW85*iWyD-7}yisC30+-2XM?M5*Sp@K9 z$9AwKGN&^B>!Mbjbn4r<0{!?81VSVZREwm*XkA zqJxCPUZ6{gZ43+eVMNdeWDaZ#s$oflG(?UM772lh$Z6;t%c8|U72(p%C^W>1e<^Z< z(EkG=?E?pnMRDLbd>RtRn5b3IIC7c;g`4Q!&vAB8D}|fb9?`HM$eRL+zGDD#66@jy z!6=|&d&I-=AS4PjbPLL1aZm_y{d)`SVJZYY^!m>hb%D%qdhqrAqA9+YkN6^EnC$s1bw12n!uD(~4=a)U=vJFLsC{Lh02WWyKLyU)b*aLJ*v5H}V zGK>i#MXtxOpc__3SVpQxvq%j*L0-nFUlqOmc>=d=P5~6V{dK|(@}qbZy(Jv>2R&0f zV(d^1i-CfWUEl9~9HvCzLwEhWQyWME#|Q7)FY5me2DgKPz=!IJyHgrSg20FDIxZR; zM1sQSNI@s6{4?__D3O9rOqpny0i;1ug1*BwYzvx2c17MnA0|ZLLvzL7sSM0S;6rhp z6rBvpMB#IyAP{B!Y4{ZsML{6ON;FIZQlLmh-{Bax1dSoPBJH3K;~})7y5jAW2O1)@ zBD+qARtFiPv^r9V{CawSRS>xLt`*L;Pt@_(8e;3Al47Zf(pw09&}{ndCqvKV*k_d} zOyMW`;DyuZ`G501;Q)lkSXJ${&oiZ_sFFbhd#1rR=jTy7eFEg-o(Kplak9j6z~rUW5pgH+Vs36zgJb#Io>j{0h8&cL+DrC;Cb34U9rM zSrt$=asuKT78ISLK7rR9AdCM%2u#)eN248-TI!D*j|;*@2z=H3C!!tnswyIXV_zBB zV}&z!!1ER)VjTY`aQ;vJ|68;QUyo!F6=;vNj9Nc0+8k()uxv#UCq@<|$O9^&P!Y=} z8s-F9Q-C`nj*=h#_r!UMo&8$l1_3GVM9&C^{XmZtcNjZx!w4W0w@7_?E6QUpA|I;`@J}ei&E<0R^@Nqmk;b zD*5dO`Rl%TI?fw)+ASG-BxPCiE>YiBSo4@7JVgRLl{{iFbBnkM-S;#-qXDK$gUjGZ zzF)tA#_S>#d%|X#kuvf5sHD)~SfDtaU|ynew=Zh0zxd`00h;id9-lifPq;ruPx@6UXF+10RK`sXiQb)I;xC=%O_#*Y7FSD#ZJ9b(bm1`GY8@uo%~>>cFf6sW*o zVO{E(!}&69kCu|-&5B?*G3WNjgm4QGk6C62Ved!Y_HL9ycL}WgxV*l07OPccU-#{q zoQUqu@bcHB>p|tuzktG8hC)?&ttc_AD04)PVWH;gJ(WLP3T1fJLGicrQQj3>rTdIM z0S9gHO>f4?Si3RHZk7gHi(jpkD_!Dx$}c`|%QEcHlSKfPow!DS+qHc5_5gO@Kv9R@g z_?oO^Pr9p@so&wtA##LAUfGdeQ8Ge)897n3@vfIit+e8}^JBHwZ9>HzVkzC`O-h97DB&`6an zdC$RZxz6Rfe}+ad(w@17cW2%Mi@N~fMxVt&(wZd>F9K;aR16OjnCk$_-@dtLcc6X{z8jlZfg1Q*k3Kez|Nr{QWZI zew=~Q;>j)_B$L1H^vd1;$o4&rxM>BjZa>E=vKj)xKH}oXuT%3bMI6*4L%%=ARg5#@ z1!{5?nu#-76`F}L@)VlMF!Jw838lpXY_#DUM3ivHjQk^bOiQ;ZtK)wgE~*|tDgPih zeJ{khIgGxkE9b+ju3+j0`Gl!WaAoHVWcwe)cFSJ6doi*AF)rK7@Zay*tu;w&+tUv0 zZ4o}%Nt`TR!y@DM5YX#_4x#wxU>x+i57*vFzO_Y^%`AS7TUFkq685AInM22IcFC1X z>eqbfssFSv>NFP{UIc5}Q(zZPwsh_CkIbI7`}C(o$#aT~(6BN=ebq@n)yb+Y=44@! za;dYwDlZalUj;cCl48$;*D>1>EPYW==$C%z0@5^EIqGnD!X#F{JXY*4AhCy?P?=k1 zo-nqLcr6>z4wG@H-6qM^rz)m&F6W4(N!TU_HBYu#7sNg)hksqe*-U3(wJ=#m;=$*^ zY-Y0OUGiEwtNlE7PeSL)pYF&^lJ1~nH zNcA^WwFTIe@npnaW7IgQtQnLyhuTdh>N&c7BYBA>!JJ1?<=j>iwv0TXe&mCHah-e= z;iOi$A@gXc)KdYRiDRh{kMUNl_sto$iyt(VlB7A`^vu7m?P6Lskv9Mt^g8u*h}h@u zn6C*ejl&t5XXPJF1$w0adW4)J6JxEC^1wBh)bBt`T%MnTvhtaC-?RmNQ2B&HGPA{%RVYhJK(iXdhYUOaTYMu@^Qf5YEF{dv)*n=g>8c)A z!auKuQ7SW+epIV0C_V9%mp%86n>YL@D*|x#F-JwHUdtB&A}z!-F11AfbN3Gu$tQy- zPzJNzymyQ6%@3#lmySULC|_3353!N(>z}03{t|96ZGw&~(f=NRr&Qc^K?3lzP=|Qn z%##2IC|xo&pX&cmo<-ygxLwL~#!uec1?t09{nl1zD$trL2Q)RRRz)nR+f}$v`3YR61*68htl6-G2G-dIp#A`}BC>%aU>JNbPVdHxfRqKGH>QD1E9)D z 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 QuE0OSRM$?O`i2Jm7Xg%1%>V!Z literal 0 HcmV?d00001 diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/flask.py" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/flask.py" new file mode 100644 index 0000000..2e3dd64 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/flask.py" @@ -0,0 +1,56 @@ +from flask import Flask, render_template, request, abort, redirect, url_for +app = Flask(__name__) + + +@app.route('/api/', methods = ['GET']) +def apiget(action): + if action == "user": + + return render_template("user.html", user=user_dictionary) + + elif action == "dish": + return render_template("dish.html", dish=dish_dictionary) + + elif action == "all": + return render_template("all.html", user=user_dictionary, dish=dish_dictionary) + + else: + return render_template("404.html", action_value=action, user=user_dictionary, dish=dish_dictionary) + + +#dynamic rout +@app.route('/api', methods=['POST']) +def apipost(): + + + if request.form["action"] == "user_update": + + user_dictionary["user_name"] = request.form["name"] + user_dictionary["user_email"] = request.form["email"] + + return redirect(url_for('apiget', action="all")) + + if request.form["action"] == "dish_update": + + dish_dictionary["dish_id"] = request.form["id"] + dish_dictionary["dish_name"] = request.form["name"] + dish_dictionary["dish_category"] = request.form["category"] + + return redirect(url_for("apiget", action="all")) + + + + +if __name__ == '__main__': + user_dictionary = { + "user_name": "Hanna", + "user_email": "user@gmail.com", + } + + dish_dictionary = { + "dish_id": 5, + "dish_name": "Soup", + "dish_category": "First course" + } + + app.run(debug=True) \ No newline at end of file diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/404.html" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/404.html" new file mode 100644 index 0000000..9193b75 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/404.html" @@ -0,0 +1,10 @@ + + + + + 404 page + + +

Not correct action value: {{action_value}}

+ + \ No newline at end of file diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/all.html" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/all.html" new file mode 100644 index 0000000..6640ebb --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/all.html" @@ -0,0 +1,49 @@ + + + + + all + + + + + + + + + + + + +
user_nameuser_email
{{user.get('user_name')}}{{user.get('user_email')}}
+ +
+ + + + + + + + + + + + +
dish_iddish_namedish_category
{{dish.get('dish_id')}}{{dish.get('dish_name')}}{{dish.get('dish_category')}}
+ + + \ No newline at end of file diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/dish.html" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/dish.html" new file mode 100644 index 0000000..7973a5b --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/dish.html" @@ -0,0 +1,21 @@ + + + + + customer + + + + +
+

Dish Id

+

Dish name

+

Dish category

+ +
+ + + + + + \ No newline at end of file diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/user.html" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/user.html" new file mode 100644 index 0000000..19c9859 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop2/source/templates/user.html" @@ -0,0 +1,19 @@ + + + + + customer + + + + +
+

Name

+

Email

+
+ + + + + + \ No newline at end of file From 85cd612d13c50e5c0e10e292fb7bf2bbfc502234 Mon Sep 17 00:00:00 2001 From: anymavpochka <31773307+anymavpochka@users.noreply.github.com> Date: Mon, 25 May 2020 00:50:19 +0300 Subject: [PATCH 2/9] Add files via upload --- Workshop4/Workshop4/check_function.py | 59 +++++++++++ Workshop4/Workshop4/creating_database.txt | 37 +++++++ Workshop4/Workshop4/database_connection.py | 13 +++ Workshop4/Workshop4/db_classes.py | 99 +++++++++++++++++++ .../Workshop4/json_files/categories.json | 19 ++++ Workshop4/Workshop4/json_files/recipes.json | 35 +++++++ 6 files changed, 262 insertions(+) create mode 100644 Workshop4/Workshop4/check_function.py create mode 100644 Workshop4/Workshop4/creating_database.txt create mode 100644 Workshop4/Workshop4/database_connection.py create mode 100644 Workshop4/Workshop4/db_classes.py create mode 100644 Workshop4/Workshop4/json_files/categories.json create mode 100644 Workshop4/Workshop4/json_files/recipes.json diff --git a/Workshop4/Workshop4/check_function.py b/Workshop4/Workshop4/check_function.py new file mode 100644 index 0000000..c81c0d6 --- /dev/null +++ b/Workshop4/Workshop4/check_function.py @@ -0,0 +1,59 @@ +from database_connection import engine +from db_classes import Categories, Dishes, Clients, Marks,Base +from sqlalchemy.sql import select, update, join +from sqlalchemy import and_, or_, between, asc, desc,update +from sqlalchemy.orm import sessionmaker + +Base.metadata.create_all(engine) +Session = sessionmaker(bind=engine) +session = Session() + +def check_user_exist(username): + + try: + q = session.query(Clients).filter_by(Clients.id == '1') + + if session.query(Clients.id).filter_by(q.exists()).scalar() != 'None': + + row = Clients(id = '1',client_username = username) + session.add(row) + session.commit() + search_query = (session.query(Clients).filter_by(id == '1').one()).client_username + + print('Hello,', search_query) + + else: + exsist = session.query(Clients).filter_by(Clients.client_username == username) + if session.query(Clients.client_username).filter(exsist.exists()).scalar() != 'None': + print('User already exist') + + else: + id_value = session.query(Clients.id).count() + row = Clients(id=id_value+1, client_username=username) + session.add(row) + session.commit() + + except: + print('This user already exsist') + + + + +def check_mark_value(id,mark,values,id_client,dish_id,text): + if mark > 5: + print('Max value is 5') + else: + row = Marks(id=id, mark_value=values,client_id = id_client,dish_id = dish_id,text_reviw = text) + session.add(row) + session.commit() + +def check_is_dish_exist(dish_name): + exsist = session.query(Dishes).filter(Dishes.dish_name == dish_name) + if session.query(Dishes.dish_name).filter(exsist.exists()).scalar() == None: + print('This dish is not exist in our database') + else: + result = session.query(Dishes).filter(Dishes.dish_name == dish_name) + print("Recipe:", result.text_recipe) + + + diff --git a/Workshop4/Workshop4/creating_database.txt b/Workshop4/Workshop4/creating_database.txt new file mode 100644 index 0000000..bee9786 --- /dev/null +++ b/Workshop4/Workshop4/creating_database.txt @@ -0,0 +1,37 @@ +CREATE TABLE dishes( + id NUMBER(2) NOT NULL, + dish_name VARCHAR2(50) NOT NULL, + id_category NUMBER(3) NOT NULL, + text_recipe VARCHAR2(3000) NOT NULL, + video_recept VARCHAR2(100) NOT NULL, + ingridients VARCHAR2(800) NOT NULL, + CONSTRAINT pk_id_dish PRIMARY KEY (id), + CONSTRAINT fk_id_category FOREIGN KEY(id_category) REFERENCES dish_categories(id) +); + +CREATE TABLE dish_categories( + id NUMBER(2) NOT NULL, + category_name VARCHAR2(50) NOT NULL, + CONSTRAINT pk_id_category PRIMARY KEY (id) + +); + +CREATE TABLE clients( + id NUMBER(2) NOT NULL, + client_username VARCHAR2(50) NOT NULL, + CONSTRAINT pk_id_client PRIMARY KEY (id), + CONSTRAINT username_unique UNIQUE (client_username) +); + +CREATE TABLE marks( + id NUMBER(2) NOT NULL, + mark_value NUMBER(2), + client_id NUMBER(2) NOT NULL, + dish_id NUMBER(2) NOT NULL, + text_reviw VARCHAR2(200) NOT NULL, + CONSTRAINT pk_id_mark PRIMARY KEY (id), + CONSTRAINT fk_id_client FOREIGN KEY(client_id) REFERENCES clients(id), + CONSTRAINT fk_id_dish FOREIGN KEY(dish_id) REFERENCES dishes(id), + CONSTRAINT check_mark_value CHECK(mark_value<=5) +); + diff --git a/Workshop4/Workshop4/database_connection.py b/Workshop4/Workshop4/database_connection.py new file mode 100644 index 0000000..56698f6 --- /dev/null +++ b/Workshop4/Workshop4/database_connection.py @@ -0,0 +1,13 @@ +from sqlalchemy.engine import create_engine + +DIALECT = 'oracle' +SQL_DRIVER = 'cx_oracle' +USERNAME = 'system' +PASSWORD = 'msn1973msn' + +HOST = 'localhost' +PORT = 1521 +SERVICE = 'xe' + +ENGINE_PATH_WIN_AUTH = DIALECT + '+' + SQL_DRIVER + '://' + USERNAME + ':' + PASSWORD + '@' + HOST + ':' + str(PORT) + '/?service_name=' + SERVICE +engine = create_engine(ENGINE_PATH_WIN_AUTH) diff --git a/Workshop4/Workshop4/db_classes.py b/Workshop4/Workshop4/db_classes.py new file mode 100644 index 0000000..097f965 --- /dev/null +++ b/Workshop4/Workshop4/db_classes.py @@ -0,0 +1,99 @@ +from sqlalchemy import Column, Integer, String, ForeignKey +from sqlalchemy.ext.declarative import declarative_base +from database_connection import engine +import json + +Base = declarative_base() + +from sqlalchemy.orm import relationship, sessionmaker + +class Categories(Base): + + __tablename__ = 'dish_categories' + + id = Column(Integer, primary_key=True) + category_name = Column(String(50)) + + styles = relationship('Dishes', backref='dish_categories', lazy=True) + + +class Dishes(Base): + + __tablename__ = 'dishes' + + id = Column(Integer, primary_key=True) + dish_name = Column(String(50)) + id_category = Column(Integer, ForeignKey("dish_categories.id")) + text_recipe = Column(String(100)) + video_recept = Column(String(100)) + ingridients = Column(String(800)) + + +class Clients(Base): + + __tablename__ = 'clients' + + id = Column(Integer, primary_key=True) + client_username = Column(String(50)) + +class Marks(Base): + + __tablename__ = 'marks' + + id = Column(Integer, primary_key=True) + mark_value = Column(Integer) + client_id = Column(Integer, ForeignKey("clients.id")) + dish_id = Column(Integer, ForeignKey("dishes.id")) + text_reviw = Column(String(100)) + + styles = relationship('Clients', backref='marks', lazy=True) + styles_1 = relationship('Dishes', backref='marks', lazy=True) + + + +Session = sessionmaker(bind = engine) +session = Session() + +categories = open("C:/Pyprojects/venv/categories.json",encoding="utf-8") +data_categories = json.load(categories) + +dishes = open("C:/Pyprojects/venv/recipes.json",encoding="utf8") +data_dishes = json.load(dishes) + +session.add_all([ + Categories(id = data_categories['categories'][0]['id'], category_name = data_categories['categories'][0]['name']), + Categories(id = data_categories['categories'][1]['id'], category_name = data_categories['categories'][1]['name']), + Categories(id = data_categories['categories'][2]['id'], category_name = data_categories['categories'][2]['name']), + Categories(id = data_categories['categories'][3]['id'], category_name = data_categories['categories'][3]['name'])] +) + +session.add_all([ + Dishes(id = data_dishes['dish'][0]['id'], + dish_name = data_dishes['dish'][0]['name'], + id_category=data_dishes['dish'][0]['id_category'], + text_recipe = data_dishes['dish'][0]['text_recipe'], + video_recept=data_dishes['dish'][0]['video_recipe'], + ingridients=data_dishes['dish'][0]['ingridients']), +Dishes(id = data_dishes['dish'][1]['id'], + dish_name = data_dishes['dish'][1]['name'], + id_category=data_dishes['dish'][1]['id_category'], + text_recipe = data_dishes['dish'][1]['text_recipe'], + video_recept=data_dishes['dish'][1]['video_recipe'], + ingridients=data_dishes['dish'][1]['ingridients']), +Dishes(id = data_dishes['dish'][2]['id'], + dish_name = data_dishes['dish'][2]['name'], + id_category=data_dishes['dish'][2]['id_category'], + text_recipe = data_dishes['dish'][2]['text_recipe'], + video_recept=data_dishes['dish'][2]['video_recipe'], + ingridients=data_dishes['dish'][2]['ingridients']), +Dishes(id = data_dishes['dish'][3]['id'], + dish_name = data_dishes['dish'][3]['name'], + id_category=data_dishes['dish'][3]['id_category'], + text_recipe = data_dishes['dish'][3]['text_recipe'], + video_recept=data_dishes['dish'][3]['video_recipe'], + ingridients=data_dishes['dish'][3]['ingridients'])] +) + +session.commit() + + diff --git a/Workshop4/Workshop4/json_files/categories.json b/Workshop4/Workshop4/json_files/categories.json new file mode 100644 index 0000000..4bb44e5 --- /dev/null +++ b/Workshop4/Workshop4/json_files/categories.json @@ -0,0 +1,19 @@ +{"categories":[ + { + "id": "1", + "name": "Первые блюда" +}, +{ + "id": "2", + "name": "Салаты" +}, +{ + "id": "3", + "name": "Основные блюда" +}, +{ + "id": "4", + "name": "Дессерты" +} +] +} \ No newline at end of file diff --git a/Workshop4/Workshop4/json_files/recipes.json b/Workshop4/Workshop4/json_files/recipes.json new file mode 100644 index 0000000..4337a32 --- /dev/null +++ b/Workshop4/Workshop4/json_files/recipes.json @@ -0,0 +1,35 @@ +{"dish":[ + { + "id": "1", + "name": "БОРЩ", + "id_category":"1", + "text_recipe":"Мясо вымойте, положите в кастрюлю и залейте холодной водой. Дождитесь, пока закипит, и варите ещё 20 минут. После закипания с помощью шумовки снимите лишнюю пену.Свёклу очистите от кожуры, натрите на крупной тёрке и обжарьте на растительном масле. Влейте немного мясного бульона и оставьте тушиться на медленном огне.Мелко нашинкуйте лук и обжарьте на масле до золотистого цвета. Добавьте морковь, влейте ещё немного бульона и тушите в течение 3—5 минут.Очистите картофель, нарежьте кубиками, добавьте к бульону и дайте закипеть.Затем добавьте мелко нашинкованную свежую капусту. Варите до готовности.Посолите и поперчите по вкусу.В конце добавьте тушёную свёклу, зелень и лавровый лист. Накройте кастрюлю крышкой и варите в течение 3—5 минут, после чего снимите с огня.При подаче заправьте борщ сметаной.", + "video_recipe":"https://www.youtube.com/watch?v=_-9nH4zFThs", + "ingridients": "Говядина (на кости)300—400 г,Капуста (свежая)1,5 кг,Картофель3—4 шт.,Морковь1—2 шт.,Лук (репчатый)1 шт.,Свёкла1 шт.,Сметана100 мл,Масло (растительное)2 ст. л.,Лавровый лист2 листа,Вода1,5—2 л,Зелень (укроп или петрушка)по вкусу,Перец (чёрный молотый)по вкусу,Сольпо вкусу')" +}, +{ + "id": "2", + "name": "ОЛИВЬЕ", + "id_category":"2", + "text_recipe":"Картофель и морковь сварить «в мундирах». Сварить яйца. 2. Тем временем колбасу и огурцы нарезать мелкими кубиками. 3. Готовые овощи и яйца почистить и также нарезать кубиками. 4. Мелко нарезать лук. 5. Все ингредиенты смешать, добавить горошек и заправить майонезом. 6. Украсить зеленью.", + "video_recipe":"https://www.youtube.com/watch?v=z8KpTK5oGBQ", + "ingridients": "картофель - 4-5 штук,морковь - 2 крупные или 3 средние ,консервированный горошек – 1 банка ,колбаса «Докторская» - 300-400 г,соленые или маринованные огурцы – 4-5 штук,яйца – 6 штук,лук – 1 штука,зелень,майонез." +}, +{ + "id": "3", + "name": "РИЗОТТО", + "id_category":"3", + "text_recipe":"Разогрейте сливочное масло в казанке на среднем огне. Добавьте грибы и готовьте, помешивая, 5-10 минут (пока грибы не подрумянятся). Добавьте нарезанную курицу, 1 ч. л. соли, перец и готовьте, помешивая, около 10 минут. Переложите грибы с курицей в другую посуду. В кастрюле доведите до кипения бульон.2. В казанке разогрейте растительное масло. Добавьте лук и обжарьте его на умеренном огне, помешивая, в течение 5 минут. Добавьте рис. Готовьте, помешивая, около 2 минут.3. Влейте в казанок с рисом вино, добавьте 1 ч. л. соли. Готовьте, часто помешивая, до тех пор, пока жидкость не впитается. Добавьте пол стакана кипящего бульона и помешивайте, пока не впитается. Рис должен слегка кипеть (уменьшите огонь, если нужно). Продолжайте готовить рис, подливая по пол стакана бульона и перемешивая (всего – около 25-30 минут). Жидкость, которая не впитается, станет вязкой благодаря высокому содержанию крахмала в рисе. Бульон может весь не понадобиться, а может, придется добавить немного бульона или воды дополнительно.4. Вмешайте курицу с грибами, сыр и петрушку. Прогрейте ризотто с курицей и подавайте блюдо. Приятного аппетита!", + "video_recipe":"https://www.youtube.com/watch?v=5__wUabM0y8", + "ingridients": "Масло сливочное – 2 ст. л,Грибы, тонко нарезанные – 220 г,Куриные грудки, филе, нарезанное кусочками по 1 см – 300 г,Соль – 1 ч. л.,Перец черный молотый – 1 ч. л.,Бульон куриный – 5 стакан,Масло растительное – 1 ст. л.,Лук репчатый, нарезанный – пол стакана,Рис Арборио – 1 стакан,Вино сухое белое – пол стакана,Сыр Пармезан тертый – пол стакана,Зелень петрушки нарезанная – 2 ст. л." +}, +{ + "id": "4", + "name": "ТИРАМИСУ", + "id_category":"4", + "text_recipe":"Отделить белки от желтков. Желтки растереть с сахаром.Добавить маскарпоне.Перемешать.Белки взбить в крепкую пену.Добавить белки в желтково-сырную массу.Аккуратно перемешать.Палочки окунуть в холодный кофе.Палочки надо окунать очень быстрым движением, чтобы они не размокли.Кофе приготовьте так, как вам нравится (я на 350 мл добавила 4 ч.л. кофе).По желанию, в кофе можно добавить вино, ром, ликер, бренди, или коньяк.В форму (я использовала форму размером 17 на 25 см) плотно выложить палочки, смоченные в кофе.На палочки выложить половину крема.Разровнять.На крем снова выложить палочки, смоченные в кофе.На палочки выложить оставшийся крем.Разровнять.Поставить в холодильник на 5–6 часов.Посыпать через сито какао.Разрезать на порции.Разрезать надо очень аккуратно, так как десерт очень нежный.", + "video_recipe":"https://www.youtube.com/watch?v=kSlmBQLa0B8", + "ingridients": "4 яйца (я использовала 18 перепелиных яиц),100 г сахара,500 г маскарпоне,250 г печенья «Савоярди» (примерно 34 штуки),350 мл кофе (растворимого или сваренного),порошок какао,2–3 ст.л. вина «Марсала» (или любого другого), или рома, ликера, бренди, коньяка — по желанию" +} +] +} From 7000630ad917eae9b5f9671ee9f416909d15e1a7 Mon Sep 17 00:00:00 2001 From: anymavpochka <31773307+anymavpochka@users.noreply.github.com> Date: Mon, 25 May 2020 01:14:02 +0300 Subject: [PATCH 3/9] Add files via upload --- .../Workshop4/Workshop4/check_function.py" | 59 +++++++++++ .../Workshop4/creating_database.txt" | 37 +++++++ .../Workshop4/database_connection.py" | 13 +++ .../Workshop4/Workshop4/db_classes.py" | 99 +++++++++++++++++++ .../Workshop4/json_files/categories.json" | 19 ++++ .../Workshop4/json_files/recipes.json" | 35 +++++++ 6 files changed, 262 insertions(+) create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/check_function.py" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/creating_database.txt" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/database_connection.py" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/db_classes.py" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/json_files/categories.json" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/json_files/recipes.json" diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/check_function.py" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/check_function.py" new file mode 100644 index 0000000..c81c0d6 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/check_function.py" @@ -0,0 +1,59 @@ +from database_connection import engine +from db_classes import Categories, Dishes, Clients, Marks,Base +from sqlalchemy.sql import select, update, join +from sqlalchemy import and_, or_, between, asc, desc,update +from sqlalchemy.orm import sessionmaker + +Base.metadata.create_all(engine) +Session = sessionmaker(bind=engine) +session = Session() + +def check_user_exist(username): + + try: + q = session.query(Clients).filter_by(Clients.id == '1') + + if session.query(Clients.id).filter_by(q.exists()).scalar() != 'None': + + row = Clients(id = '1',client_username = username) + session.add(row) + session.commit() + search_query = (session.query(Clients).filter_by(id == '1').one()).client_username + + print('Hello,', search_query) + + else: + exsist = session.query(Clients).filter_by(Clients.client_username == username) + if session.query(Clients.client_username).filter(exsist.exists()).scalar() != 'None': + print('User already exist') + + else: + id_value = session.query(Clients.id).count() + row = Clients(id=id_value+1, client_username=username) + session.add(row) + session.commit() + + except: + print('This user already exsist') + + + + +def check_mark_value(id,mark,values,id_client,dish_id,text): + if mark > 5: + print('Max value is 5') + else: + row = Marks(id=id, mark_value=values,client_id = id_client,dish_id = dish_id,text_reviw = text) + session.add(row) + session.commit() + +def check_is_dish_exist(dish_name): + exsist = session.query(Dishes).filter(Dishes.dish_name == dish_name) + if session.query(Dishes.dish_name).filter(exsist.exists()).scalar() == None: + print('This dish is not exist in our database') + else: + result = session.query(Dishes).filter(Dishes.dish_name == dish_name) + print("Recipe:", result.text_recipe) + + + diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/creating_database.txt" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/creating_database.txt" new file mode 100644 index 0000000..bee9786 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/creating_database.txt" @@ -0,0 +1,37 @@ +CREATE TABLE dishes( + id NUMBER(2) NOT NULL, + dish_name VARCHAR2(50) NOT NULL, + id_category NUMBER(3) NOT NULL, + text_recipe VARCHAR2(3000) NOT NULL, + video_recept VARCHAR2(100) NOT NULL, + ingridients VARCHAR2(800) NOT NULL, + CONSTRAINT pk_id_dish PRIMARY KEY (id), + CONSTRAINT fk_id_category FOREIGN KEY(id_category) REFERENCES dish_categories(id) +); + +CREATE TABLE dish_categories( + id NUMBER(2) NOT NULL, + category_name VARCHAR2(50) NOT NULL, + CONSTRAINT pk_id_category PRIMARY KEY (id) + +); + +CREATE TABLE clients( + id NUMBER(2) NOT NULL, + client_username VARCHAR2(50) NOT NULL, + CONSTRAINT pk_id_client PRIMARY KEY (id), + CONSTRAINT username_unique UNIQUE (client_username) +); + +CREATE TABLE marks( + id NUMBER(2) NOT NULL, + mark_value NUMBER(2), + client_id NUMBER(2) NOT NULL, + dish_id NUMBER(2) NOT NULL, + text_reviw VARCHAR2(200) NOT NULL, + CONSTRAINT pk_id_mark PRIMARY KEY (id), + CONSTRAINT fk_id_client FOREIGN KEY(client_id) REFERENCES clients(id), + CONSTRAINT fk_id_dish FOREIGN KEY(dish_id) REFERENCES dishes(id), + CONSTRAINT check_mark_value CHECK(mark_value<=5) +); + diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/database_connection.py" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/database_connection.py" new file mode 100644 index 0000000..56698f6 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/database_connection.py" @@ -0,0 +1,13 @@ +from sqlalchemy.engine import create_engine + +DIALECT = 'oracle' +SQL_DRIVER = 'cx_oracle' +USERNAME = 'system' +PASSWORD = 'msn1973msn' + +HOST = 'localhost' +PORT = 1521 +SERVICE = 'xe' + +ENGINE_PATH_WIN_AUTH = DIALECT + '+' + SQL_DRIVER + '://' + USERNAME + ':' + PASSWORD + '@' + HOST + ':' + str(PORT) + '/?service_name=' + SERVICE +engine = create_engine(ENGINE_PATH_WIN_AUTH) diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/db_classes.py" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/db_classes.py" new file mode 100644 index 0000000..097f965 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/db_classes.py" @@ -0,0 +1,99 @@ +from sqlalchemy import Column, Integer, String, ForeignKey +from sqlalchemy.ext.declarative import declarative_base +from database_connection import engine +import json + +Base = declarative_base() + +from sqlalchemy.orm import relationship, sessionmaker + +class Categories(Base): + + __tablename__ = 'dish_categories' + + id = Column(Integer, primary_key=True) + category_name = Column(String(50)) + + styles = relationship('Dishes', backref='dish_categories', lazy=True) + + +class Dishes(Base): + + __tablename__ = 'dishes' + + id = Column(Integer, primary_key=True) + dish_name = Column(String(50)) + id_category = Column(Integer, ForeignKey("dish_categories.id")) + text_recipe = Column(String(100)) + video_recept = Column(String(100)) + ingridients = Column(String(800)) + + +class Clients(Base): + + __tablename__ = 'clients' + + id = Column(Integer, primary_key=True) + client_username = Column(String(50)) + +class Marks(Base): + + __tablename__ = 'marks' + + id = Column(Integer, primary_key=True) + mark_value = Column(Integer) + client_id = Column(Integer, ForeignKey("clients.id")) + dish_id = Column(Integer, ForeignKey("dishes.id")) + text_reviw = Column(String(100)) + + styles = relationship('Clients', backref='marks', lazy=True) + styles_1 = relationship('Dishes', backref='marks', lazy=True) + + + +Session = sessionmaker(bind = engine) +session = Session() + +categories = open("C:/Pyprojects/venv/categories.json",encoding="utf-8") +data_categories = json.load(categories) + +dishes = open("C:/Pyprojects/venv/recipes.json",encoding="utf8") +data_dishes = json.load(dishes) + +session.add_all([ + Categories(id = data_categories['categories'][0]['id'], category_name = data_categories['categories'][0]['name']), + Categories(id = data_categories['categories'][1]['id'], category_name = data_categories['categories'][1]['name']), + Categories(id = data_categories['categories'][2]['id'], category_name = data_categories['categories'][2]['name']), + Categories(id = data_categories['categories'][3]['id'], category_name = data_categories['categories'][3]['name'])] +) + +session.add_all([ + Dishes(id = data_dishes['dish'][0]['id'], + dish_name = data_dishes['dish'][0]['name'], + id_category=data_dishes['dish'][0]['id_category'], + text_recipe = data_dishes['dish'][0]['text_recipe'], + video_recept=data_dishes['dish'][0]['video_recipe'], + ingridients=data_dishes['dish'][0]['ingridients']), +Dishes(id = data_dishes['dish'][1]['id'], + dish_name = data_dishes['dish'][1]['name'], + id_category=data_dishes['dish'][1]['id_category'], + text_recipe = data_dishes['dish'][1]['text_recipe'], + video_recept=data_dishes['dish'][1]['video_recipe'], + ingridients=data_dishes['dish'][1]['ingridients']), +Dishes(id = data_dishes['dish'][2]['id'], + dish_name = data_dishes['dish'][2]['name'], + id_category=data_dishes['dish'][2]['id_category'], + text_recipe = data_dishes['dish'][2]['text_recipe'], + video_recept=data_dishes['dish'][2]['video_recipe'], + ingridients=data_dishes['dish'][2]['ingridients']), +Dishes(id = data_dishes['dish'][3]['id'], + dish_name = data_dishes['dish'][3]['name'], + id_category=data_dishes['dish'][3]['id_category'], + text_recipe = data_dishes['dish'][3]['text_recipe'], + video_recept=data_dishes['dish'][3]['video_recipe'], + ingridients=data_dishes['dish'][3]['ingridients'])] +) + +session.commit() + + diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/json_files/categories.json" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/json_files/categories.json" new file mode 100644 index 0000000..4bb44e5 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/json_files/categories.json" @@ -0,0 +1,19 @@ +{"categories":[ + { + "id": "1", + "name": "Первые блюда" +}, +{ + "id": "2", + "name": "Салаты" +}, +{ + "id": "3", + "name": "Основные блюда" +}, +{ + "id": "4", + "name": "Дессерты" +} +] +} \ No newline at end of file diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/json_files/recipes.json" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/json_files/recipes.json" new file mode 100644 index 0000000..4337a32 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/json_files/recipes.json" @@ -0,0 +1,35 @@ +{"dish":[ + { + "id": "1", + "name": "БОРЩ", + "id_category":"1", + "text_recipe":"Мясо вымойте, положите в кастрюлю и залейте холодной водой. Дождитесь, пока закипит, и варите ещё 20 минут. После закипания с помощью шумовки снимите лишнюю пену.Свёклу очистите от кожуры, натрите на крупной тёрке и обжарьте на растительном масле. Влейте немного мясного бульона и оставьте тушиться на медленном огне.Мелко нашинкуйте лук и обжарьте на масле до золотистого цвета. Добавьте морковь, влейте ещё немного бульона и тушите в течение 3—5 минут.Очистите картофель, нарежьте кубиками, добавьте к бульону и дайте закипеть.Затем добавьте мелко нашинкованную свежую капусту. Варите до готовности.Посолите и поперчите по вкусу.В конце добавьте тушёную свёклу, зелень и лавровый лист. Накройте кастрюлю крышкой и варите в течение 3—5 минут, после чего снимите с огня.При подаче заправьте борщ сметаной.", + "video_recipe":"https://www.youtube.com/watch?v=_-9nH4zFThs", + "ingridients": "Говядина (на кости)300—400 г,Капуста (свежая)1,5 кг,Картофель3—4 шт.,Морковь1—2 шт.,Лук (репчатый)1 шт.,Свёкла1 шт.,Сметана100 мл,Масло (растительное)2 ст. л.,Лавровый лист2 листа,Вода1,5—2 л,Зелень (укроп или петрушка)по вкусу,Перец (чёрный молотый)по вкусу,Сольпо вкусу')" +}, +{ + "id": "2", + "name": "ОЛИВЬЕ", + "id_category":"2", + "text_recipe":"Картофель и морковь сварить «в мундирах». Сварить яйца. 2. Тем временем колбасу и огурцы нарезать мелкими кубиками. 3. Готовые овощи и яйца почистить и также нарезать кубиками. 4. Мелко нарезать лук. 5. Все ингредиенты смешать, добавить горошек и заправить майонезом. 6. Украсить зеленью.", + "video_recipe":"https://www.youtube.com/watch?v=z8KpTK5oGBQ", + "ingridients": "картофель - 4-5 штук,морковь - 2 крупные или 3 средние ,консервированный горошек – 1 банка ,колбаса «Докторская» - 300-400 г,соленые или маринованные огурцы – 4-5 штук,яйца – 6 штук,лук – 1 штука,зелень,майонез." +}, +{ + "id": "3", + "name": "РИЗОТТО", + "id_category":"3", + "text_recipe":"Разогрейте сливочное масло в казанке на среднем огне. Добавьте грибы и готовьте, помешивая, 5-10 минут (пока грибы не подрумянятся). Добавьте нарезанную курицу, 1 ч. л. соли, перец и готовьте, помешивая, около 10 минут. Переложите грибы с курицей в другую посуду. В кастрюле доведите до кипения бульон.2. В казанке разогрейте растительное масло. Добавьте лук и обжарьте его на умеренном огне, помешивая, в течение 5 минут. Добавьте рис. Готовьте, помешивая, около 2 минут.3. Влейте в казанок с рисом вино, добавьте 1 ч. л. соли. Готовьте, часто помешивая, до тех пор, пока жидкость не впитается. Добавьте пол стакана кипящего бульона и помешивайте, пока не впитается. Рис должен слегка кипеть (уменьшите огонь, если нужно). Продолжайте готовить рис, подливая по пол стакана бульона и перемешивая (всего – около 25-30 минут). Жидкость, которая не впитается, станет вязкой благодаря высокому содержанию крахмала в рисе. Бульон может весь не понадобиться, а может, придется добавить немного бульона или воды дополнительно.4. Вмешайте курицу с грибами, сыр и петрушку. Прогрейте ризотто с курицей и подавайте блюдо. Приятного аппетита!", + "video_recipe":"https://www.youtube.com/watch?v=5__wUabM0y8", + "ingridients": "Масло сливочное – 2 ст. л,Грибы, тонко нарезанные – 220 г,Куриные грудки, филе, нарезанное кусочками по 1 см – 300 г,Соль – 1 ч. л.,Перец черный молотый – 1 ч. л.,Бульон куриный – 5 стакан,Масло растительное – 1 ст. л.,Лук репчатый, нарезанный – пол стакана,Рис Арборио – 1 стакан,Вино сухое белое – пол стакана,Сыр Пармезан тертый – пол стакана,Зелень петрушки нарезанная – 2 ст. л." +}, +{ + "id": "4", + "name": "ТИРАМИСУ", + "id_category":"4", + "text_recipe":"Отделить белки от желтков. Желтки растереть с сахаром.Добавить маскарпоне.Перемешать.Белки взбить в крепкую пену.Добавить белки в желтково-сырную массу.Аккуратно перемешать.Палочки окунуть в холодный кофе.Палочки надо окунать очень быстрым движением, чтобы они не размокли.Кофе приготовьте так, как вам нравится (я на 350 мл добавила 4 ч.л. кофе).По желанию, в кофе можно добавить вино, ром, ликер, бренди, или коньяк.В форму (я использовала форму размером 17 на 25 см) плотно выложить палочки, смоченные в кофе.На палочки выложить половину крема.Разровнять.На крем снова выложить палочки, смоченные в кофе.На палочки выложить оставшийся крем.Разровнять.Поставить в холодильник на 5–6 часов.Посыпать через сито какао.Разрезать на порции.Разрезать надо очень аккуратно, так как десерт очень нежный.", + "video_recipe":"https://www.youtube.com/watch?v=kSlmBQLa0B8", + "ingridients": "4 яйца (я использовала 18 перепелиных яиц),100 г сахара,500 г маскарпоне,250 г печенья «Савоярди» (примерно 34 штуки),350 мл кофе (растворимого или сваренного),порошок какао,2–3 ст.л. вина «Марсала» (или любого другого), или рома, ликера, бренди, коньяка — по желанию" +} +] +} From b00a10dc23b87a7edd3e6d39870ca3d4bfa392b6 Mon Sep 17 00:00:00 2001 From: anymavpochka <31773307+anymavpochka@users.noreply.github.com> Date: Mon, 25 May 2020 12:01:41 +0300 Subject: [PATCH 4/9] =?UTF-8?q?Update=20and=20rename=20=D0=9C=D0=B0=D0=B9?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B5=D0=BD=D0=BA=D0=BE=20=D0=93=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D0=B0/Workshop4/Workshop4/check=5Ffunction.py=20to=20Mai?= =?UTF-8?q?strenko=20Anna/Workshop4/Workshop4/check=5Ffunction.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Workshop4/Workshop4/check_function.py | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) rename "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/check_function.py" => Maistrenko Anna/Workshop4/Workshop4/check_function.py (66%) diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/check_function.py" b/Maistrenko Anna/Workshop4/Workshop4/check_function.py similarity index 66% rename from "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/check_function.py" rename to Maistrenko Anna/Workshop4/Workshop4/check_function.py index c81c0d6..6ef4c06 100644 --- "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop4/Workshop4/check_function.py" +++ b/Maistrenko Anna/Workshop4/Workshop4/check_function.py @@ -11,21 +11,21 @@ def check_user_exist(username): try: - q = session.query(Clients).filter_by(Clients.id == '1') + - if session.query(Clients.id).filter_by(q.exists()).scalar() != 'None': + if bool(session.query(Clients.id).filter_by(id = '1').first()) is False: row = Clients(id = '1',client_username = username) session.add(row) session.commit() - search_query = (session.query(Clients).filter_by(id == '1').one()).client_username + search_query = (session.query(Clients).filter_by(id = '1').one()).client_username print('Hello,', search_query) else: - exsist = session.query(Clients).filter_by(Clients.client_username == username) - if session.query(Clients.client_username).filter(exsist.exists()).scalar() != 'None': - print('User already exist') + if bool(session.query(Clients.client_username).filter_by(client_username = username).first()) is True: + + print('User already exist') else: id_value = session.query(Clients.id).count() @@ -38,7 +38,6 @@ def check_user_exist(username): - def check_mark_value(id,mark,values,id_client,dish_id,text): if mark > 5: print('Max value is 5') @@ -48,12 +47,11 @@ def check_mark_value(id,mark,values,id_client,dish_id,text): session.commit() def check_is_dish_exist(dish_name): - exsist = session.query(Dishes).filter(Dishes.dish_name == dish_name) - if session.query(Dishes.dish_name).filter(exsist.exists()).scalar() == None: + if bool(session.query(Dishes.dish_name).filter_by(dish_name = dish_name).first()) is False: print('This dish is not exist in our database') else: - result = session.query(Dishes).filter(Dishes.dish_name == dish_name) - print("Recipe:", result.text_recipe) + result = session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).text_recipe + print("Recipe:", result) From a77b51d3a39be945a496845cc177208b3196ba26 Mon Sep 17 00:00:00 2001 From: anymavpochka <31773307+anymavpochka@users.noreply.github.com> Date: Mon, 25 May 2020 12:04:08 +0300 Subject: [PATCH 5/9] Update check_function.py --- Workshop4/Workshop4/check_function.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/Workshop4/Workshop4/check_function.py b/Workshop4/Workshop4/check_function.py index c81c0d6..3e186a1 100644 --- a/Workshop4/Workshop4/check_function.py +++ b/Workshop4/Workshop4/check_function.py @@ -11,20 +11,17 @@ def check_user_exist(username): try: - q = session.query(Clients).filter_by(Clients.id == '1') - - if session.query(Clients.id).filter_by(q.exists()).scalar() != 'None': + if bool(session.query(Clients.id).filter_by(id = '1').first()) is False: row = Clients(id = '1',client_username = username) session.add(row) session.commit() - search_query = (session.query(Clients).filter_by(id == '1').one()).client_username + search_query = (session.query(Clients).filter_by(id = '1').one()).client_username print('Hello,', search_query) else: - exsist = session.query(Clients).filter_by(Clients.client_username == username) - if session.query(Clients.client_username).filter(exsist.exists()).scalar() != 'None': + if bool(session.query(Clients.client_username).filter_by(client_username = username).first()) is True: print('User already exist') else: @@ -48,12 +45,11 @@ def check_mark_value(id,mark,values,id_client,dish_id,text): session.commit() def check_is_dish_exist(dish_name): - exsist = session.query(Dishes).filter(Dishes.dish_name == dish_name) - if session.query(Dishes.dish_name).filter(exsist.exists()).scalar() == None: + if bool(session.query(Dishes.dish_name).filter_by(dish_name = dish_name).first()) is False: print('This dish is not exist in our database') else: - result = session.query(Dishes).filter(Dishes.dish_name == dish_name) - print("Recipe:", result.text_recipe) + result = session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).text_recipe + print("Recipe:", result) From 1ab866d1ab073310a73d62cebde8342afdee4edc Mon Sep 17 00:00:00 2001 From: anymavpochka <31773307+anymavpochka@users.noreply.github.com> Date: Thu, 28 May 2020 16:08:22 +0300 Subject: [PATCH 6/9] Delete check_function.py --- .../Workshop4/Workshop4/check_function.py | 57 ------------------- 1 file changed, 57 deletions(-) delete mode 100644 Maistrenko Anna/Workshop4/Workshop4/check_function.py diff --git a/Maistrenko Anna/Workshop4/Workshop4/check_function.py b/Maistrenko Anna/Workshop4/Workshop4/check_function.py deleted file mode 100644 index 6ef4c06..0000000 --- a/Maistrenko Anna/Workshop4/Workshop4/check_function.py +++ /dev/null @@ -1,57 +0,0 @@ -from database_connection import engine -from db_classes import Categories, Dishes, Clients, Marks,Base -from sqlalchemy.sql import select, update, join -from sqlalchemy import and_, or_, between, asc, desc,update -from sqlalchemy.orm import sessionmaker - -Base.metadata.create_all(engine) -Session = sessionmaker(bind=engine) -session = Session() - -def check_user_exist(username): - - try: - - - if bool(session.query(Clients.id).filter_by(id = '1').first()) is False: - - row = Clients(id = '1',client_username = username) - session.add(row) - session.commit() - search_query = (session.query(Clients).filter_by(id = '1').one()).client_username - - print('Hello,', search_query) - - else: - if bool(session.query(Clients.client_username).filter_by(client_username = username).first()) is True: - - print('User already exist') - - else: - id_value = session.query(Clients.id).count() - row = Clients(id=id_value+1, client_username=username) - session.add(row) - session.commit() - - except: - print('This user already exsist') - - - -def check_mark_value(id,mark,values,id_client,dish_id,text): - if mark > 5: - print('Max value is 5') - else: - row = Marks(id=id, mark_value=values,client_id = id_client,dish_id = dish_id,text_reviw = text) - session.add(row) - session.commit() - -def check_is_dish_exist(dish_name): - if bool(session.query(Dishes.dish_name).filter_by(dish_name = dish_name).first()) is False: - print('This dish is not exist in our database') - else: - result = session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).text_recipe - print("Recipe:", result) - - - From bf3cf81c867c06c74bf4ad6a40d49c419c1e1980 Mon Sep 17 00:00:00 2001 From: anymavpochka <31773307+anymavpochka@users.noreply.github.com> Date: Thu, 28 May 2020 16:50:18 +0300 Subject: [PATCH 7/9] Add files via upload --- .../Workshop5/check_function.py" | 169 ++++++++++ .../Workshop5/database_connection.py" | 14 + .../Workshop5/db_classes.py" | 160 ++++++++++ .../Workshop5/json_files/categories.json" | 19 ++ .../Workshop5/json_files/clients.json" | 11 + .../Workshop5/json_files/marks.json" | 19 ++ .../Workshop5/json_files/recipes.json" | 95 ++++++ .../Workshop5/telegabot.py" | 296 ++++++++++++++++++ 8 files changed, 783 insertions(+) create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/check_function.py" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/database_connection.py" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/db_classes.py" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/categories.json" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/clients.json" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/marks.json" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/recipes.json" create mode 100644 "\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/telegabot.py" diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/check_function.py" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/check_function.py" new file mode 100644 index 0000000..1a0e72c --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/check_function.py" @@ -0,0 +1,169 @@ +from database_connection import engine +from db_classes import Categories, Dishes, Clients, Marks,Base +from sqlalchemy.sql import select, update, join +from sqlalchemy import and_, or_, between, asc, desc,update +from sqlalchemy.orm import sessionmaker +import plotly.express as px +import plotly.graph_objects as go + + +Base.metadata.create_all(engine) +Session = sessionmaker(bind=engine) +session = Session() + +# функция для добавления нового пользователя +def check_user_exist(username): + + try: + # q = session.query(Clients).filter_by(Clients.id == '1') + + if bool(session.query(Clients.id).filter_by(id = '1').first()) is False: + + row = Clients(id = '1',client_username = username) + session.add(row) + session.commit() + search_query = (session.query(Clients).filter_by(id = '1').one()).client_username + print('Hello,', search_query) + + else: + + if bool(session.query(Clients.client_username).filter_by(client_username = username).first()) is True: + print('User already exist') + + else: + id_value = session.query(Clients.id).count() + row = Clients(id = id_value+1, client_username = username) + session.add(row) + session.commit() + print('We successfully added you to our database') + + except: + print('This user already exsist') + +# функция для проверки значения оценки +def check_mark_value(id,mark,values,id_client,dish_id,text): + if mark > 5: + print('Max value is 5') + else: + row = Marks(id=id, mark_value=values,client_id = id_client,dish_id = dish_id,text_reviw = text) + session.add(row) + session.commit() +# bool(User.query.filter_by(name='John Smith').first()) + +# функция для проверки существования блюда +def check_is_dish_exist(dish_name): + # exsist = session.query(Dishes).filter(Dishes.dish_name == dish_name) + if bool(session.query(Dishes.dish_name).filter_by(dish_name = dish_name).first()) is False: + return False + + else: + return True +# +def if_not_exist_dish(): + + result = session.query(Dishes.dish_name).all() + return 'Такого блюда не существует в нашей базе данных, посмотрите блюда, которые доступны',result + +def result_of_search(dish_name): + + result = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()) + return result.ingridients, result.text_recipe + + # функция для получения видео рецепта +def get_video_recipe(dish_name): + # exsist = session.query(Dishes).filter(Dishes.dish_name == dish_name) + if bool(session.query(Dishes.dish_name).filter_by(dish_name = dish_name).first()) is False: + return False + else: + return True + +def get_exsist_video_recipe(dish_name): + result = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).video_recept + return result +# функция для добавления оценки пользователя +def add_user_mark(mark,client_username,dish_name): + + if bool(session.query(Marks.id).filter_by(id='1').first()) is False: + id_found = (session.query(Clients).filter(Clients.client_username == client_username).one()).id + dish_id = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).id + + row = Marks(id= '1', mark_value = mark, client_id = id_found, dish_id = dish_id,user_name = client_username) + session.add(row) + session.commit() + return 'Вы наш первый пользователь.Мы успешно добавили вашу первую оценку' + + elif bool(session.query(Marks).filter(Marks.user_name == client_username).one()) is True: + session.query(Marks).filter(Marks.user_name == client_username).update({Marks.mark_value: mark},synchronize_session=False) + session.commit() + return 'Мы успешно обновили вашу оценку' + else: + id_found = (session.query(Clients).filter(Clients.client_username == client_username).one()).id + dish_id = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).id + id_value = session.query(Marks.id).count() + row = Marks(id=id_value + 1, mark_value = mark, client_id = id_found, dish_id = dish_id, user_name = client_username) + session.add(row) + session.commit() + return 'Мы успешно добавили вашу оценку' +# функция для проверки принадлежности блюда к категории +def check_dish_category(dish_name): + id_dish = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).id + dish_category = (session.query(Categories).filter(Categories.id == id_dish).one()).category_name + return dish_category +# функция добавления комментария пользователя в бд +def add_comments(message,username): + + session.query(Marks).filter(Marks.user_name == username).update({Marks.text_reviw: message},synchronize_session = False) + session.commit() + return 'Мы успешно добавили ваш комментарий' +# функции для просмотре блюд и коментариев +def see_users_comments(): + return session.query(Marks.user_name,Marks.text_reviw).all() + +def see_all_soups(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 1).all()) + +def see_all_main_dishes(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 3).all()) + +def see_all_salads(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 2).all()) + +def see_all_desserts(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 4).all()) + +# график распределения оценок пользователей +def graph(): + result = session.query(Marks.mark_value).all() + print(result[0][0]) + count_of_five = [] + count_of_four = [] + count_of_three = [] + count_of_two = [] + count_of_one = [] + for i in range(len(result)): + if result[i][0] == 5: + count_of_five.append(result[i][0]) + elif result[i][0] == 4: + count_of_four.append(result[i][0]) + elif result[i][0] == 3: + count_of_three.append(result[i][0]) + elif result[i][0] == 2: + count_of_two.append(result[i][0]) + elif result[i][0] == 1: + count_of_one.append(result[i][0]) + + labels = ['mark 5', 'mark 4', 'mark 3','mark 2','mark 1'] + values = [len(count_of_five),len(count_of_four),len(count_of_three),len(count_of_two),len(count_of_one)] + + fig = go.Figure(data=[go.Pie(labels=labels, values=values)]) + fig.show() + + + + + + + + + + diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/database_connection.py" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/database_connection.py" new file mode 100644 index 0000000..2191a04 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/database_connection.py" @@ -0,0 +1,14 @@ +from sqlalchemy.engine import create_engine + +# для создания таблиц Вам неободимо прописать путь к своей базе данніх oracle +DIALECT = 'oracle' +SQL_DRIVER = 'cx_oracle' +USERNAME = 'system' +PASSWORD = 'msn1973msn' + +HOST = 'localhost' +PORT = 1521 +SERVICE = 'xe' + +ENGINE_PATH_WIN_AUTH = DIALECT + '+' + SQL_DRIVER + '://' + USERNAME + ':' + PASSWORD + '@' + HOST + ':' + str(PORT) + '/?service_name=' + SERVICE +engine = create_engine(ENGINE_PATH_WIN_AUTH) diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/db_classes.py" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/db_classes.py" new file mode 100644 index 0000000..46cf2f5 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/db_classes.py" @@ -0,0 +1,160 @@ +from sqlalchemy import Column, Integer, String, ForeignKey +from sqlalchemy.ext.declarative import declarative_base +from database_connection import engine +import json + +Base = declarative_base() + +from sqlalchemy.orm import relationship, sessionmaker +# создание таблиц +class Categories(Base): + + __tablename__ = 'dish_categories' + + id = Column(Integer, primary_key=True) + category_name = Column(String(50)) + + styles = relationship('Dishes', backref='dish_categories', lazy=True) + +class Dishes(Base): + + __tablename__ = 'dishes' + + id = Column(Integer, primary_key=True) + dish_name = Column(String(50)) + id_category = Column(Integer, ForeignKey("dish_categories.id")) + text_recipe = Column(String(100)) + video_recept = Column(String(100)) + ingridients = Column(String(800)) + + +class Clients(Base): + + __tablename__ = 'clients' + + id = Column(Integer, primary_key=True) + client_username = Column(String(50)) + +class Marks(Base): + + __tablename__ = 'marks' + + id = Column(Integer, primary_key=True) + mark_value = Column(Integer) + client_id = Column(Integer, ForeignKey("clients.id")) + dish_id = Column(Integer, ForeignKey("dishes.id")) + text_reviw = Column(String(100)) + user_name = Column(String(20)) + + styles = relationship('Clients', backref='marks', lazy=True) + styles_1 = relationship('Dishes', backref='marks', lazy=True) + +Base.metadata.create_all(engine) + +# добавления данных в бд +Session = sessionmaker(bind = engine) +session = Session() +# считывание данных с файла, на другом компьютере прийдеся вставить другой путь к файлам + +categories = open("C:/Pyprojects/venv/categories.json",encoding="utf-8") +data_categories = json.load(categories) +dishes = open("C:/Pyprojects/venv/recipes.json",encoding="utf8") +data_dishes = json.load(dishes) +marks = open("C:/Pyprojects/venv/marks.json",encoding="utf8") +data_marks = json.load(marks) +clients = open("C:/Pyprojects/venv/clients.json",encoding="utf8") +data_clients = json.load(clients) + +# добавление категорий блюд +session.add_all([ + Categories(id = data_categories['categories'][0]['id'], category_name = data_categories['categories'][0]['name']), + Categories(id = data_categories['categories'][1]['id'], category_name = data_categories['categories'][1]['name']), + Categories(id = data_categories['categories'][2]['id'], category_name = data_categories['categories'][2]['name']), + Categories(id = data_categories['categories'][3]['id'], category_name = data_categories['categories'][3]['name'])] +) +session.commit() + +# добавление рецептов и названий блюд +session.add_all([ + Dishes(id = data_dishes['dish'][0]['id'], + dish_name = data_dishes['dish'][0]['name'], + id_category=data_dishes['dish'][0]['id_category'], + text_recipe = data_dishes['dish'][0]['text_recipe'], + video_recept=data_dishes['dish'][0]['video_recipe'], + ingridients=data_dishes['dish'][0]['ingridients']), +Dishes(id = data_dishes['dish'][1]['id'], + dish_name = data_dishes['dish'][1]['name'], + id_category=data_dishes['dish'][1]['id_category'], + text_recipe = data_dishes['dish'][1]['text_recipe'], + video_recept=data_dishes['dish'][1]['video_recipe'], + ingridients=data_dishes['dish'][1]['ingridients']), +Dishes(id = data_dishes['dish'][2]['id'], + dish_name = data_dishes['dish'][2]['name'], + id_category=data_dishes['dish'][2]['id_category'], + text_recipe = data_dishes['dish'][2]['text_recipe'], + video_recept=data_dishes['dish'][2]['video_recipe'], + ingridients=data_dishes['dish'][2]['ingridients']), +Dishes(id = data_dishes['dish'][3]['id'], + dish_name = data_dishes['dish'][3]['name'], + id_category=data_dishes['dish'][3]['id_category'], + text_recipe = data_dishes['dish'][3]['text_recipe'], + video_recept=data_dishes['dish'][3]['video_recipe'], + ingridients=data_dishes['dish'][3]['ingridients']), +Dishes(id = data_dishes['dish'][4]['id'], + dish_name = data_dishes['dish'][4]['name'], + id_category=data_dishes['dish'][4]['id_category'], + text_recipe = data_dishes['dish'][4]['text_recipe'], + video_recept=data_dishes['dish'][4]['video_recipe'], + ingridients=data_dishes['dish'][4]['ingridients']), +Dishes(id = data_dishes['dish'][5]['id'], + dish_name = data_dishes['dish'][5]['name'], + id_category=data_dishes['dish'][5]['id_category'], + text_recipe = data_dishes['dish'][5]['text_recipe'], + video_recept=data_dishes['dish'][5]['video_recipe'], + ingridients=data_dishes['dish'][5]['ingridients']), +Dishes(id = data_dishes['dish'][6]['id'], + dish_name = data_dishes['dish'][6]['name'], + id_category=data_dishes['dish'][6]['id_category'], + text_recipe = data_dishes['dish'][6]['text_recipe'], + video_recept=data_dishes['dish'][6]['video_recipe'], + ingridients=data_dishes['dish'][6]['ingridients']), +Dishes(id = data_dishes['dish'][7]['id'], + dish_name = data_dishes['dish'][7]['name'], + id_category=data_dishes['dish'][7]['id_category'], + text_recipe = data_dishes['dish'][7]['text_recipe'], + video_recept=data_dishes['dish'][7]['video_recipe'], + ingridients=data_dishes['dish'][7]['ingridients']), +Dishes(id = data_dishes['dish'][8]['id'], + dish_name = data_dishes['dish'][8]['name'], + id_category=data_dishes['dish'][8]['id_category'], + text_recipe = data_dishes['dish'][8]['text_recipe'], + video_recept=data_dishes['dish'][8]['video_recipe'], + ingridients=data_dishes['dish'][8]['ingridients']), +] +) +session.commit() + +# Этот код следует запустить уже после первого запуска и поиска блюда в нем, эти данные добавляються искуственно, только для построения графика и добавления комментариев + +# session.add_all([ +# Clients(id = data_clients['clients'][0]['id'], +# client_username = data_clients['clients'][0]['name']), +# Clients(id = data_clients['clients'][1]['id'], +# client_username = data_clients['clients'][1]['name']) +# ] +# ) +# session.commit() +# +# session.add_all([ +# Marks(id = data_marks['marks'][0]['id'], +# mark_value = data_marks['marks'][0]['value'], +# client_id = data_marks['marks'][0]['id_client'], +# dish_id = data_marks['marks'][1]['id_dish'], +# text_reviw = data_marks['marks'][1]['text_reviw'], +# user_name = data_marks['marks'][1]['name'])] +# ) +# session.commit() +# # + +# +# diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/categories.json" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/categories.json" new file mode 100644 index 0000000..4bb44e5 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/categories.json" @@ -0,0 +1,19 @@ +{"categories":[ + { + "id": "1", + "name": "Первые блюда" +}, +{ + "id": "2", + "name": "Салаты" +}, +{ + "id": "3", + "name": "Основные блюда" +}, +{ + "id": "4", + "name": "Дессерты" +} +] +} \ No newline at end of file diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/clients.json" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/clients.json" new file mode 100644 index 0000000..b194d4d --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/clients.json" @@ -0,0 +1,11 @@ +{"clients":[ + { + "id": "2", + "name": "dima" +}, +{ + "id": "3", + "name": "olya" +} +] +} \ No newline at end of file diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/marks.json" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/marks.json" new file mode 100644 index 0000000..d80e7a0 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/marks.json" @@ -0,0 +1,19 @@ +{"marks":[ + { + "id": "2", + "value": "4", + "id_client": "2", + "id_dish": "2", + "text_reviw": "Очень удобный в использовании!", + "name":"dima" +}, +{ + "id": "3", + "value": "2", + "id_client": "3", + "id_dish": "3", + "text_reviw": "Очень классній бот, первый помощник на кухне!", + "name":"olya" +} +] +} \ No newline at end of file diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/recipes.json" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/recipes.json" new file mode 100644 index 0000000..4fe0667 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/json_files/recipes.json" @@ -0,0 +1,95 @@ +{"dish":[ + { + "id": "1", + "name": "БОРЩ", + "id_category":"1", + "text_recipe":"Мясо вымойте, положите в кастрюлю и залейте холодной водой. Дождитесь, пока закипит, и варите ещё 20 минут. После закипания с помощью шумовки снимите лишнюю пену.Свёклу очистите от кожуры, натрите на крупной тёрке и обжарьте на растительном масле. Влейте немного мясного бульона и оставьте тушиться на медленном огне.Мелко нашинкуйте лук и обжарьте на масле до золотистого цвета. Добавьте морковь, влейте ещё немного бульона и тушите в течение 3—5 минут.Очистите картофель, нарежьте кубиками, добавьте к бульону и дайте закипеть.Затем добавьте мелко нашинкованную свежую капусту. Варите до готовности.Посолите и поперчите по вкусу.В конце добавьте тушёную свёклу, зелень и лавровый лист. Накройте кастрюлю крышкой и варите в течение 3—5 минут, после чего снимите с огня.При подаче заправьте борщ сметаной.", + "video_recipe":"https://www.youtube.com/watch?v=_-9nH4zFThs", + "ingridients": "Говядина (на кости)300—400 г,Капуста (свежая)1,5 кг,Картофель3—4 шт.,Морковь1—2 шт.,Лук (репчатый)1 шт.,Свёкла1 шт.,Сметана100 мл,Масло (растительное)2 ст. л.,Лавровый лист2 листа,Вода1,5—2 л,Зелень (укроп или петрушка)по вкусу,Перец (чёрный молотый)по вкусу,Сольпо вкусу')" +}, +{ + "id": "2", + "name": "ОЛИВЬЕ", + "id_category":"2", + "text_recipe":"Картофель и морковь сварить «в мундирах». Сварить яйца. 2. Тем временем колбасу и огурцы нарезать мелкими кубиками. 3. Готовые овощи и яйца почистить и также нарезать кубиками. 4. Мелко нарезать лук. 5. Все ингредиенты смешать, добавить горошек и заправить майонезом. 6. Украсить зеленью.", + "video_recipe":"https://www.youtube.com/watch?v=z8KpTK5oGBQ", + "ingridients": "картофель - 4-5 штук,морковь - 2 крупные или 3 средние ,консервированный горошек – 1 банка ,колбаса «Докторская» - 300-400 г,соленые или маринованные огурцы – 4-5 штук,яйца – 6 штук,лук – 1 штука,зелень,майонез." +}, +{ + "id": "3", + "name": "РИЗОТТО", + "id_category":"3", + "text_recipe":"Разогрейте сливочное масло в казанке на среднем огне. Добавьте грибы и готовьте, помешивая, 5-10 минут (пока грибы не подрумянятся). Добавьте нарезанную курицу, 1 ч. л. соли, перец и готовьте, помешивая, около 10 минут. Переложите грибы с курицей в другую посуду. В кастрюле доведите до кипения бульон.2. В казанке разогрейте растительное масло. Добавьте лук и обжарьте его на умеренном огне, помешивая, в течение 5 минут. Добавьте рис. Готовьте, помешивая, около 2 минут.3. Влейте в казанок с рисом вино, добавьте 1 ч. л. соли. Готовьте, часто помешивая, до тех пор, пока жидкость не впитается. Добавьте пол стакана кипящего бульона и помешивайте, пока не впитается. Рис должен слегка кипеть (уменьшите огонь, если нужно). Продолжайте готовить рис, подливая по пол стакана бульона и перемешивая (всего – около 25-30 минут). Жидкость, которая не впитается, станет вязкой благодаря высокому содержанию крахмала в рисе. Бульон может весь не понадобиться, а может, придется добавить немного бульона или воды дополнительно.4. Вмешайте курицу с грибами, сыр и петрушку. Прогрейте ризотто с курицей и подавайте блюдо. Приятного аппетита!", + "video_recipe":"https://www.youtube.com/watch?v=5__wUabM0y8", + "ingridients": "Масло сливочное – 2 ст. л,Грибы, тонко нарезанные – 220 г,Куриные грудки, филе, нарезанное кусочками по 1 см – 300 г,Соль – 1 ч. л.,Перец черный молотый – 1 ч. л.,Бульон куриный – 5 стакан,Масло растительное – 1 ст. л.,Лук репчатый, нарезанный – пол стакана,Рис Арборио – 1 стакан,Вино сухое белое – пол стакана,Сыр Пармезан тертый – пол стакана,Зелень петрушки нарезанная – 2 ст. л." +}, +{ + "id": "4", + "name": "ТИРАМИСУ", + "id_category":"4", + "text_recipe":"Отделить белки от желтков. Желтки растереть с сахаром.Добавить маскарпоне.Перемешать.Белки взбить в крепкую пену.Добавить белки в желтково-сырную массу.Аккуратно перемешать.Палочки окунуть в холодный кофе.Палочки надо окунать очень быстрым движением, чтобы они не размокли.Кофе приготовьте так, как вам нравится (я на 350 мл добавила 4 ч.л. кофе).По желанию, в кофе можно добавить вино, ром, ликер, бренди, или коньяк.В форму (я использовала форму размером 17 на 25 см) плотно выложить палочки, смоченные в кофе.На палочки выложить половину крема.Разровнять.На крем снова выложить палочки, смоченные в кофе.На палочки выложить оставшийся крем.Разровнять.Поставить в холодильник на 5–6 часов.Посыпать через сито какао.Разрезать на порции.Разрезать надо очень аккуратно, так как десерт очень нежный.", + "video_recipe":"https://www.youtube.com/watch?v=kSlmBQLa0B8", + "ingridients": "4 яйца (я использовала 18 перепелиных яиц),100 г сахара,500 г маскарпоне,250 г печенья «Савоярди» (примерно 34 штуки),350 мл кофе (растворимого или сваренного),порошок какао,2–3 ст.л. вина «Марсала» (или любого другого), или рома, ликера, бренди, коньяка — по желанию" +}, +{ + "id": "5", + "name": "СОЛЯНКА", + "id_category":"1", + "text_recipe":"1. Налить бульон в емкость МВ (у меня куриный, можно сварить мясо на режиме Суп.Включить мультиварку, установить режим выпечка или экспресс.\n2.Обжарить лук, добавить томат. Перемешать и прожарить все это, еще 5 - 7 минут.\n3.Затем добавить огурцы, порезанные кубиками.\n4.Пока все в мультиварке тушится, готовим мясное ассорти. У меня - мясо отварное, колбаса вареная, колбаса копченая и кусочек копченой курицы. Режем все соломкой или кубиками.Закладываем в чашу мясное ассорти.Заливаем процеженным бульоном. Можно еще влить 1 стакан рассола от огурцов .\n5.Добавить картофель, порезанный мелкими кубиками.Добавить специи по вкусу, лавровый лист, зелень.\n6.Включить режем тушение или суп 1 час.И ждать сигнала)) Аромат на кухне будет неописуемый)).\n7.Подается солянка к столу, со сметаной, маслинами, долькой лимона и мелко нарезанной зеленью.Приятного аппетита!!!.", + "video_recipe":"https://www.youtube.com/watch?v=wXiK9Qoce8A", + "ingridients": "350 г свинины;\n2 луковицы;\n250 г копчёной колбасы;\n250 г ветчинной колбасы;\n4 солёных огурца;\n2 столовые ложки растительного масла;\n2 столовые ложки томатной пасты;\n100 г оливок;\n2 сосиски;\n100–120 мл огуречного рассола;\nсоль — по вкусу;\nзелень, сметана, лимон — для подачи." +}, +{ + "id": "6", + "name": "СВЕКОЛЬНИК", + "id_category":"1", + "text_recipe":"1. Подготовить продукты для приготовления горячего свекольника.\n2.Морковь очистить, вымыть, тонко нашинковать.Свеклу очистить, вымыть, нарезать соломкой.Лук очистить, вымыть, мелко нарезать.Картофель очистить, вымыть, нарезать дольками..\n3.Вскипятить воду (1-1,5 л)\n4.В кипящую воду положить 1 морковь, лук, картофель.Добавить нарезанные со­ломкой полторы свеклы. Накрыть крышкой и варить при слабом кипении.\n5.На сковороде растопить сливочное масло.Оставшиеся 0,5 свеклы, морковь выложить в растопленное масло, перемешать. Спассеровать на сливочном масле, помешивая. Жарить коренья нужно на среднем огне 5-7 минут.\n6.Помидоры ошпарить кипятком, снять шкурку.Помидоры мелко нарезать..\n7.Добавить помидо­ры к кореньям, перемешать, тушить еще 5-7 минут (помидоры должны полностью размягчиться).Высыпать в кастрюлю с кипящими овощами.\n8.Заправить по вкусу солью. Накрыть крышкой, варить еще 5 минут. Затем свекольник выключить.Можно откорректировать вкус, дополнительно заправив свекольник сахаром и лимонной кислотой.Горячий свекольник готов.\n9.При подаче горячий свекольник заправить зеленью и сметаной.", + "video_recipe":"https://www.youtube.com/watch?v=admLVc8ezXw", + "ingridients": "Свекла - 250-350 г (2 шт.)\nМорковь - 150-200 г (1-2 шт.)\nКартофель - 200 г (2 шт.)\nПомидоры - 400 г (4-5 шт.)\nЛук - 70-90 г (1 шт.)\nСоль 1,5 ч. ложки\nСметана - 100-200 г\nЗелень - 0,5 пучка\nЛимонная кислота (по желанию) - щепотку\nСахар (по желанию) - 0,25 ч. ложки" +}, +{ + "id": "7", + "name": "ВИНИГРЕТ", + "id_category":"2", + "text_recipe":"1. Свеклу отварить до готовности.\n2.Картофель и морковь отварить до готовности.\n3.Лук мелко нарезать.\n4.Огурцы нарезать кубиками.\n5.Если капуста сильно соленая, ее промыть.Мелко нашинковать.\n6.Морковь нарезать кубиками.Свеклу нарезать кубиками.Картофель нарезать кубиками.\n7.Смешать картофель, морковь, огурцы, лук, капусту, свеклу.Немного посолить\n8.Заправить растительным маслом.", + "video_recipe":"https://www.youtube.com/watch?v=RZtWdZ8q6RM", + "ingridients": "400 г свеклы\n300 г моркови\n400 г картофеля\n200 г квашеной капусты\n200 г маринованных или соленых огурцов\n150 г лука\nсоль\nрастительное масло" +}, +{ + "id": "8", + "name": "ЦЕЗАРЬ", + "id_category":"2", + "text_recipe":"1.С хлеба срежьте корочку, а сам хлеб порежьте кубиками.\n2. Чеснок пропустите через чесночницу и обжарьте его пару минут в разогретом оливковом масле.\n3. Куриное филе порежьте небольшими кусочками и отправляйте к чесноку на сковороду.\n4. Обжарьте курицу, помешивая, 10 минут, в конце посолите и поперчите по вкусу.\n5. Уберите с огня курицу, а в ту же сковороду добавьте еще немного масла и обжарьте хлеб, постоянно помешивая, пока он не зарумянится.\n6. Приготовьте соус для салата «Цезарь» . Для этого пармезан натрите на мелкой терке. Смешайте яичный желток, оливковое масло, горчицу, лимонный сок, тертый пармезан и хорошенько все взбейте.\n7. Листья салата порвите средними кусками. Помидоры черри порежьте на половинки.\n8. Выложите на салат обжаренное куриное филе, добавьте помидоры, полейте соусом, сверху потрите пармезаном.\n9. Непосредственно перед подачей добавьте в салат «Цезарь» хлебные сухарики. Приятного аппетита!", + "video_recipe":"https://www.youtube.com/watch?v=onq7Sd8c2To", + "ingridients": "300 г курицы (филе)\n100 г пармезана\n100 г белого хлеба, 200 г листьев салата\n100 г помидоров черри\n1 зубок чеснока\n1 ст. ложка оливкового масла\nчерный молотый перец по вкусу\nсоль по вкусу.\nСоус для салата «Цезарь» включает ингредиенты:\n1 яичный желток\n1 ч. ложка горчицы\n2 ст. ложки оливкового масла\n1 ч. ложка лимонного сока\n50 г пармезана\nчерный молотый перец по вкусу\nсоль по вкусу." + +}, +{ + "id": "9", + "name": "ГОЛУБЦЫ", + "id_category":"3", + "text_recipe":"1.Подготовим капустные листья для голубцов, снимим листья с капусты.\n2.Измельчим лук и морковь.\n3.Поджарим овощи на растительном масле до готовности и разделим на две части. Одну часть используем для начинки. Во вторую часть добавим соль (1 ст. л.), сахар (1 ст. л.), молотый перец и томатный соус или кетчуп.\n4.Смешаем сваренный заранее рис, фарш и овощную зажарку. Начинку для голубцов посолим, поперчим и перемешаем.\n5.Закрутим голубцы с мясом и рисом.\n6.Голубцы выложим в кастрюлю и зальем томатной подливой.\n7.Готовим голубцы на небольшом огне примерно 1 час.", + "video_recipe":"https://www.youtube.com/watch?v=Pva-0xZ2Ips", + "ingridients": "Капуста белокочанная - 1 шт.\nРис - 1 стакан\nФарш мясной - 500 г\nМорковь - 1 шт.\nЛук репчатый - 4-5 шт.\nКетчуп или томатный соус - 3 ст.л.\nМасло растительное - для жарки\nПерец молотый (красный и черный)\nСахар\nСоль" + +}, +{ + "id": "11", + "name": "БРАУНИ", + "id_category":"4", + "text_recipe":"1.Включить духовку для предварительного разогрева на 180 градусов. Противень размером 25х35 см застелить фольгой и слегка сбрызнуть растительным маслом.\n2.В большой миске смешать масло, белый, ванильный и коричневый сахар и кофейный напиток. Миксером на средней скорости перемешать до пышного, однородного состояния. Затем по одному добавлять яйца, хорошо перемешивая после каждого.\n3. В большой миске соединить муку, какао-порошок, разрыхлитель, соду и соль. Эту массу постепенно всыпать в масляную смесь, при этом перемешивая миксером на средней скорости. В эту массу добавить шоколад и пекан. Хорошо перемешать и выложить эту массу в подготовленную форму.\n4.Поставить в разогретую духовку и выпекать около 30-35 минут. Перед подачей дать готовому изделию полностью остыть.", + "video_recipe":"https://www.youtube.com/watch?v=MhbZmcGSvcg", + "ingridients": "Масло сливочное (размягченное) - 300 г\nСахар коричневый - 1 3/4 стакана\nСахар белый - 1 стакан\nКофе растворимый - 1/2 стакана\nЯйца - 4 шт.\nВанильный сахар - 1 ст. л.\nМука пшеничная - 1 1/2 стакана\nКакао-порошок - 1 стакан\nРазрыхлитель - 1/2 ч. л.\nСода пищевая - 1/2 ч. л.\nСоль - 1/4 ч. л.\nЧипсы черного шоколада или шоколад, разломанный на кусочки - 1 стакан\nОрех пекан жареный - 1 стакан\nМолочный шоколад (разломанный на кусочки) - 30 г" + +}, +{ + "id": "12", + "name": "ЧИЗКЕЙК", + "id_category":"4", + "text_recipe":"1.Измельчите печенье до состояния крошки. Сливочное масло растопите на водяной бане.Перемешайте печенье с 1 ст. ложкой сахара, добавьте масло, тщательно перемешайте.\n2.Форму для запекания (диаметр моей формы - 22 см) застелите пергаментной бумагой. Из полученной массы сделайте основу для чизкейка в форме для запекания и поместите ее в духовку, разогретую до 170 градусов, на 10 минут.\n3.Пока корж находится в духовке, займитесь приготовлением сырной начинки. Для этого взбейте яйца с 4-мя столовыми ложками сахара, добавьте жирные сливки, ванилин и цедру половины лимона.\n4.В полученную массу добавьте сливочный сыр и снова все хорошо взбейте венчиком до получения однородной консистенции.\n5.Полученную сырную массу (довольно жидкую) вылейте на готовую основу и поместите в духовку. Внимание! Чизкейк должен готовиться в духовке на водяной бане при температуре не более 150 градусов в течение 70-80 минут.\n6.Готовый чизкейк уберите в холодильник на несколько часов, а лучше на ночь. Перед подачей украсьте чизкейк (например, сахарной пудрой и свежей клубникой) и достаньте из формы.", + "video_recipe":"https://www.youtube.com/watch?v=-UVzp2uF5Es", + "ingridients": "Печенье (любое рассыпчатое) - 300 г\nСыр сливочный (рикотта; в идеале - филадельфия) - 500 г\nСливки 35% - 200 г\nЯйца куриные - 4 шт.\nМасло сливочное - 100 г\nСахар - 5 ст. л.\nЛимон (для цедры) - 0,5-1 шт.\nВанилин - 1 пакетик (по вкусу)\nДля украшения (по желанию):\nСахарная пудра\nЯгоды свежие (клубника)" + +} +] +} diff --git "a/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/telegabot.py" "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/telegabot.py" new file mode 100644 index 0000000..54b7010 --- /dev/null +++ "b/\320\234\320\260\320\271\321\201\321\202\321\200\320\265\320\275\320\272\320\276 \320\223\320\260\320\275\320\275\320\260/Workshop5/telegabot.py" @@ -0,0 +1,296 @@ +import telebot +import database_connection +import db_classes +import check_function + +bot = telebot.TeleBot('1240952041:AAGgpZ6C_-Ttga9fFgFKgdFImeV6GLcjd1s') + +from telebot import types + +@bot.message_handler(commands=['start']) + +def handle_text(message): + keyboard1 = telebot.types.ReplyKeyboardMarkup() + keyboard1.row('Поиск рецепта🥮') + keyboard1.row('Правила использования📄') + keyboard1.row('Помощь❓') + + bot.send_message(message.chat.id, + 'Готовить стало ещё проще!\n' + 'Добро пожаловать,' + str(message.from_user.username) + '\nЭтот бот предоставит вам возможность \nне только найти новые рецепты, но\nтакже сохранить их в кулинарную книгу\n Выберите одну из категорий ниже ', + reply_markup=keyboard1) + +# +@bot.message_handler(commands=['help']) + +def handle_text(message): + bot.send_message(message.from_user.id, + 'Вы используете бот для поиска рецептов\n''Ниже представленны команды, которые существуют в боте:\n''/start - начало работы с ботом\n''/help - основные команды бота\n''/first_dishes - список доступных супов\n''/salads - список доступных салатов\n''/main_dishes - список доступных основніх блюд,\n''/desserts - список доступных дессертов,\n''/statistic - посмотреть статистику оценок') + +@bot.message_handler(commands=['first_dishes']) +def handle_text(message): + result = check_function.see_all_soups() + print(result) + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['salads']) +def handle_text(message): + result = check_function.see_all_salads() + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['main_dishes']) +def handle_text(message): + result = check_function.see_all_main_dishes() + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['desserts']) +def handle_text(message): + result = check_function.see_all_desserts() + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['statistic']) +def handle_text(message): + + check_function.graph() + bot.send_message(message.from_user.id,'Cатистика оценок') + +@bot.message_handler(content_types=['text']) +def handle_text(message): + + if message.text == 'Правила использования📄': + bot.send_message(message.from_user.id, + '1. Для начала работы с ботом, необходимо ввести команду /start\n''2.Для поиска рецепта нажмите клавишу "поиск рецепта"\n''3.Выберите категорию, к которой относится блюдо, которое вы хотите найти,ВАЖНО,бот сможет найти блюдо в заданой категории, только, если оно относится к этой категории\n''4.Вы можете просмотреть видео рецепт блюда или просто прочиатть его,подтвердив свой выбор нажатием на соответствующюю клавишу\n''5.После окончания работы с ботом, вы можете поставить ем оценку и оставить комментарий.') + elif message.text == 'Помощь❓': + + bot.send_message(message.from_user.id, + 'Вы используете бот для поиска рецептов\n''Ниже представленны команды, которые существуют в боте:\n''/start - начало работы с ботом\n''/help - основные команды бота\n''/first_dishes - список доступных супов\n''/salads - список доступных салатов\n''/main_dishes - список доступных основніх блюд,\n''/desserts - список доступных дессертов,\n''/statistic - посмотреть статистику оценок') + elif message.text == 'Поиск рецепта🥮': + + keyboard = types.InlineKeyboardMarkup() + key_sup = types.InlineKeyboardButton(text='Первые блюда 🍲', callback_data='soups') + # И добавляем кнопку на экран + keyboard.add(key_sup) + key_main = types.InlineKeyboardButton(text='Основные блюда 🥘', callback_data='main_dishes') + keyboard.add(key_main) + key_salad = types.InlineKeyboardButton(text='Салаты 🥗', callback_data='salads') + keyboard.add(key_salad) + key_sweet = types.InlineKeyboardButton(text='Дессерты 🍰', callback_data='sweets') + keyboard.add(key_sweet) + + bot.send_message(message.from_user.id, "Выбери категорию.", reply_markup=keyboard) + + +@bot.callback_query_handler(func=lambda call: call.data == 'soups') +def callback_worker(call): + + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название супа 🍲') + bot.register_next_step_handler(sent,text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название супа 🍲') + bot.register_next_step_handler(sent, video_recipe) + +@bot.callback_query_handler(func=lambda call: call.data == 'main_dishes') +def callback_worker(call): + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название основного блюда🥘') + bot.register_next_step_handler(sent,text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название основного блюда🥘') + bot.register_next_step_handler(sent, video_recipe) + + +@bot.callback_query_handler(func=lambda call: call.data == 'salads') +def callback_worker(call): + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название салата🥗') + bot.register_next_step_handler(sent, text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название салата🥗') + bot.register_next_step_handler(sent, video_recipe) + +@bot.callback_query_handler(func=lambda call: call.data == 'sweets') +def callback_worker(call): + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название дессерта 🍰') + bot.register_next_step_handler(sent,text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название дессерта 🍰') + bot.register_next_step_handler(sent, video_recipe) + + +def text_recipe(message): + + add = check_function.check_is_dish_exist((message.text).upper()) + if bool(add) is False: + result = check_function.if_not_exist_dish() + list(result) + print(result) + bot.send_message(message.from_user.id, result[0]) + for i in range(len(result[1])): + bot.send_message(message.from_user.id, result[1][i]) + + else: + result = check_function.result_of_search((message.text).upper()) + list(result) + print(result) + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + + evaluating(message) + + +def video_recipe(message): + add = check_function.get_video_recipe((message.text).upper()) + if bool(add) is False: + result = check_function.if_not_exist_dish() + list(result) + print(result) + bot.send_message(message.from_user.id, result[0]) + for i in range(len(result[1])): + bot.send_message(message.from_user.id, result[1][i]) + + else: + result = check_function.get_exsist_video_recipe((message.text).upper()) + print(result) + bot.send_message(message.from_user.id, result) + print(message) + evaluating(message) +# +# def choos_dish(message): +# check_function.check_dish_category(message.text) + +def evaluating(message): + keyboard3 = types.InlineKeyboardMarkup() + key_one = types.InlineKeyboardButton(text='1', callback_data='one') + # И добавляем кнопку на экран + keyboard3.add(key_one) + key_two = types.InlineKeyboardButton(text='2', callback_data='two') + keyboard3.add(key_two) + key_three = types.InlineKeyboardButton(text='3', callback_data='three') + keyboard3.add(key_three) + key_four = types.InlineKeyboardButton(text='4', callback_data='four') + keyboard3.add(key_four) + key_five = types.InlineKeyboardButton(text='5', callback_data='five') + keyboard3.add(key_five) + bot.send_message(message.chat.id, "Оцените,пожалуйста,работу бота", reply_markup=keyboard3) + + @bot.callback_query_handler(func=lambda call: call.data == 'one') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(1, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'two') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(2, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'three') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(3, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'four') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(4, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'five') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(5, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + +def continue_working_with_bot(message): + keyboard4 = types.InlineKeyboardMarkup() + key_one = types.InlineKeyboardButton(text='Оставить комментарий', callback_data='write_comment') + # И добавляем кнопку на экран + keyboard4.add(key_one) + key_two = types.InlineKeyboardButton(text='Посмотреть комментарии пользователей', callback_data='see_comments') + keyboard4.add(key_two) + key_three = types.InlineKeyboardButton(text='Посмотреть статистику оценок', callback_data='see_rating') + keyboard4.add(key_three) + bot.send_message(message.chat.id, "Продолжите работу с ботом", reply_markup=keyboard4) + + @bot.callback_query_handler(func=lambda call: call.data == 'write_comment') + def callback_worker(call): + print(message.text) + sent = bot.send_message(call.message.chat.id, 'Введите свой комментарий') + bot.register_next_step_handler(sent,comments) + + + + @bot.callback_query_handler(func=lambda call: call.data == 'see_comments') + def callback_worker(call): + bot.send_message(call.message.chat.id, 'Отзывы другх пользователей') + result = check_function.see_users_comments() + print(result) + for i in range(len(result)): + bot.send_message(message.chat.id, str((list(result[i]))[0])+': '+str((list(result[i]))[1])) + + @bot.callback_query_handler(func=lambda call: call.data == 'see_rating') + def callback_worker(call): + bot.send_message(call.message.chat.id, 'Статистика оценок') + result = check_function.graph() + print(result) + bot.send_message(message.chat.id,result) + + def comments(message): + check_function.add_comments(message.text, str(message.from_user.username)) + print(message.text) + bot.send_message(message.chat.id,'Спасибо, ваш комментарий был успешно добавлен!') + +bot.polling() \ No newline at end of file From cad7913a92cb0713cea1e7d53ef85139e0de19a0 Mon Sep 17 00:00:00 2001 From: Anna Maistrenko Date: Sun, 31 May 2020 22:49:03 +0300 Subject: [PATCH 8/9] Final project telegram bot --- TelegrammBotProject/Procfile | 1 + TelegrammBotProject/categories.json | 19 ++ TelegrammBotProject/check_function.py | 170 +++++++++++ TelegrammBotProject/clients.json | 11 + TelegrammBotProject/database_connection.py | 7 + TelegrammBotProject/db_classes.py | 144 +++++++++ TelegrammBotProject/filling_db.py | 154 ++++++++++ TelegrammBotProject/marks.json | 19 ++ TelegrammBotProject/recipes.json | 95 ++++++ TelegrammBotProject/telegabot.py | 332 +++++++++++++++++++++ 10 files changed, 952 insertions(+) create mode 100644 TelegrammBotProject/Procfile create mode 100644 TelegrammBotProject/categories.json create mode 100644 TelegrammBotProject/check_function.py create mode 100644 TelegrammBotProject/clients.json create mode 100644 TelegrammBotProject/database_connection.py create mode 100644 TelegrammBotProject/db_classes.py create mode 100644 TelegrammBotProject/filling_db.py create mode 100644 TelegrammBotProject/marks.json create mode 100644 TelegrammBotProject/recipes.json create mode 100644 TelegrammBotProject/telegabot.py diff --git a/TelegrammBotProject/Procfile b/TelegrammBotProject/Procfile new file mode 100644 index 0000000..a8b8266 --- /dev/null +++ b/TelegrammBotProject/Procfile @@ -0,0 +1 @@ +bot: python3 telegabot.py \ No newline at end of file diff --git a/TelegrammBotProject/categories.json b/TelegrammBotProject/categories.json new file mode 100644 index 0000000..b21d023 --- /dev/null +++ b/TelegrammBotProject/categories.json @@ -0,0 +1,19 @@ +{"categories":[ + { + "id": "1", + "name": "Первые блюда" +}, +{ + "id": "2", + "name": "Салаты" +}, +{ + "id": "3", + "name": "Основные блюда" +}, +{ + "id": "4", + "name": "Дессерты" +} +] +} \ No newline at end of file diff --git a/TelegrammBotProject/check_function.py b/TelegrammBotProject/check_function.py new file mode 100644 index 0000000..2f7af76 --- /dev/null +++ b/TelegrammBotProject/check_function.py @@ -0,0 +1,170 @@ +from database_connection import engine +from db_classes import Categories, Dishes, Clients, Marks,Base +from sqlalchemy.sql import select, update, join +from sqlalchemy import and_, or_, between, asc, desc,update +from sqlalchemy.orm import sessionmaker +from sqlalchemy.sql import func +import plotly.express as px +import plotly.graph_objects as go + + + +# Base.metadata.create_all(engine) +Session = sessionmaker(bind=engine) +session = Session() + +# функция для добавления нового пользователя +def check_user_exist(username): + + try: + # q = session.query(Clients).filter_by(Clients.id == '1') + + if bool(session.query(Clients.id).filter_by(id = '1').first()) is False: + + row = Clients(id = '1',client_username = username) + session.add(row) + session.commit() + search_query = (session.query(Clients).filter_by(id = '1').one()).client_username + print('Hello,', search_query) + + else: + + if bool(session.query(Clients.client_username).filter_by(client_username = username).first()) is True: + print('User already exist') + + else: + id_value = session.query(Clients.id).count() + row = Clients(id = id_value+1, client_username = username) + session.add(row) + session.commit() + print('We successfully added you to our database') + + except: + print('This user already exsist') + +# функция для проверки значения оценки +def check_mark_value(id,mark,values,id_client,dish_id,text): + if mark > 5: + print('Max value is 5') + else: + row = Marks(id=id, mark_value=values,client_id = id_client,dish_id = dish_id,text_reviw = text) + session.add(row) + session.commit() +# bool(User.query.filter_by(name='John Smith').first()) + +# функция для проверки существования блюда +def check_is_dish_exist(dish_name): + # exsist = session.query(Dishes).filter(Dishes.dish_name == dish_name) + if bool(session.query(Dishes.dish_name).filter_by(dish_name = dish_name).first()) is False: + return False + + else: + return True +# +def if_not_exist_dish(): + + result = session.query(Dishes.dish_name).all() + return 'Такого блюда не существует в нашей базе данных, посмотрите блюда, которые доступны',result + +def result_of_search(dish_name): + + result = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()) + return result.ingridients, result.text_recipe + + # функция для получения видео рецепта +def get_video_recipe(dish_name): + # exsist = session.query(Dishes).filter(Dishes.dish_name == dish_name) + if bool(session.query(Dishes.dish_name).filter_by(dish_name = dish_name).first()) is False: + return False + else: + return True + +def get_exsist_video_recipe(dish_name): + result = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).video_recept + return result +# функция для добавления оценки пользователя +def add_user_mark(mark,client_username,dish_name): + + if bool(session.query(Marks.id).filter_by(id='1').first()) is False: + id_found = (session.query(Clients).filter(Clients.client_username == client_username).first()).id + dish_id = (session.query(Dishes).filter(Dishes.dish_name == dish_name).first()).id + + + row = Marks(id= '1', mark_value = mark, client_id = id_found, dish_id = dish_id,user_name = client_username) + session.add(row) + session.commit() + return 'Вы наш первый пользователь.Мы успешно добавили вашу первую оценку' + + elif bool(session.query(Marks).filter(Marks.user_name == client_username).first()) is True: + session.query(Marks).filter(Marks.user_name == client_username).update({Marks.mark_value: mark},synchronize_session=False) + session.commit() + return 'Мы успешно обновили вашу оценку' + else: + id_found = (session.query(Clients).filter(Clients.client_username == client_username).one()).id + dish_id = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).id + id_value = session.query(Marks.id).count() + row = Marks(id=id_value + 1, mark_value = mark, client_id = id_found, dish_id = dish_id, user_name = client_username) + session.add(row) + session.commit() + return 'Мы успешно добавили вашу оценку' +# функция для проверки принадлежности блюда к категории +def check_dish_category(dish_name): + id_dish = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).id + dish_category = (session.query(Categories).filter(Categories.id == id_dish).one()).category_name + return dish_category +# функция добавления комментария пользователя в бд +def add_comments(message,username): + + session.query(Marks).filter(Marks.user_name == username).update({Marks.text_reviw: message},synchronize_session = False) + session.commit() + return 'Мы успешно добавили ваш комментарий' +# функции для просмотре блюд и коментариев +def see_users_comments(): + return session.query(Marks.user_name,Marks.text_reviw).all() + +def see_all_soups(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 1).all()) + +def see_all_main_dishes(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 3).all()) + +def see_all_salads(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 2).all()) + +def see_all_desserts(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 4).all()) + +# график распределения оценок пользователей +def statistic_of_marks(): + result = [] + for i in range(1,6): + result.append(session.query(Marks).filter(Marks.mark_value== i).count()) + + return result +def avarage_of_mark(): + + result = session.query(func.avg(Marks.mark_value).label('average')).all() + # + # sum_of_marks = session.query(Marks.mark_value).all() + return round((result[0][0]),1) + # num_of_marks = len(sum_of_marks) + # result = sum(sum_of_marks)/num_of_marks + # print(result) + + + + + + + + + + + + + + + + + + diff --git a/TelegrammBotProject/clients.json b/TelegrammBotProject/clients.json new file mode 100644 index 0000000..e79d902 --- /dev/null +++ b/TelegrammBotProject/clients.json @@ -0,0 +1,11 @@ +{"clients":[ + { + "id": "2", + "name": "dima" +}, +{ + "id": "3", + "name": "olya" +} +] +} \ No newline at end of file diff --git a/TelegrammBotProject/database_connection.py b/TelegrammBotProject/database_connection.py new file mode 100644 index 0000000..75bd0a8 --- /dev/null +++ b/TelegrammBotProject/database_connection.py @@ -0,0 +1,7 @@ +from sqlalchemy.engine import create_engine + +# для создания таблиц Вам неободимо прописать путь к своей базе данніх oracle +DATABASE_URI = 'postgres+psycopg2://postgres:msn1973msn@localhost:5432/bot' + +engine = create_engine(DATABASE_URI) + diff --git a/TelegrammBotProject/db_classes.py b/TelegrammBotProject/db_classes.py new file mode 100644 index 0000000..d8ab9cf --- /dev/null +++ b/TelegrammBotProject/db_classes.py @@ -0,0 +1,144 @@ +from sqlalchemy import Column, Integer, String, ForeignKey,Text +from sqlalchemy.ext.declarative import declarative_base +from database_connection import engine +import json + +Base = declarative_base() + +from sqlalchemy.orm import relationship, sessionmaker +# создание таблиц +class Categories(Base): + + __tablename__ = 'dish_categories' + + id = Column(Integer, primary_key=True) + category_name = Column(Text) + + styles = relationship('Dishes', backref='dish_categories', lazy=True) + +class Dishes(Base): + + __tablename__ = 'dishes' + + id = Column(Integer, primary_key=True) + dish_name = Column(Text) + id_category = Column(Integer, ForeignKey("dish_categories.id")) + text_recipe = Column(Text) + video_recept = Column(Text) + ingridients = Column(Text) + + +class Clients(Base): + + __tablename__ = 'clients' + + id = Column(Integer, primary_key=True) + client_username = Column(Text) + +class Marks(Base): + + __tablename__ = 'marks' + + id = Column(Integer, primary_key=True) + mark_value = Column(Integer) + client_id = Column(Integer, ForeignKey("clients.id")) + dish_id = Column(Integer, ForeignKey("dishes.id")) + text_reviw = Column(Text) + user_name = Column(Text) + + styles = relationship('Clients', backref='marks', lazy=True) + styles_1 = relationship('Dishes', backref='marks', lazy=True) + +Base.metadata.create_all(engine) + +# добавления данных в бд +# Session = sessionmaker(bind = engine) +# session = Session() +# считывание данных с файла, на другом компьютере прийдеся вставить другой путь к файлам + +# categories = open("C:/Pyprojects/venv/categories.json",encoding="utf-8") +# data_categories = json.load(categories) +# dishes = open("C:/Pyprojects/venv/recipes.json",encoding="utf8") +# data_dishes = json.load(dishes) +# marks = open("C:/Pyprojects/venv/marks.json",encoding="utf8") +# data_marks = json.load(marks) +# clients = open("C:/Pyprojects/venv/clients.json",encoding="utf8") +# data_clients = json.load(clients) + +# добавление категорий блюд +# session.add_all([ +# Categories(id = data_categories['categories'][0]['id'], category_name = data_categories['categories'][0]['name']), +# Categories(id = data_categories['categories'][1]['id'], category_name = data_categories['categories'][1]['name']), +# Categories(id = data_categories['categories'][2]['id'], category_name = data_categories['categories'][2]['name']), +# Categories(id = data_categories['categories'][3]['id'], category_name = data_categories['categories'][3]['name'])] +# ) +# session.commit() +# +# # добавление рецептов и названий блюд +# session.add_all([ +# Dishes(id = data_dishes['dish'][0]['id'], +# dish_name = data_dishes['dish'][0]['name'], +# id_category=data_dishes['dish'][0]['id_category'], +# text_recipe = data_dishes['dish'][0]['text_recipe'], +# video_recept=data_dishes['dish'][0]['video_recipe'], +# ingridients=data_dishes['dish'][0]['ingridients']), +# Dishes(id = data_dishes['dish'][1]['id'], +# dish_name = data_dishes['dish'][1]['name'], +# id_category=data_dishes['dish'][1]['id_category'], +# text_recipe = data_dishes['dish'][1]['text_recipe'], +# video_recept=data_dishes['dish'][1]['video_recipe'], +# ingridients=data_dishes['dish'][1]['ingridients']), +# Dishes(id = data_dishes['dish'][2]['id'], +# dish_name = data_dishes['dish'][2]['name'], +# id_category=data_dishes['dish'][2]['id_category'], +# text_recipe = data_dishes['dish'][2]['text_recipe'], +# video_recept=data_dishes['dish'][2]['video_recipe'], +# ingridients=data_dishes['dish'][2]['ingridients']), +# Dishes(id = data_dishes['dish'][3]['id'], +# dish_name = data_dishes['dish'][3]['name'], +# id_category=data_dishes['dish'][3]['id_category'], +# text_recipe = data_dishes['dish'][3]['text_recipe'], +# video_recept=data_dishes['dish'][3]['video_recipe'], +# ingridients=data_dishes['dish'][3]['ingridients']), +# Dishes(id = data_dishes['dish'][4]['id'], +# dish_name = data_dishes['dish'][4]['name'], +# id_category=data_dishes['dish'][4]['id_category'], +# text_recipe = data_dishes['dish'][4]['text_recipe'], +# video_recept=data_dishes['dish'][4]['video_recipe'], +# ingridients=data_dishes['dish'][4]['ingridients']), +# Dishes(id = data_dishes['dish'][5]['id'], +# dish_name = data_dishes['dish'][5]['name'], +# id_category=data_dishes['dish'][5]['id_category'], +# text_recipe = data_dishes['dish'][5]['text_recipe'], +# video_recept=data_dishes['dish'][5]['video_recipe'], +# ingridients=data_dishes['dish'][5]['ingridients']), +# Dishes(id = data_dishes['dish'][6]['id'], +# dish_name = data_dishes['dish'][6]['name'], +# id_category=data_dishes['dish'][6]['id_category'], +# text_recipe = data_dishes['dish'][6]['text_recipe'], +# video_recept=data_dishes['dish'][6]['video_recipe'], +# ingridients=data_dishes['dish'][6]['ingridients']), +# Dishes(id = data_dishes['dish'][7]['id'], +# dish_name = data_dishes['dish'][7]['name'], +# id_category=data_dishes['dish'][7]['id_category'], +# text_recipe = data_dishes['dish'][7]['text_recipe'], +# video_recept=data_dishes['dish'][7]['video_recipe'], +# ingridients=data_dishes['dish'][7]['ingridients']), +# Dishes(id = data_dishes['dish'][8]['id'], +# dish_name = data_dishes['dish'][8]['name'], +# id_category=data_dishes['dish'][8]['id_category'], +# text_recipe = data_dishes['dish'][8]['text_recipe'], +# video_recept=data_dishes['dish'][8]['video_recipe'], +# ingridients=data_dishes['dish'][8]['ingridients']), +# ] +# ) +# session.commit() +# +# session.add_all([ +# Categories(id = data_categories['categories'][0]['id'], category_name = data_categories['categories'][0]['name']), +# Categories(id = data_categories['categories'][1]['id'], category_name = data_categories['categories'][1]['name']), +# Categories(id = data_categories['categories'][2]['id'], category_name = data_categories['categories'][2]['name']), +# Categories(id = data_categories['categories'][3]['id'], category_name = data_categories['categories'][3]['name'])] +# ) +# session.commit() + diff --git a/TelegrammBotProject/filling_db.py b/TelegrammBotProject/filling_db.py new file mode 100644 index 0000000..c2e5b6a --- /dev/null +++ b/TelegrammBotProject/filling_db.py @@ -0,0 +1,154 @@ +from sqlalchemy import Column, Integer, String, ForeignKey +from sqlalchemy.ext.declarative import declarative_base +from database_connection import engine +import db_classes +import json +from sqlalchemy.orm import relationship, sessionmaker +# +Session = sessionmaker(bind = engine) +session = Session() +# считывание данных с файла, на другом компьютере прийдеся вставить другой путь к файлам + +categories = open("categories.json",encoding="utf-8") +data_categories = json.load(categories) +dishes = open("recipes.json",encoding="utf8") +data_dishes = json.load(dishes) +marks = open("marks.json",encoding="utf8") +data_marks = json.load(marks) +clients = open("clients.json",encoding="utf8") +data_clients = json.load(clients) + +# # добавление категорий блюд +# session.add_all([ +# db_classes.Clients(id = data_clients['clients'][0]['id'], client_username = data_clients['clients'][0]['name']), +# db_classes.Clients(id = data_clients['clients'][1]['id'], client_username = data_clients['clients'][1]['name'])] +# ) +# session.commit() +# +# session.add_all([ +# db_classes.Dishes(id = data_dishes['dish'][0]['id'], +# dish_name = data_dishes['dish'][0]['name'], +# id_category=data_dishes['dish'][0]['id_category'], +# text_recipe = data_dishes['dish'][0]['text_recipe'], +# video_recept=data_dishes['dish'][0]['video_recipe'], +# ingridients=data_dishes['dish'][0]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][1]['id'], +# dish_name = data_dishes['dish'][1]['name'], +# id_category=data_dishes['dish'][1]['id_category'], +# text_recipe = data_dishes['dish'][1]['text_recipe'], +# video_recept=data_dishes['dish'][1]['video_recipe'], +# ingridients=data_dishes['dish'][1]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][2]['id'], +# dish_name = data_dishes['dish'][2]['name'], +# id_category=data_dishes['dish'][2]['id_category'], +# text_recipe = data_dishes['dish'][2]['text_recipe'], +# video_recept=data_dishes['dish'][2]['video_recipe'], +# ingridients=data_dishes['dish'][2]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][3]['id'], +# dish_name = data_dishes['dish'][3]['name'], +# id_category=data_dishes['dish'][3]['id_category'], +# text_recipe = data_dishes['dish'][3]['text_recipe'], +# video_recept=data_dishes['dish'][3]['video_recipe'], +# ingridients=data_dishes['dish'][3]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][4]['id'], +# dish_name = data_dishes['dish'][4]['name'], +# id_category=data_dishes['dish'][4]['id_category'], +# text_recipe = data_dishes['dish'][4]['text_recipe'], +# video_recept=data_dishes['dish'][4]['video_recipe'], +# ingridients=data_dishes['dish'][4]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][5]['id'], +# dish_name = data_dishes['dish'][5]['name'], +# id_category=data_dishes['dish'][5]['id_category'], +# text_recipe = data_dishes['dish'][5]['text_recipe'], +# video_recept=data_dishes['dish'][5]['video_recipe'], +# ingridients=data_dishes['dish'][5]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][6]['id'], +# dish_name = data_dishes['dish'][6]['name'], +# id_category=data_dishes['dish'][6]['id_category'], +# text_recipe = data_dishes['dish'][6]['text_recipe'], +# video_recept=data_dishes['dish'][6]['video_recipe'], +# ingridients=data_dishes['dish'][6]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][7]['id'], +# dish_name = data_dishes['dish'][7]['name'], +# id_category=data_dishes['dish'][7]['id_category'], +# text_recipe = data_dishes['dish'][7]['text_recipe'], +# video_recept=data_dishes['dish'][7]['video_recipe'], +# ingridients=data_dishes['dish'][8]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][8]['id'], +# dish_name = data_dishes['dish'][8]['name'], +# id_category=data_dishes['dish'][8]['id_category'], +# text_recipe = data_dishes['dish'][8]['text_recipe'], +# video_recept=data_dishes['dish'][8]['video_recipe'], +# ingridients=data_dishes['dish'][8]['ingridients']), +# ] +# ) +# session.commit() +# +# session.add_all([ +# db_classes.Marks(id = data_marks['marks'][0]['id'], mark_value = data_marks['marks'][0]['value'], client_id = data_marks['marks'][0]['id_client'], dish_id = data_marks['marks'][0]['id_dish'], text_reviw = data_marks['marks'][0]['text_reviw'],user_name = data_marks['marks'][0]['name']), +# db_classes.Marks(id = data_marks['marks'][1]['id'], mark_value = data_marks['marks'][1]['value'], client_id = data_marks['marks'][1]['id_client'], dish_id = data_marks['marks'][1]['id_dish'], text_reviw = data_marks['marks'][1]['text_reviw'],user_name = data_marks['marks'][1]['name'])] +# ) +# session.commit() + +# добавление рецептов и названий блюд +# session.add_all([ +# db_classes.Dishes(id = data_dishes['dish'][0]['id'], +# dish_name = data_dishes['dish'][0]['name'], +# id_category=data_dishes['dish'][0]['id_category'], +# text_recipe = data_dishes['dish'][0]['text_recipe'], +# video_recept=data_dishes['dish'][0]['video_recipe'], +# ingridients=data_dishes['dish'][0]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][1]['id'], +# dish_name = data_dishes['dish'][1]['name'], +# id_category=data_dishes['dish'][1]['id_category'], +# text_recipe = data_dishes['dish'][1]['text_recipe'], +# video_recept=data_dishes['dish'][1]['video_recipe'], +# ingridients=data_dishes['dish'][1]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][2]['id'], +# dish_name = data_dishes['dish'][2]['name'], +# id_category=data_dishes['dish'][2]['id_category'], +# text_recipe = data_dishes['dish'][2]['text_recipe'], +# video_recept=data_dishes['dish'][2]['video_recipe'], +# ingridients=data_dishes['dish'][2]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][3]['id'], +# dish_name = data_dishes['dish'][3]['name'], +# id_category=data_dishes['dish'][3]['id_category'], +# text_recipe = data_dishes['dish'][3]['text_recipe'], +# video_recept=data_dishes['dish'][3]['video_recipe'], +# ingridients=data_dishes['dish'][3]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][4]['id'], +# dish_name = data_dishes['dish'][4]['name'], +# id_category=data_dishes['dish'][4]['id_category'], +# text_recipe = data_dishes['dish'][4]['text_recipe'], +# video_recept=data_dishes['dish'][4]['video_recipe'], +# ingridients=data_dishes['dish'][4]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][5]['id'], +# dish_name = data_dishes['dish'][5]['name'], +# id_category=data_dishes['dish'][5]['id_category'], +# text_recipe = data_dishes['dish'][5]['text_recipe'], +# video_recept=data_dishes['dish'][5]['video_recipe'], +# ingridients=data_dishes['dish'][5]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][6]['id'], +# dish_name = data_dishes['dish'][6]['name'], +# id_category=data_dishes['dish'][6]['id_category'], +# text_recipe = data_dishes['dish'][6]['text_recipe'], +# video_recept=data_dishes['dish'][6]['video_recipe'], +# ingridients=data_dishes['dish'][6]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][9]['id'], +# dish_name = data_dishes['dish'][9]['name'], +# id_category=data_dishes['dish'][9]['id_category'], +# text_recipe = data_dishes['dish'][9]['text_recipe'], +# video_recept=data_dishes['dish'][9]['video_recipe'], +# ingridients=data_dishes['dish'][9]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][10]['id'], +# dish_name = data_dishes['dish'][10]['name'], +# id_category=data_dishes['dish'][10]['id_category'], +# text_recipe = data_dishes['dish'][10]['text_recipe'], +# video_recept=data_dishes['dish'][10]['video_recipe'], +# ingridients=data_dishes['dish'][10]['ingridients']), +# ] +# ) + + + + diff --git a/TelegrammBotProject/marks.json b/TelegrammBotProject/marks.json new file mode 100644 index 0000000..58cf64b --- /dev/null +++ b/TelegrammBotProject/marks.json @@ -0,0 +1,19 @@ +{"marks":[ + { + "id": "2", + "value": "4", + "id_client": "2", + "id_dish": "2", + "text_reviw": "Очень удобный в использовании!", + "name":"dima" +}, +{ + "id": "3", + "value": "2", + "id_client": "3", + "id_dish": "3", + "text_reviw": "Очень классній бот, первый помощник на кухне!", + "name":"olya" +} +] +} \ No newline at end of file diff --git a/TelegrammBotProject/recipes.json b/TelegrammBotProject/recipes.json new file mode 100644 index 0000000..514d2bd --- /dev/null +++ b/TelegrammBotProject/recipes.json @@ -0,0 +1,95 @@ +{"dish":[ + { + "id": "1", + "name": "БОРЩ", + "id_category":"1", + "text_recipe":"Мясо вымойте, положите в кастрюлю и залейте холодной водой. Дождитесь, пока закипит, и варите ещё 20 минут. После закипания с помощью шумовки снимите лишнюю пену.Свёклу очистите от кожуры, натрите на крупной тёрке и обжарьте на растительном масле. Влейте немного мясного бульона и оставьте тушиться на медленном огне.Мелко нашинкуйте лук и обжарьте на масле до золотистого цвета. Добавьте морковь, влейте ещё немного бульона и тушите в течение 3—5 минут.Очистите картофель, нарежьте кубиками, добавьте к бульону и дайте закипеть.Затем добавьте мелко нашинкованную свежую капусту. Варите до готовности.Посолите и поперчите по вкусу.В конце добавьте тушёную свёклу, зелень и лавровый лист. Накройте кастрюлю крышкой и варите в течение 3—5 минут, после чего снимите с огня.При подаче заправьте борщ сметаной.", + "video_recipe":"https://www.youtube.com/watch?v=_-9nH4zFThs", + "ingridients": "Говядина (на кости)300—400 г,Капуста (свежая)1,5 кг,Картофель3—4 шт.,Морковь1—2 шт.,Лук (репчатый)1 шт.,Свёкла1 шт.,Сметана100 мл,Масло (растительное)2 ст. л.,Лавровый лист2 листа,Вода1,5—2 л,Зелень (укроп или петрушка)по вкусу,Перец (чёрный молотый)по вкусу,Сольпо вкусу')" +}, +{ + "id": "2", + "name": "ОЛИВЬЕ", + "id_category":"2", + "text_recipe":"Картофель и морковь сварить «в мундирах». Сварить яйца. 2. Тем временем колбасу и огурцы нарезать мелкими кубиками. 3. Готовые овощи и яйца почистить и также нарезать кубиками. 4. Мелко нарезать лук. 5. Все ингредиенты смешать, добавить горошек и заправить майонезом. 6. Украсить зеленью.", + "video_recipe":"https://www.youtube.com/watch?v=z8KpTK5oGBQ", + "ingridients": "картофель - 4-5 штук,морковь - 2 крупные или 3 средние ,консервированный горошек – 1 банка ,колбаса «Докторская» - 300-400 г,соленые или маринованные огурцы – 4-5 штук,яйца – 6 штук,лук – 1 штука,зелень,майонез." +}, +{ + "id": "3", + "name": "РИЗОТТО", + "id_category":"3", + "text_recipe":"Разогрейте сливочное масло в казанке на среднем огне. Добавьте грибы и готовьте, помешивая, 5-10 минут (пока грибы не подрумянятся). Добавьте нарезанную курицу, 1 ч. л. соли, перец и готовьте, помешивая, около 10 минут. Переложите грибы с курицей в другую посуду. В кастрюле доведите до кипения бульон.2. В казанке разогрейте растительное масло. Добавьте лук и обжарьте его на умеренном огне, помешивая, в течение 5 минут. Добавьте рис. Готовьте, помешивая, около 2 минут.3. Влейте в казанок с рисом вино, добавьте 1 ч. л. соли. Готовьте, часто помешивая, до тех пор, пока жидкость не впитается. Добавьте пол стакана кипящего бульона и помешивайте, пока не впитается. Рис должен слегка кипеть (уменьшите огонь, если нужно). Продолжайте готовить рис, подливая по пол стакана бульона и перемешивая (всего – около 25-30 минут). Жидкость, которая не впитается, станет вязкой благодаря высокому содержанию крахмала в рисе. Бульон может весь не понадобиться, а может, придется добавить немного бульона или воды дополнительно.4. Вмешайте курицу с грибами, сыр и петрушку. Прогрейте ризотто с курицей и подавайте блюдо. Приятного аппетита!", + "video_recipe":"https://www.youtube.com/watch?v=5__wUabM0y8", + "ingridients": "Масло сливочное – 2 ст. л,Грибы, тонко нарезанные – 220 г,Куриные грудки, филе, нарезанное кусочками по 1 см – 300 г,Соль – 1 ч. л.,Перец черный молотый – 1 ч. л.,Бульон куриный – 5 стакан,Масло растительное – 1 ст. л.,Лук репчатый, нарезанный – пол стакана,Рис Арборио – 1 стакан,Вино сухое белое – пол стакана,Сыр Пармезан тертый – пол стакана,Зелень петрушки нарезанная – 2 ст. л." +}, +{ + "id": "4", + "name": "ТИРАМИСУ", + "id_category":"4", + "text_recipe":"Отделить белки от желтков. Желтки растереть с сахаром.Добавить маскарпоне.Перемешать.Белки взбить в крепкую пену.Добавить белки в желтково-сырную массу.Аккуратно перемешать.Палочки окунуть в холодный кофе.Палочки надо окунать очень быстрым движением, чтобы они не размокли.Кофе приготовьте так, как вам нравится (я на 350 мл добавила 4 ч.л. кофе).По желанию, в кофе можно добавить вино, ром, ликер, бренди, или коньяк.В форму (я использовала форму размером 17 на 25 см) плотно выложить палочки, смоченные в кофе.На палочки выложить половину крема.Разровнять.На крем снова выложить палочки, смоченные в кофе.На палочки выложить оставшийся крем.Разровнять.Поставить в холодильник на 5–6 часов.Посыпать через сито какао.Разрезать на порции.Разрезать надо очень аккуратно, так как десерт очень нежный.", + "video_recipe":"https://www.youtube.com/watch?v=kSlmBQLa0B8", + "ingridients": "4 яйца (я использовала 18 перепелиных яиц),100 г сахара,500 г маскарпоне,250 г печенья «Савоярди» (примерно 34 штуки),350 мл кофе (растворимого или сваренного),порошок какао,2–3 ст.л. вина «Марсала» (или любого другого), или рома, ликера, бренди, коньяка — по желанию" +}, +{ + "id": "5", + "name": "СОЛЯНКА", + "id_category":"1", + "text_recipe":"1. Налить бульон в емкость МВ (у меня куриный, можно сварить мясо на режиме Суп.Включить мультиварку, установить режим выпечка или экспресс.\n2.Обжарить лук, добавить томат. Перемешать и прожарить все это, еще 5 - 7 минут.\n3.Затем добавить огурцы, порезанные кубиками.\n4.Пока все в мультиварке тушится, готовим мясное ассорти. У меня - мясо отварное, колбаса вареная, колбаса копченая и кусочек копченой курицы. Режем все соломкой или кубиками.Закладываем в чашу мясное ассорти.Заливаем процеженным бульоном. Можно еще влить 1 стакан рассола от огурцов .\n5.Добавить картофель, порезанный мелкими кубиками.Добавить специи по вкусу, лавровый лист, зелень.\n6.Включить режем тушение или суп 1 час.И ждать сигнала)) Аромат на кухне будет неописуемый)).\n7.Подается солянка к столу, со сметаной, маслинами, долькой лимона и мелко нарезанной зеленью.Приятного аппетита!!!.", + "video_recipe":"https://www.youtube.com/watch?v=wXiK9Qoce8A", + "ingridients": "350 г свинины;\n2 луковицы;\n250 г копчёной колбасы;\n250 г ветчинной колбасы;\n4 солёных огурца;\n2 столовые ложки растительного масла;\n2 столовые ложки томатной пасты;\n100 г оливок;\n2 сосиски;\n100–120 мл огуречного рассола;\nсоль — по вкусу;\nзелень, сметана, лимон — для подачи." +}, +{ + "id": "6", + "name": "СВЕКОЛЬНИК", + "id_category":"1", + "text_recipe":"1. Подготовить продукты для приготовления горячего свекольника.\n2.Морковь очистить, вымыть, тонко нашинковать.Свеклу очистить, вымыть, нарезать соломкой.Лук очистить, вымыть, мелко нарезать.Картофель очистить, вымыть, нарезать дольками..\n3.Вскипятить воду (1-1,5 л)\n4.В кипящую воду положить 1 морковь, лук, картофель.Добавить нарезанные со­ломкой полторы свеклы. Накрыть крышкой и варить при слабом кипении.\n5.На сковороде растопить сливочное масло.Оставшиеся 0,5 свеклы, морковь выложить в растопленное масло, перемешать. Спассеровать на сливочном масле, помешивая. Жарить коренья нужно на среднем огне 5-7 минут.\n6.Помидоры ошпарить кипятком, снять шкурку.Помидоры мелко нарезать..\n7.Добавить помидо­ры к кореньям, перемешать, тушить еще 5-7 минут (помидоры должны полностью размягчиться).Высыпать в кастрюлю с кипящими овощами.\n8.Заправить по вкусу солью. Накрыть крышкой, варить еще 5 минут. Затем свекольник выключить.Можно откорректировать вкус, дополнительно заправив свекольник сахаром и лимонной кислотой.Горячий свекольник готов.\n9.При подаче горячий свекольник заправить зеленью и сметаной.", + "video_recipe":"https://www.youtube.com/watch?v=admLVc8ezXw", + "ingridients": "Свекла - 250-350 г (2 шт.)\nМорковь - 150-200 г (1-2 шт.)\nКартофель - 200 г (2 шт.)\nПомидоры - 400 г (4-5 шт.)\nЛук - 70-90 г (1 шт.)\nСоль 1,5 ч. ложки\nСметана - 100-200 г\nЗелень - 0,5 пучка\nЛимонная кислота (по желанию) - щепотку\nСахар (по желанию) - 0,25 ч. ложки" +}, +{ + "id": "7", + "name": "ВИНИГРЕТ", + "id_category":"2", + "text_recipe":"1. Свеклу отварить до готовности.\n2.Картофель и морковь отварить до готовности.\n3.Лук мелко нарезать.\n4.Огурцы нарезать кубиками.\n5.Если капуста сильно соленая, ее промыть.Мелко нашинковать.\n6.Морковь нарезать кубиками.Свеклу нарезать кубиками.Картофель нарезать кубиками.\n7.Смешать картофель, морковь, огурцы, лук, капусту, свеклу.Немного посолить\n8.Заправить растительным маслом.", + "video_recipe":"https://www.youtube.com/watch?v=RZtWdZ8q6RM", + "ingridients": "400 г свеклы\n300 г моркови\n400 г картофеля\n200 г квашеной капусты\n200 г маринованных или соленых огурцов\n150 г лука\nсоль\nрастительное масло" +}, +{ + "id": "8", + "name": "ЦЕЗАРЬ", + "id_category":"2", + "text_recipe":"1.С хлеба срежьте корочку, а сам хлеб порежьте кубиками.\n2. Чеснок пропустите через чесночницу и обжарьте его пару минут в разогретом оливковом масле.\n3. Куриное филе порежьте небольшими кусочками и отправляйте к чесноку на сковороду.\n4. Обжарьте курицу, помешивая, 10 минут, в конце посолите и поперчите по вкусу.\n5. Уберите с огня курицу, а в ту же сковороду добавьте еще немного масла и обжарьте хлеб, постоянно помешивая, пока он не зарумянится.\n6. Приготовьте соус для салата «Цезарь» . Для этого пармезан натрите на мелкой терке. Смешайте яичный желток, оливковое масло, горчицу, лимонный сок, тертый пармезан и хорошенько все взбейте.\n7. Листья салата порвите средними кусками. Помидоры черри порежьте на половинки.\n8. Выложите на салат обжаренное куриное филе, добавьте помидоры, полейте соусом, сверху потрите пармезаном.\n9. Непосредственно перед подачей добавьте в салат «Цезарь» хлебные сухарики. Приятного аппетита!", + "video_recipe":"https://www.youtube.com/watch?v=onq7Sd8c2To", + "ingridients": "300 г курицы (филе)\n100 г пармезана\n100 г белого хлеба, 200 г листьев салата\n100 г помидоров черри\n1 зубок чеснока\n1 ст. ложка оливкового масла\nчерный молотый перец по вкусу\nсоль по вкусу.\nСоус для салата «Цезарь» включает ингредиенты:\n1 яичный желток\n1 ч. ложка горчицы\n2 ст. ложки оливкового масла\n1 ч. ложка лимонного сока\n50 г пармезана\nчерный молотый перец по вкусу\nсоль по вкусу." + +}, +{ + "id": "9", + "name": "ГОЛУБЦЫ", + "id_category":"3", + "text_recipe":"1.Подготовим капустные листья для голубцов, снимим листья с капусты.\n2.Измельчим лук и морковь.\n3.Поджарим овощи на растительном масле до готовности и разделим на две части. Одну часть используем для начинки. Во вторую часть добавим соль (1 ст. л.), сахар (1 ст. л.), молотый перец и томатный соус или кетчуп.\n4.Смешаем сваренный заранее рис, фарш и овощную зажарку. Начинку для голубцов посолим, поперчим и перемешаем.\n5.Закрутим голубцы с мясом и рисом.\n6.Голубцы выложим в кастрюлю и зальем томатной подливой.\n7.Готовим голубцы на небольшом огне примерно 1 час.", + "video_recipe":"https://www.youtube.com/watch?v=Pva-0xZ2Ips", + "ingridients": "Капуста белокочанная - 1 шт.\nРис - 1 стакан\nФарш мясной - 500 г\nМорковь - 1 шт.\nЛук репчатый - 4-5 шт.\nКетчуп или томатный соус - 3 ст.л.\nМасло растительное - для жарки\nПерец молотый (красный и черный)\nСахар\nСоль" + +}, +{ + "id": "11", + "name": "БРАУНИ", + "id_category":"4", + "text_recipe":"1.Включить духовку для предварительного разогрева на 180 градусов. Противень размером 25х35 см застелить фольгой и слегка сбрызнуть растительным маслом.\n2.В большой миске смешать масло, белый, ванильный и коричневый сахар и кофейный напиток. Миксером на средней скорости перемешать до пышного, однородного состояния. Затем по одному добавлять яйца, хорошо перемешивая после каждого.\n3. В большой миске соединить муку, какао-порошок, разрыхлитель, соду и соль. Эту массу постепенно всыпать в масляную смесь, при этом перемешивая миксером на средней скорости. В эту массу добавить шоколад и пекан. Хорошо перемешать и выложить эту массу в подготовленную форму.\n4.Поставить в разогретую духовку и выпекать около 30-35 минут. Перед подачей дать готовому изделию полностью остыть.", + "video_recipe":"https://www.youtube.com/watch?v=MhbZmcGSvcg", + "ingridients": "Масло сливочное (размягченное) - 300 г\nСахар коричневый - 1 3/4 стакана\nСахар белый - 1 стакан\nКофе растворимый - 1/2 стакана\nЯйца - 4 шт.\nВанильный сахар - 1 ст. л.\nМука пшеничная - 1 1/2 стакана\nКакао-порошок - 1 стакан\nРазрыхлитель - 1/2 ч. л.\nСода пищевая - 1/2 ч. л.\nСоль - 1/4 ч. л.\nЧипсы черного шоколада или шоколад, разломанный на кусочки - 1 стакан\nОрех пекан жареный - 1 стакан\nМолочный шоколад (разломанный на кусочки) - 30 г" + +}, +{ + "id": "12", + "name": "ЧИЗКЕЙК", + "id_category":"4", + "text_recipe":"1.Измельчите печенье до состояния крошки. Сливочное масло растопите на водяной бане.Перемешайте печенье с 1 ст. ложкой сахара, добавьте масло, тщательно перемешайте.\n2.Форму для запекания (диаметр моей формы - 22 см) застелите пергаментной бумагой. Из полученной массы сделайте основу для чизкейка в форме для запекания и поместите ее в духовку, разогретую до 170 градусов, на 10 минут.\n3.Пока корж находится в духовке, займитесь приготовлением сырной начинки. Для этого взбейте яйца с 4-мя столовыми ложками сахара, добавьте жирные сливки, ванилин и цедру половины лимона.\n4.В полученную массу добавьте сливочный сыр и снова все хорошо взбейте венчиком до получения однородной консистенции.\n5.Полученную сырную массу (довольно жидкую) вылейте на готовую основу и поместите в духовку. Внимание! Чизкейк должен готовиться в духовке на водяной бане при температуре не более 150 градусов в течение 70-80 минут.\n6.Готовый чизкейк уберите в холодильник на несколько часов, а лучше на ночь. Перед подачей украсьте чизкейк (например, сахарной пудрой и свежей клубникой) и достаньте из формы.", + "video_recipe":"https://www.youtube.com/watch?v=-UVzp2uF5Es", + "ingridients": "Печенье (любое рассыпчатое) - 300 г\nСыр сливочный (рикотта; в идеале - филадельфия) - 500 г\nСливки 35% - 200 г\nЯйца куриные - 4 шт.\nМасло сливочное - 100 г\nСахар - 5 ст. л.\nЛимон (для цедры) - 0,5-1 шт.\nВанилин - 1 пакетик (по вкусу)\nДля украшения (по желанию):\nСахарная пудра\nЯгоды свежие (клубника)" + +} +] +} diff --git a/TelegrammBotProject/telegabot.py b/TelegrammBotProject/telegabot.py new file mode 100644 index 0000000..8d5e91c --- /dev/null +++ b/TelegrammBotProject/telegabot.py @@ -0,0 +1,332 @@ +import telebot +from telebot import types + +import check_function + +API_TOKEN = '1240952041:AAGgpZ6C_-Ttga9fFgFKgdFImeV6GLcjd1s' + +bot = telebot.TeleBot(API_TOKEN,threaded=False) +@bot.message_handler(commands=['start']) + +def handle_text(message): + keyboard1 = telebot.types.ReplyKeyboardMarkup() + keyboard1.row('Поиск рецепта🥮') + keyboard1.row('Правила использования📄') + keyboard1.row('Помощь❓') + + bot.send_message(message.chat.id, + 'Готовить стало ещё проще!\n' + 'Добро пожаловать,' + str(message.from_user.username) + '\nЭтот бот предоставит вам возможность \nне только найти новые рецепты, но\nтакже сохранить их в кулинарную книгу\n Выберите одну из категорий ниже ', + reply_markup=keyboard1) + + result = check_function.check_user_exist(str(message.from_user.username)) + print(result) + +# +@bot.message_handler(commands=['help']) + +def handle_text(message): + bot.send_message(message.from_user.id, + 'Вы используете бот для поиска рецептов\n''Ниже представленны команды, которые существуют в боте:\n''/start - начало работы с ботом\n''/help - основные команды бота\n''/first_dishes - список доступных супов\n''/salads - список доступных салатов\n''/main_dishes - список доступных основніх блюд,\n''/desserts - список доступных дессертов,\n''/statistic - посмотреть статистику оценок,\n''/add_comment - добавить комментарий,\n''/see_comments - посмотреть комментарии других пользователей') + + +@bot.message_handler(commands=['first_dishes']) +def handle_text(message): + result = check_function.see_all_soups() + print(result) + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['salads']) +def handle_text(message): + result = check_function.see_all_salads() + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['main_dishes']) +def handle_text(message): + result = check_function.see_all_main_dishes() + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['desserts']) +def handle_text(message): + result = check_function.see_all_desserts() + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['statistic']) +def handle_text(message): + + result = check_function.statistic_of_marks() + print(type(result)) + bot.send_message(message.from_user.id,'Количество ценок "1" - '+ str(result[0])+'.') + bot.send_message(message.from_user.id, 'Количество ценок "2" - ' + str(result[1]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "3" - ' + str(result[2]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "4" - ' + str(result[3]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "5" - ' + str(result[4]) + '.') + + average = check_function.avarage_of_mark() + bot.send_message(message.from_user.id, 'Средняя оценка - ' + str(average) + '.') + +@bot.message_handler(commands=['add_comment']) +def handle_text(message): + sent = bot.send_message(message.chat.id, 'Введите свой комментарий') + bot.register_next_step_handler(sent, comments) + +@bot.message_handler(commands=['see_comments']) +def handle_text(message): + bot.send_message(message.chat.id, 'Комментарии других пользователей: ') + result = check_function.see_users_comments() + print(result) + for i in range(len(result)): + bot.send_message(message.chat.id, str((list(result[i]))[0]) + ': ' + str((list(result[i]))[1])) + +def comments(message): + check_function.add_comments(message.text, str(message.from_user.username)) + print(message.text) + bot.send_message(message.chat.id,'Спасибо, ваш комментарий был успешно добавлен!') + +@bot.message_handler(content_types=['text']) +def handle_text(message): + + if message.text == 'Правила использования📄': + bot.send_message(message.from_user.id, + '1. Для начала работы с ботом, необходимо ввести команду /start\n''2.Для поиска рецепта нажмите клавишу "поиск рецепта"\n''3.Выберите категорию, к которой относится блюдо, которое вы хотите найти,ВАЖНО,бот сможет найти блюдо в заданой категории, только, если оно относится к этой категории\n''4.Вы можете просмотреть видео рецепт блюда или просто прочиатть его,подтвердив свой выбор нажатием на соответствующюю клавишу\n''5.После окончания работы с ботом, вы можете поставить ем оценку и оставить комментарий.') + elif message.text == 'Помощь❓': + + bot.send_message(message.from_user.id, + 'Вы используете бот для поиска рецептов\n''Ниже представленны команды, которые существуют в боте:\n''/start - начало работы с ботом\n''/help - основные команды бота\n''/first_dishes - список доступных супов\n''/salads - список доступных салатов\n''/main_dishes - список доступных основніх блюд,\n''/desserts - список доступных дессертов,\n''/statistic - посмотреть статистику оценок') + elif message.text == 'Поиск рецепта🥮': + + keyboard = types.InlineKeyboardMarkup() + key_sup = types.InlineKeyboardButton(text='Первые блюда 🍲', callback_data='soups') + # И добавляем кнопку на экран + keyboard.add(key_sup) + key_main = types.InlineKeyboardButton(text='Основные блюда 🥘', callback_data='main_dishes') + keyboard.add(key_main) + key_salad = types.InlineKeyboardButton(text='Салаты 🥗', callback_data='salads') + keyboard.add(key_salad) + key_sweet = types.InlineKeyboardButton(text='Дессерты 🍰', callback_data='sweets') + keyboard.add(key_sweet) + + bot.send_message(message.from_user.id, "Выбери категорию.", reply_markup=keyboard) + + +@bot.callback_query_handler(func=lambda call: call.data == 'soups') +def callback_worker(call): + + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название супа 🍲') + bot.register_next_step_handler(sent,text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название супа 🍲') + bot.register_next_step_handler(sent, video_recipe) + +@bot.callback_query_handler(func=lambda call: call.data == 'main_dishes') +def callback_worker(call): + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название основного блюда🥘') + bot.register_next_step_handler(sent,text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название основного блюда🥘') + bot.register_next_step_handler(sent, video_recipe) + + +@bot.callback_query_handler(func=lambda call: call.data == 'salads') +def callback_worker(call): + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название салата🥗') + bot.register_next_step_handler(sent, text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название салата🥗') + bot.register_next_step_handler(sent, video_recipe) + +@bot.callback_query_handler(func=lambda call: call.data == 'sweets') +def callback_worker(call): + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название дессерта 🍰') + bot.register_next_step_handler(sent,text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название дессерта 🍰') + bot.register_next_step_handler(sent, video_recipe) + + +def text_recipe(message): + + add = check_function.check_is_dish_exist((message.text).upper()) + if bool(add) is False: + result = check_function.if_not_exist_dish() + list(result) + print(result) + bot.send_message(message.from_user.id, result[0]) + for i in range(len(result[1])): + bot.send_message(message.from_user.id, result[1][i]) + + + else: + result = check_function.result_of_search((message.text).upper()) + list(result) + print(result) + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + evaluating(message) + + +def video_recipe(message): + add = check_function.get_video_recipe((message.text).upper()) + if bool(add) is False: + result = check_function.if_not_exist_dish() + list(result) + print(result) + bot.send_message(message.from_user.id, result[0]) + for i in range(len(result[1])): + bot.send_message(message.from_user.id, result[1][i]) + + else: + result = check_function.get_exsist_video_recipe((message.text).upper()) + print(result) + bot.send_message(message.from_user.id, result) + print(message) + evaluating(message) +# +# def choos_dish(message): +# check_function.check_dish_category(message.text) + +def evaluating(message): + keyboard3 = types.InlineKeyboardMarkup() + key_one = types.InlineKeyboardButton(text='1', callback_data='one') + # И добавляем кнопку на экран + keyboard3.add(key_one) + key_two = types.InlineKeyboardButton(text='2', callback_data='two') + keyboard3.add(key_two) + key_three = types.InlineKeyboardButton(text='3', callback_data='three') + keyboard3.add(key_three) + key_four = types.InlineKeyboardButton(text='4', callback_data='four') + keyboard3.add(key_four) + key_five = types.InlineKeyboardButton(text='5', callback_data='five') + keyboard3.add(key_five) + bot.send_message(message.chat.id, "Оцените,пожалуйста,работу бота", reply_markup=keyboard3) + + @bot.callback_query_handler(func=lambda call: call.data == 'one') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(1, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'two') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(2, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'three') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(3, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'four') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(4, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'five') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(5, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + +def continue_working_with_bot(message): + keyboard4 = types.InlineKeyboardMarkup() + key_one = types.InlineKeyboardButton(text='Оставить комментарий', callback_data='write_comment') + # И добавляем кнопку на экран + keyboard4.add(key_one) + key_two = types.InlineKeyboardButton(text='Посмотреть комментарии пользователей', callback_data='see_comments') + keyboard4.add(key_two) + key_three = types.InlineKeyboardButton(text='Посмотреть статистику оценок', callback_data='see_rating') + keyboard4.add(key_three) + bot.send_message(message.chat.id, "Продолжите работу с ботом", reply_markup=keyboard4) + + @bot.callback_query_handler(func=lambda call: call.data == 'write_comment') + def callback_worker(call): + print(message.text) + sent = bot.send_message(call.message.chat.id, 'Введите свой комментарий') + bot.register_next_step_handler(sent,comments) + + @bot.callback_query_handler(func=lambda call: call.data == 'see_comments') + def callback_worker(call): + bot.send_message(call.message.chat.id, 'Отзывы другх пользователей') + result = check_function.see_users_comments() + print(result) + for i in range(len(result)): + bot.send_message(message.chat.id, str((list(result[i]))[0])+': '+str((list(result[i]))[1])) + + @bot.callback_query_handler(func=lambda call: call.data == 'see_rating') + def callback_worker(call): + bot.send_message(call.message.chat.id, 'Статистика оценок') + result = check_function.statistic_of_marks() + print(type(result)) + bot.send_message(message.from_user.id, 'Количество ценок "1" - ' + str(result[0]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "2" - ' + str(result[1]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "3" - ' + str(result[2]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "4" - ' + str(result[3]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "5" - ' + str(result[4]) + '.') + + average = check_function.avarage_of_mark() + bot.send_message(message.from_user.id, 'Средняя оценка - ' + str(average) + '.') + +# def comments(message): +# check_function.add_comments(message.text, str(message.from_user.username)) +# print(message.text) +# bot.send_message(message.chat.id,'Спасибо, ваш комментарий был успешно добавлен!') + +if __name__ == '__main__': + bot.polling() +# From 057825d55b5035dcaef9a088ee28a2b7122943ce Mon Sep 17 00:00:00 2001 From: Anna Maistrenko Date: Sun, 31 May 2020 23:21:59 +0300 Subject: [PATCH 9/9] Final telegram receipe bot project --- TelegrammBotProjectByMaistrenko/Procfile | 1 + .../categories.json | 19 + .../check_function.py | 170 +++++++++ TelegrammBotProjectByMaistrenko/clients.json | 11 + .../database_connection.py | 7 + TelegrammBotProjectByMaistrenko/db_classes.py | 144 ++++++++ TelegrammBotProjectByMaistrenko/filling_db.py | 154 ++++++++ TelegrammBotProjectByMaistrenko/marks.json | 19 + TelegrammBotProjectByMaistrenko/recipes.json | 95 +++++ TelegrammBotProjectByMaistrenko/telegabot.py | 332 ++++++++++++++++++ 10 files changed, 952 insertions(+) create mode 100644 TelegrammBotProjectByMaistrenko/Procfile create mode 100644 TelegrammBotProjectByMaistrenko/categories.json create mode 100644 TelegrammBotProjectByMaistrenko/check_function.py create mode 100644 TelegrammBotProjectByMaistrenko/clients.json create mode 100644 TelegrammBotProjectByMaistrenko/database_connection.py create mode 100644 TelegrammBotProjectByMaistrenko/db_classes.py create mode 100644 TelegrammBotProjectByMaistrenko/filling_db.py create mode 100644 TelegrammBotProjectByMaistrenko/marks.json create mode 100644 TelegrammBotProjectByMaistrenko/recipes.json create mode 100644 TelegrammBotProjectByMaistrenko/telegabot.py diff --git a/TelegrammBotProjectByMaistrenko/Procfile b/TelegrammBotProjectByMaistrenko/Procfile new file mode 100644 index 0000000..a8b8266 --- /dev/null +++ b/TelegrammBotProjectByMaistrenko/Procfile @@ -0,0 +1 @@ +bot: python3 telegabot.py \ No newline at end of file diff --git a/TelegrammBotProjectByMaistrenko/categories.json b/TelegrammBotProjectByMaistrenko/categories.json new file mode 100644 index 0000000..b21d023 --- /dev/null +++ b/TelegrammBotProjectByMaistrenko/categories.json @@ -0,0 +1,19 @@ +{"categories":[ + { + "id": "1", + "name": "Первые блюда" +}, +{ + "id": "2", + "name": "Салаты" +}, +{ + "id": "3", + "name": "Основные блюда" +}, +{ + "id": "4", + "name": "Дессерты" +} +] +} \ No newline at end of file diff --git a/TelegrammBotProjectByMaistrenko/check_function.py b/TelegrammBotProjectByMaistrenko/check_function.py new file mode 100644 index 0000000..2f7af76 --- /dev/null +++ b/TelegrammBotProjectByMaistrenko/check_function.py @@ -0,0 +1,170 @@ +from database_connection import engine +from db_classes import Categories, Dishes, Clients, Marks,Base +from sqlalchemy.sql import select, update, join +from sqlalchemy import and_, or_, between, asc, desc,update +from sqlalchemy.orm import sessionmaker +from sqlalchemy.sql import func +import plotly.express as px +import plotly.graph_objects as go + + + +# Base.metadata.create_all(engine) +Session = sessionmaker(bind=engine) +session = Session() + +# функция для добавления нового пользователя +def check_user_exist(username): + + try: + # q = session.query(Clients).filter_by(Clients.id == '1') + + if bool(session.query(Clients.id).filter_by(id = '1').first()) is False: + + row = Clients(id = '1',client_username = username) + session.add(row) + session.commit() + search_query = (session.query(Clients).filter_by(id = '1').one()).client_username + print('Hello,', search_query) + + else: + + if bool(session.query(Clients.client_username).filter_by(client_username = username).first()) is True: + print('User already exist') + + else: + id_value = session.query(Clients.id).count() + row = Clients(id = id_value+1, client_username = username) + session.add(row) + session.commit() + print('We successfully added you to our database') + + except: + print('This user already exsist') + +# функция для проверки значения оценки +def check_mark_value(id,mark,values,id_client,dish_id,text): + if mark > 5: + print('Max value is 5') + else: + row = Marks(id=id, mark_value=values,client_id = id_client,dish_id = dish_id,text_reviw = text) + session.add(row) + session.commit() +# bool(User.query.filter_by(name='John Smith').first()) + +# функция для проверки существования блюда +def check_is_dish_exist(dish_name): + # exsist = session.query(Dishes).filter(Dishes.dish_name == dish_name) + if bool(session.query(Dishes.dish_name).filter_by(dish_name = dish_name).first()) is False: + return False + + else: + return True +# +def if_not_exist_dish(): + + result = session.query(Dishes.dish_name).all() + return 'Такого блюда не существует в нашей базе данных, посмотрите блюда, которые доступны',result + +def result_of_search(dish_name): + + result = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()) + return result.ingridients, result.text_recipe + + # функция для получения видео рецепта +def get_video_recipe(dish_name): + # exsist = session.query(Dishes).filter(Dishes.dish_name == dish_name) + if bool(session.query(Dishes.dish_name).filter_by(dish_name = dish_name).first()) is False: + return False + else: + return True + +def get_exsist_video_recipe(dish_name): + result = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).video_recept + return result +# функция для добавления оценки пользователя +def add_user_mark(mark,client_username,dish_name): + + if bool(session.query(Marks.id).filter_by(id='1').first()) is False: + id_found = (session.query(Clients).filter(Clients.client_username == client_username).first()).id + dish_id = (session.query(Dishes).filter(Dishes.dish_name == dish_name).first()).id + + + row = Marks(id= '1', mark_value = mark, client_id = id_found, dish_id = dish_id,user_name = client_username) + session.add(row) + session.commit() + return 'Вы наш первый пользователь.Мы успешно добавили вашу первую оценку' + + elif bool(session.query(Marks).filter(Marks.user_name == client_username).first()) is True: + session.query(Marks).filter(Marks.user_name == client_username).update({Marks.mark_value: mark},synchronize_session=False) + session.commit() + return 'Мы успешно обновили вашу оценку' + else: + id_found = (session.query(Clients).filter(Clients.client_username == client_username).one()).id + dish_id = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).id + id_value = session.query(Marks.id).count() + row = Marks(id=id_value + 1, mark_value = mark, client_id = id_found, dish_id = dish_id, user_name = client_username) + session.add(row) + session.commit() + return 'Мы успешно добавили вашу оценку' +# функция для проверки принадлежности блюда к категории +def check_dish_category(dish_name): + id_dish = (session.query(Dishes).filter(Dishes.dish_name == dish_name).one()).id + dish_category = (session.query(Categories).filter(Categories.id == id_dish).one()).category_name + return dish_category +# функция добавления комментария пользователя в бд +def add_comments(message,username): + + session.query(Marks).filter(Marks.user_name == username).update({Marks.text_reviw: message},synchronize_session = False) + session.commit() + return 'Мы успешно добавили ваш комментарий' +# функции для просмотре блюд и коментариев +def see_users_comments(): + return session.query(Marks.user_name,Marks.text_reviw).all() + +def see_all_soups(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 1).all()) + +def see_all_main_dishes(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 3).all()) + +def see_all_salads(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 2).all()) + +def see_all_desserts(): + return (session.query(Dishes.dish_name).filter(Dishes.id_category == 4).all()) + +# график распределения оценок пользователей +def statistic_of_marks(): + result = [] + for i in range(1,6): + result.append(session.query(Marks).filter(Marks.mark_value== i).count()) + + return result +def avarage_of_mark(): + + result = session.query(func.avg(Marks.mark_value).label('average')).all() + # + # sum_of_marks = session.query(Marks.mark_value).all() + return round((result[0][0]),1) + # num_of_marks = len(sum_of_marks) + # result = sum(sum_of_marks)/num_of_marks + # print(result) + + + + + + + + + + + + + + + + + + diff --git a/TelegrammBotProjectByMaistrenko/clients.json b/TelegrammBotProjectByMaistrenko/clients.json new file mode 100644 index 0000000..e79d902 --- /dev/null +++ b/TelegrammBotProjectByMaistrenko/clients.json @@ -0,0 +1,11 @@ +{"clients":[ + { + "id": "2", + "name": "dima" +}, +{ + "id": "3", + "name": "olya" +} +] +} \ No newline at end of file diff --git a/TelegrammBotProjectByMaistrenko/database_connection.py b/TelegrammBotProjectByMaistrenko/database_connection.py new file mode 100644 index 0000000..75bd0a8 --- /dev/null +++ b/TelegrammBotProjectByMaistrenko/database_connection.py @@ -0,0 +1,7 @@ +from sqlalchemy.engine import create_engine + +# для создания таблиц Вам неободимо прописать путь к своей базе данніх oracle +DATABASE_URI = 'postgres+psycopg2://postgres:msn1973msn@localhost:5432/bot' + +engine = create_engine(DATABASE_URI) + diff --git a/TelegrammBotProjectByMaistrenko/db_classes.py b/TelegrammBotProjectByMaistrenko/db_classes.py new file mode 100644 index 0000000..d8ab9cf --- /dev/null +++ b/TelegrammBotProjectByMaistrenko/db_classes.py @@ -0,0 +1,144 @@ +from sqlalchemy import Column, Integer, String, ForeignKey,Text +from sqlalchemy.ext.declarative import declarative_base +from database_connection import engine +import json + +Base = declarative_base() + +from sqlalchemy.orm import relationship, sessionmaker +# создание таблиц +class Categories(Base): + + __tablename__ = 'dish_categories' + + id = Column(Integer, primary_key=True) + category_name = Column(Text) + + styles = relationship('Dishes', backref='dish_categories', lazy=True) + +class Dishes(Base): + + __tablename__ = 'dishes' + + id = Column(Integer, primary_key=True) + dish_name = Column(Text) + id_category = Column(Integer, ForeignKey("dish_categories.id")) + text_recipe = Column(Text) + video_recept = Column(Text) + ingridients = Column(Text) + + +class Clients(Base): + + __tablename__ = 'clients' + + id = Column(Integer, primary_key=True) + client_username = Column(Text) + +class Marks(Base): + + __tablename__ = 'marks' + + id = Column(Integer, primary_key=True) + mark_value = Column(Integer) + client_id = Column(Integer, ForeignKey("clients.id")) + dish_id = Column(Integer, ForeignKey("dishes.id")) + text_reviw = Column(Text) + user_name = Column(Text) + + styles = relationship('Clients', backref='marks', lazy=True) + styles_1 = relationship('Dishes', backref='marks', lazy=True) + +Base.metadata.create_all(engine) + +# добавления данных в бд +# Session = sessionmaker(bind = engine) +# session = Session() +# считывание данных с файла, на другом компьютере прийдеся вставить другой путь к файлам + +# categories = open("C:/Pyprojects/venv/categories.json",encoding="utf-8") +# data_categories = json.load(categories) +# dishes = open("C:/Pyprojects/venv/recipes.json",encoding="utf8") +# data_dishes = json.load(dishes) +# marks = open("C:/Pyprojects/venv/marks.json",encoding="utf8") +# data_marks = json.load(marks) +# clients = open("C:/Pyprojects/venv/clients.json",encoding="utf8") +# data_clients = json.load(clients) + +# добавление категорий блюд +# session.add_all([ +# Categories(id = data_categories['categories'][0]['id'], category_name = data_categories['categories'][0]['name']), +# Categories(id = data_categories['categories'][1]['id'], category_name = data_categories['categories'][1]['name']), +# Categories(id = data_categories['categories'][2]['id'], category_name = data_categories['categories'][2]['name']), +# Categories(id = data_categories['categories'][3]['id'], category_name = data_categories['categories'][3]['name'])] +# ) +# session.commit() +# +# # добавление рецептов и названий блюд +# session.add_all([ +# Dishes(id = data_dishes['dish'][0]['id'], +# dish_name = data_dishes['dish'][0]['name'], +# id_category=data_dishes['dish'][0]['id_category'], +# text_recipe = data_dishes['dish'][0]['text_recipe'], +# video_recept=data_dishes['dish'][0]['video_recipe'], +# ingridients=data_dishes['dish'][0]['ingridients']), +# Dishes(id = data_dishes['dish'][1]['id'], +# dish_name = data_dishes['dish'][1]['name'], +# id_category=data_dishes['dish'][1]['id_category'], +# text_recipe = data_dishes['dish'][1]['text_recipe'], +# video_recept=data_dishes['dish'][1]['video_recipe'], +# ingridients=data_dishes['dish'][1]['ingridients']), +# Dishes(id = data_dishes['dish'][2]['id'], +# dish_name = data_dishes['dish'][2]['name'], +# id_category=data_dishes['dish'][2]['id_category'], +# text_recipe = data_dishes['dish'][2]['text_recipe'], +# video_recept=data_dishes['dish'][2]['video_recipe'], +# ingridients=data_dishes['dish'][2]['ingridients']), +# Dishes(id = data_dishes['dish'][3]['id'], +# dish_name = data_dishes['dish'][3]['name'], +# id_category=data_dishes['dish'][3]['id_category'], +# text_recipe = data_dishes['dish'][3]['text_recipe'], +# video_recept=data_dishes['dish'][3]['video_recipe'], +# ingridients=data_dishes['dish'][3]['ingridients']), +# Dishes(id = data_dishes['dish'][4]['id'], +# dish_name = data_dishes['dish'][4]['name'], +# id_category=data_dishes['dish'][4]['id_category'], +# text_recipe = data_dishes['dish'][4]['text_recipe'], +# video_recept=data_dishes['dish'][4]['video_recipe'], +# ingridients=data_dishes['dish'][4]['ingridients']), +# Dishes(id = data_dishes['dish'][5]['id'], +# dish_name = data_dishes['dish'][5]['name'], +# id_category=data_dishes['dish'][5]['id_category'], +# text_recipe = data_dishes['dish'][5]['text_recipe'], +# video_recept=data_dishes['dish'][5]['video_recipe'], +# ingridients=data_dishes['dish'][5]['ingridients']), +# Dishes(id = data_dishes['dish'][6]['id'], +# dish_name = data_dishes['dish'][6]['name'], +# id_category=data_dishes['dish'][6]['id_category'], +# text_recipe = data_dishes['dish'][6]['text_recipe'], +# video_recept=data_dishes['dish'][6]['video_recipe'], +# ingridients=data_dishes['dish'][6]['ingridients']), +# Dishes(id = data_dishes['dish'][7]['id'], +# dish_name = data_dishes['dish'][7]['name'], +# id_category=data_dishes['dish'][7]['id_category'], +# text_recipe = data_dishes['dish'][7]['text_recipe'], +# video_recept=data_dishes['dish'][7]['video_recipe'], +# ingridients=data_dishes['dish'][7]['ingridients']), +# Dishes(id = data_dishes['dish'][8]['id'], +# dish_name = data_dishes['dish'][8]['name'], +# id_category=data_dishes['dish'][8]['id_category'], +# text_recipe = data_dishes['dish'][8]['text_recipe'], +# video_recept=data_dishes['dish'][8]['video_recipe'], +# ingridients=data_dishes['dish'][8]['ingridients']), +# ] +# ) +# session.commit() +# +# session.add_all([ +# Categories(id = data_categories['categories'][0]['id'], category_name = data_categories['categories'][0]['name']), +# Categories(id = data_categories['categories'][1]['id'], category_name = data_categories['categories'][1]['name']), +# Categories(id = data_categories['categories'][2]['id'], category_name = data_categories['categories'][2]['name']), +# Categories(id = data_categories['categories'][3]['id'], category_name = data_categories['categories'][3]['name'])] +# ) +# session.commit() + diff --git a/TelegrammBotProjectByMaistrenko/filling_db.py b/TelegrammBotProjectByMaistrenko/filling_db.py new file mode 100644 index 0000000..c2e5b6a --- /dev/null +++ b/TelegrammBotProjectByMaistrenko/filling_db.py @@ -0,0 +1,154 @@ +from sqlalchemy import Column, Integer, String, ForeignKey +from sqlalchemy.ext.declarative import declarative_base +from database_connection import engine +import db_classes +import json +from sqlalchemy.orm import relationship, sessionmaker +# +Session = sessionmaker(bind = engine) +session = Session() +# считывание данных с файла, на другом компьютере прийдеся вставить другой путь к файлам + +categories = open("categories.json",encoding="utf-8") +data_categories = json.load(categories) +dishes = open("recipes.json",encoding="utf8") +data_dishes = json.load(dishes) +marks = open("marks.json",encoding="utf8") +data_marks = json.load(marks) +clients = open("clients.json",encoding="utf8") +data_clients = json.load(clients) + +# # добавление категорий блюд +# session.add_all([ +# db_classes.Clients(id = data_clients['clients'][0]['id'], client_username = data_clients['clients'][0]['name']), +# db_classes.Clients(id = data_clients['clients'][1]['id'], client_username = data_clients['clients'][1]['name'])] +# ) +# session.commit() +# +# session.add_all([ +# db_classes.Dishes(id = data_dishes['dish'][0]['id'], +# dish_name = data_dishes['dish'][0]['name'], +# id_category=data_dishes['dish'][0]['id_category'], +# text_recipe = data_dishes['dish'][0]['text_recipe'], +# video_recept=data_dishes['dish'][0]['video_recipe'], +# ingridients=data_dishes['dish'][0]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][1]['id'], +# dish_name = data_dishes['dish'][1]['name'], +# id_category=data_dishes['dish'][1]['id_category'], +# text_recipe = data_dishes['dish'][1]['text_recipe'], +# video_recept=data_dishes['dish'][1]['video_recipe'], +# ingridients=data_dishes['dish'][1]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][2]['id'], +# dish_name = data_dishes['dish'][2]['name'], +# id_category=data_dishes['dish'][2]['id_category'], +# text_recipe = data_dishes['dish'][2]['text_recipe'], +# video_recept=data_dishes['dish'][2]['video_recipe'], +# ingridients=data_dishes['dish'][2]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][3]['id'], +# dish_name = data_dishes['dish'][3]['name'], +# id_category=data_dishes['dish'][3]['id_category'], +# text_recipe = data_dishes['dish'][3]['text_recipe'], +# video_recept=data_dishes['dish'][3]['video_recipe'], +# ingridients=data_dishes['dish'][3]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][4]['id'], +# dish_name = data_dishes['dish'][4]['name'], +# id_category=data_dishes['dish'][4]['id_category'], +# text_recipe = data_dishes['dish'][4]['text_recipe'], +# video_recept=data_dishes['dish'][4]['video_recipe'], +# ingridients=data_dishes['dish'][4]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][5]['id'], +# dish_name = data_dishes['dish'][5]['name'], +# id_category=data_dishes['dish'][5]['id_category'], +# text_recipe = data_dishes['dish'][5]['text_recipe'], +# video_recept=data_dishes['dish'][5]['video_recipe'], +# ingridients=data_dishes['dish'][5]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][6]['id'], +# dish_name = data_dishes['dish'][6]['name'], +# id_category=data_dishes['dish'][6]['id_category'], +# text_recipe = data_dishes['dish'][6]['text_recipe'], +# video_recept=data_dishes['dish'][6]['video_recipe'], +# ingridients=data_dishes['dish'][6]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][7]['id'], +# dish_name = data_dishes['dish'][7]['name'], +# id_category=data_dishes['dish'][7]['id_category'], +# text_recipe = data_dishes['dish'][7]['text_recipe'], +# video_recept=data_dishes['dish'][7]['video_recipe'], +# ingridients=data_dishes['dish'][8]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][8]['id'], +# dish_name = data_dishes['dish'][8]['name'], +# id_category=data_dishes['dish'][8]['id_category'], +# text_recipe = data_dishes['dish'][8]['text_recipe'], +# video_recept=data_dishes['dish'][8]['video_recipe'], +# ingridients=data_dishes['dish'][8]['ingridients']), +# ] +# ) +# session.commit() +# +# session.add_all([ +# db_classes.Marks(id = data_marks['marks'][0]['id'], mark_value = data_marks['marks'][0]['value'], client_id = data_marks['marks'][0]['id_client'], dish_id = data_marks['marks'][0]['id_dish'], text_reviw = data_marks['marks'][0]['text_reviw'],user_name = data_marks['marks'][0]['name']), +# db_classes.Marks(id = data_marks['marks'][1]['id'], mark_value = data_marks['marks'][1]['value'], client_id = data_marks['marks'][1]['id_client'], dish_id = data_marks['marks'][1]['id_dish'], text_reviw = data_marks['marks'][1]['text_reviw'],user_name = data_marks['marks'][1]['name'])] +# ) +# session.commit() + +# добавление рецептов и названий блюд +# session.add_all([ +# db_classes.Dishes(id = data_dishes['dish'][0]['id'], +# dish_name = data_dishes['dish'][0]['name'], +# id_category=data_dishes['dish'][0]['id_category'], +# text_recipe = data_dishes['dish'][0]['text_recipe'], +# video_recept=data_dishes['dish'][0]['video_recipe'], +# ingridients=data_dishes['dish'][0]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][1]['id'], +# dish_name = data_dishes['dish'][1]['name'], +# id_category=data_dishes['dish'][1]['id_category'], +# text_recipe = data_dishes['dish'][1]['text_recipe'], +# video_recept=data_dishes['dish'][1]['video_recipe'], +# ingridients=data_dishes['dish'][1]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][2]['id'], +# dish_name = data_dishes['dish'][2]['name'], +# id_category=data_dishes['dish'][2]['id_category'], +# text_recipe = data_dishes['dish'][2]['text_recipe'], +# video_recept=data_dishes['dish'][2]['video_recipe'], +# ingridients=data_dishes['dish'][2]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][3]['id'], +# dish_name = data_dishes['dish'][3]['name'], +# id_category=data_dishes['dish'][3]['id_category'], +# text_recipe = data_dishes['dish'][3]['text_recipe'], +# video_recept=data_dishes['dish'][3]['video_recipe'], +# ingridients=data_dishes['dish'][3]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][4]['id'], +# dish_name = data_dishes['dish'][4]['name'], +# id_category=data_dishes['dish'][4]['id_category'], +# text_recipe = data_dishes['dish'][4]['text_recipe'], +# video_recept=data_dishes['dish'][4]['video_recipe'], +# ingridients=data_dishes['dish'][4]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][5]['id'], +# dish_name = data_dishes['dish'][5]['name'], +# id_category=data_dishes['dish'][5]['id_category'], +# text_recipe = data_dishes['dish'][5]['text_recipe'], +# video_recept=data_dishes['dish'][5]['video_recipe'], +# ingridients=data_dishes['dish'][5]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][6]['id'], +# dish_name = data_dishes['dish'][6]['name'], +# id_category=data_dishes['dish'][6]['id_category'], +# text_recipe = data_dishes['dish'][6]['text_recipe'], +# video_recept=data_dishes['dish'][6]['video_recipe'], +# ingridients=data_dishes['dish'][6]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][9]['id'], +# dish_name = data_dishes['dish'][9]['name'], +# id_category=data_dishes['dish'][9]['id_category'], +# text_recipe = data_dishes['dish'][9]['text_recipe'], +# video_recept=data_dishes['dish'][9]['video_recipe'], +# ingridients=data_dishes['dish'][9]['ingridients']), +# db_classes.Dishes(id = data_dishes['dish'][10]['id'], +# dish_name = data_dishes['dish'][10]['name'], +# id_category=data_dishes['dish'][10]['id_category'], +# text_recipe = data_dishes['dish'][10]['text_recipe'], +# video_recept=data_dishes['dish'][10]['video_recipe'], +# ingridients=data_dishes['dish'][10]['ingridients']), +# ] +# ) + + + + diff --git a/TelegrammBotProjectByMaistrenko/marks.json b/TelegrammBotProjectByMaistrenko/marks.json new file mode 100644 index 0000000..58cf64b --- /dev/null +++ b/TelegrammBotProjectByMaistrenko/marks.json @@ -0,0 +1,19 @@ +{"marks":[ + { + "id": "2", + "value": "4", + "id_client": "2", + "id_dish": "2", + "text_reviw": "Очень удобный в использовании!", + "name":"dima" +}, +{ + "id": "3", + "value": "2", + "id_client": "3", + "id_dish": "3", + "text_reviw": "Очень классній бот, первый помощник на кухне!", + "name":"olya" +} +] +} \ No newline at end of file diff --git a/TelegrammBotProjectByMaistrenko/recipes.json b/TelegrammBotProjectByMaistrenko/recipes.json new file mode 100644 index 0000000..514d2bd --- /dev/null +++ b/TelegrammBotProjectByMaistrenko/recipes.json @@ -0,0 +1,95 @@ +{"dish":[ + { + "id": "1", + "name": "БОРЩ", + "id_category":"1", + "text_recipe":"Мясо вымойте, положите в кастрюлю и залейте холодной водой. Дождитесь, пока закипит, и варите ещё 20 минут. После закипания с помощью шумовки снимите лишнюю пену.Свёклу очистите от кожуры, натрите на крупной тёрке и обжарьте на растительном масле. Влейте немного мясного бульона и оставьте тушиться на медленном огне.Мелко нашинкуйте лук и обжарьте на масле до золотистого цвета. Добавьте морковь, влейте ещё немного бульона и тушите в течение 3—5 минут.Очистите картофель, нарежьте кубиками, добавьте к бульону и дайте закипеть.Затем добавьте мелко нашинкованную свежую капусту. Варите до готовности.Посолите и поперчите по вкусу.В конце добавьте тушёную свёклу, зелень и лавровый лист. Накройте кастрюлю крышкой и варите в течение 3—5 минут, после чего снимите с огня.При подаче заправьте борщ сметаной.", + "video_recipe":"https://www.youtube.com/watch?v=_-9nH4zFThs", + "ingridients": "Говядина (на кости)300—400 г,Капуста (свежая)1,5 кг,Картофель3—4 шт.,Морковь1—2 шт.,Лук (репчатый)1 шт.,Свёкла1 шт.,Сметана100 мл,Масло (растительное)2 ст. л.,Лавровый лист2 листа,Вода1,5—2 л,Зелень (укроп или петрушка)по вкусу,Перец (чёрный молотый)по вкусу,Сольпо вкусу')" +}, +{ + "id": "2", + "name": "ОЛИВЬЕ", + "id_category":"2", + "text_recipe":"Картофель и морковь сварить «в мундирах». Сварить яйца. 2. Тем временем колбасу и огурцы нарезать мелкими кубиками. 3. Готовые овощи и яйца почистить и также нарезать кубиками. 4. Мелко нарезать лук. 5. Все ингредиенты смешать, добавить горошек и заправить майонезом. 6. Украсить зеленью.", + "video_recipe":"https://www.youtube.com/watch?v=z8KpTK5oGBQ", + "ingridients": "картофель - 4-5 штук,морковь - 2 крупные или 3 средние ,консервированный горошек – 1 банка ,колбаса «Докторская» - 300-400 г,соленые или маринованные огурцы – 4-5 штук,яйца – 6 штук,лук – 1 штука,зелень,майонез." +}, +{ + "id": "3", + "name": "РИЗОТТО", + "id_category":"3", + "text_recipe":"Разогрейте сливочное масло в казанке на среднем огне. Добавьте грибы и готовьте, помешивая, 5-10 минут (пока грибы не подрумянятся). Добавьте нарезанную курицу, 1 ч. л. соли, перец и готовьте, помешивая, около 10 минут. Переложите грибы с курицей в другую посуду. В кастрюле доведите до кипения бульон.2. В казанке разогрейте растительное масло. Добавьте лук и обжарьте его на умеренном огне, помешивая, в течение 5 минут. Добавьте рис. Готовьте, помешивая, около 2 минут.3. Влейте в казанок с рисом вино, добавьте 1 ч. л. соли. Готовьте, часто помешивая, до тех пор, пока жидкость не впитается. Добавьте пол стакана кипящего бульона и помешивайте, пока не впитается. Рис должен слегка кипеть (уменьшите огонь, если нужно). Продолжайте готовить рис, подливая по пол стакана бульона и перемешивая (всего – около 25-30 минут). Жидкость, которая не впитается, станет вязкой благодаря высокому содержанию крахмала в рисе. Бульон может весь не понадобиться, а может, придется добавить немного бульона или воды дополнительно.4. Вмешайте курицу с грибами, сыр и петрушку. Прогрейте ризотто с курицей и подавайте блюдо. Приятного аппетита!", + "video_recipe":"https://www.youtube.com/watch?v=5__wUabM0y8", + "ingridients": "Масло сливочное – 2 ст. л,Грибы, тонко нарезанные – 220 г,Куриные грудки, филе, нарезанное кусочками по 1 см – 300 г,Соль – 1 ч. л.,Перец черный молотый – 1 ч. л.,Бульон куриный – 5 стакан,Масло растительное – 1 ст. л.,Лук репчатый, нарезанный – пол стакана,Рис Арборио – 1 стакан,Вино сухое белое – пол стакана,Сыр Пармезан тертый – пол стакана,Зелень петрушки нарезанная – 2 ст. л." +}, +{ + "id": "4", + "name": "ТИРАМИСУ", + "id_category":"4", + "text_recipe":"Отделить белки от желтков. Желтки растереть с сахаром.Добавить маскарпоне.Перемешать.Белки взбить в крепкую пену.Добавить белки в желтково-сырную массу.Аккуратно перемешать.Палочки окунуть в холодный кофе.Палочки надо окунать очень быстрым движением, чтобы они не размокли.Кофе приготовьте так, как вам нравится (я на 350 мл добавила 4 ч.л. кофе).По желанию, в кофе можно добавить вино, ром, ликер, бренди, или коньяк.В форму (я использовала форму размером 17 на 25 см) плотно выложить палочки, смоченные в кофе.На палочки выложить половину крема.Разровнять.На крем снова выложить палочки, смоченные в кофе.На палочки выложить оставшийся крем.Разровнять.Поставить в холодильник на 5–6 часов.Посыпать через сито какао.Разрезать на порции.Разрезать надо очень аккуратно, так как десерт очень нежный.", + "video_recipe":"https://www.youtube.com/watch?v=kSlmBQLa0B8", + "ingridients": "4 яйца (я использовала 18 перепелиных яиц),100 г сахара,500 г маскарпоне,250 г печенья «Савоярди» (примерно 34 штуки),350 мл кофе (растворимого или сваренного),порошок какао,2–3 ст.л. вина «Марсала» (или любого другого), или рома, ликера, бренди, коньяка — по желанию" +}, +{ + "id": "5", + "name": "СОЛЯНКА", + "id_category":"1", + "text_recipe":"1. Налить бульон в емкость МВ (у меня куриный, можно сварить мясо на режиме Суп.Включить мультиварку, установить режим выпечка или экспресс.\n2.Обжарить лук, добавить томат. Перемешать и прожарить все это, еще 5 - 7 минут.\n3.Затем добавить огурцы, порезанные кубиками.\n4.Пока все в мультиварке тушится, готовим мясное ассорти. У меня - мясо отварное, колбаса вареная, колбаса копченая и кусочек копченой курицы. Режем все соломкой или кубиками.Закладываем в чашу мясное ассорти.Заливаем процеженным бульоном. Можно еще влить 1 стакан рассола от огурцов .\n5.Добавить картофель, порезанный мелкими кубиками.Добавить специи по вкусу, лавровый лист, зелень.\n6.Включить режем тушение или суп 1 час.И ждать сигнала)) Аромат на кухне будет неописуемый)).\n7.Подается солянка к столу, со сметаной, маслинами, долькой лимона и мелко нарезанной зеленью.Приятного аппетита!!!.", + "video_recipe":"https://www.youtube.com/watch?v=wXiK9Qoce8A", + "ingridients": "350 г свинины;\n2 луковицы;\n250 г копчёной колбасы;\n250 г ветчинной колбасы;\n4 солёных огурца;\n2 столовые ложки растительного масла;\n2 столовые ложки томатной пасты;\n100 г оливок;\n2 сосиски;\n100–120 мл огуречного рассола;\nсоль — по вкусу;\nзелень, сметана, лимон — для подачи." +}, +{ + "id": "6", + "name": "СВЕКОЛЬНИК", + "id_category":"1", + "text_recipe":"1. Подготовить продукты для приготовления горячего свекольника.\n2.Морковь очистить, вымыть, тонко нашинковать.Свеклу очистить, вымыть, нарезать соломкой.Лук очистить, вымыть, мелко нарезать.Картофель очистить, вымыть, нарезать дольками..\n3.Вскипятить воду (1-1,5 л)\n4.В кипящую воду положить 1 морковь, лук, картофель.Добавить нарезанные со­ломкой полторы свеклы. Накрыть крышкой и варить при слабом кипении.\n5.На сковороде растопить сливочное масло.Оставшиеся 0,5 свеклы, морковь выложить в растопленное масло, перемешать. Спассеровать на сливочном масле, помешивая. Жарить коренья нужно на среднем огне 5-7 минут.\n6.Помидоры ошпарить кипятком, снять шкурку.Помидоры мелко нарезать..\n7.Добавить помидо­ры к кореньям, перемешать, тушить еще 5-7 минут (помидоры должны полностью размягчиться).Высыпать в кастрюлю с кипящими овощами.\n8.Заправить по вкусу солью. Накрыть крышкой, варить еще 5 минут. Затем свекольник выключить.Можно откорректировать вкус, дополнительно заправив свекольник сахаром и лимонной кислотой.Горячий свекольник готов.\n9.При подаче горячий свекольник заправить зеленью и сметаной.", + "video_recipe":"https://www.youtube.com/watch?v=admLVc8ezXw", + "ingridients": "Свекла - 250-350 г (2 шт.)\nМорковь - 150-200 г (1-2 шт.)\nКартофель - 200 г (2 шт.)\nПомидоры - 400 г (4-5 шт.)\nЛук - 70-90 г (1 шт.)\nСоль 1,5 ч. ложки\nСметана - 100-200 г\nЗелень - 0,5 пучка\nЛимонная кислота (по желанию) - щепотку\nСахар (по желанию) - 0,25 ч. ложки" +}, +{ + "id": "7", + "name": "ВИНИГРЕТ", + "id_category":"2", + "text_recipe":"1. Свеклу отварить до готовности.\n2.Картофель и морковь отварить до готовности.\n3.Лук мелко нарезать.\n4.Огурцы нарезать кубиками.\n5.Если капуста сильно соленая, ее промыть.Мелко нашинковать.\n6.Морковь нарезать кубиками.Свеклу нарезать кубиками.Картофель нарезать кубиками.\n7.Смешать картофель, морковь, огурцы, лук, капусту, свеклу.Немного посолить\n8.Заправить растительным маслом.", + "video_recipe":"https://www.youtube.com/watch?v=RZtWdZ8q6RM", + "ingridients": "400 г свеклы\n300 г моркови\n400 г картофеля\n200 г квашеной капусты\n200 г маринованных или соленых огурцов\n150 г лука\nсоль\nрастительное масло" +}, +{ + "id": "8", + "name": "ЦЕЗАРЬ", + "id_category":"2", + "text_recipe":"1.С хлеба срежьте корочку, а сам хлеб порежьте кубиками.\n2. Чеснок пропустите через чесночницу и обжарьте его пару минут в разогретом оливковом масле.\n3. Куриное филе порежьте небольшими кусочками и отправляйте к чесноку на сковороду.\n4. Обжарьте курицу, помешивая, 10 минут, в конце посолите и поперчите по вкусу.\n5. Уберите с огня курицу, а в ту же сковороду добавьте еще немного масла и обжарьте хлеб, постоянно помешивая, пока он не зарумянится.\n6. Приготовьте соус для салата «Цезарь» . Для этого пармезан натрите на мелкой терке. Смешайте яичный желток, оливковое масло, горчицу, лимонный сок, тертый пармезан и хорошенько все взбейте.\n7. Листья салата порвите средними кусками. Помидоры черри порежьте на половинки.\n8. Выложите на салат обжаренное куриное филе, добавьте помидоры, полейте соусом, сверху потрите пармезаном.\n9. Непосредственно перед подачей добавьте в салат «Цезарь» хлебные сухарики. Приятного аппетита!", + "video_recipe":"https://www.youtube.com/watch?v=onq7Sd8c2To", + "ingridients": "300 г курицы (филе)\n100 г пармезана\n100 г белого хлеба, 200 г листьев салата\n100 г помидоров черри\n1 зубок чеснока\n1 ст. ложка оливкового масла\nчерный молотый перец по вкусу\nсоль по вкусу.\nСоус для салата «Цезарь» включает ингредиенты:\n1 яичный желток\n1 ч. ложка горчицы\n2 ст. ложки оливкового масла\n1 ч. ложка лимонного сока\n50 г пармезана\nчерный молотый перец по вкусу\nсоль по вкусу." + +}, +{ + "id": "9", + "name": "ГОЛУБЦЫ", + "id_category":"3", + "text_recipe":"1.Подготовим капустные листья для голубцов, снимим листья с капусты.\n2.Измельчим лук и морковь.\n3.Поджарим овощи на растительном масле до готовности и разделим на две части. Одну часть используем для начинки. Во вторую часть добавим соль (1 ст. л.), сахар (1 ст. л.), молотый перец и томатный соус или кетчуп.\n4.Смешаем сваренный заранее рис, фарш и овощную зажарку. Начинку для голубцов посолим, поперчим и перемешаем.\n5.Закрутим голубцы с мясом и рисом.\n6.Голубцы выложим в кастрюлю и зальем томатной подливой.\n7.Готовим голубцы на небольшом огне примерно 1 час.", + "video_recipe":"https://www.youtube.com/watch?v=Pva-0xZ2Ips", + "ingridients": "Капуста белокочанная - 1 шт.\nРис - 1 стакан\nФарш мясной - 500 г\nМорковь - 1 шт.\nЛук репчатый - 4-5 шт.\nКетчуп или томатный соус - 3 ст.л.\nМасло растительное - для жарки\nПерец молотый (красный и черный)\nСахар\nСоль" + +}, +{ + "id": "11", + "name": "БРАУНИ", + "id_category":"4", + "text_recipe":"1.Включить духовку для предварительного разогрева на 180 градусов. Противень размером 25х35 см застелить фольгой и слегка сбрызнуть растительным маслом.\n2.В большой миске смешать масло, белый, ванильный и коричневый сахар и кофейный напиток. Миксером на средней скорости перемешать до пышного, однородного состояния. Затем по одному добавлять яйца, хорошо перемешивая после каждого.\n3. В большой миске соединить муку, какао-порошок, разрыхлитель, соду и соль. Эту массу постепенно всыпать в масляную смесь, при этом перемешивая миксером на средней скорости. В эту массу добавить шоколад и пекан. Хорошо перемешать и выложить эту массу в подготовленную форму.\n4.Поставить в разогретую духовку и выпекать около 30-35 минут. Перед подачей дать готовому изделию полностью остыть.", + "video_recipe":"https://www.youtube.com/watch?v=MhbZmcGSvcg", + "ingridients": "Масло сливочное (размягченное) - 300 г\nСахар коричневый - 1 3/4 стакана\nСахар белый - 1 стакан\nКофе растворимый - 1/2 стакана\nЯйца - 4 шт.\nВанильный сахар - 1 ст. л.\nМука пшеничная - 1 1/2 стакана\nКакао-порошок - 1 стакан\nРазрыхлитель - 1/2 ч. л.\nСода пищевая - 1/2 ч. л.\nСоль - 1/4 ч. л.\nЧипсы черного шоколада или шоколад, разломанный на кусочки - 1 стакан\nОрех пекан жареный - 1 стакан\nМолочный шоколад (разломанный на кусочки) - 30 г" + +}, +{ + "id": "12", + "name": "ЧИЗКЕЙК", + "id_category":"4", + "text_recipe":"1.Измельчите печенье до состояния крошки. Сливочное масло растопите на водяной бане.Перемешайте печенье с 1 ст. ложкой сахара, добавьте масло, тщательно перемешайте.\n2.Форму для запекания (диаметр моей формы - 22 см) застелите пергаментной бумагой. Из полученной массы сделайте основу для чизкейка в форме для запекания и поместите ее в духовку, разогретую до 170 градусов, на 10 минут.\n3.Пока корж находится в духовке, займитесь приготовлением сырной начинки. Для этого взбейте яйца с 4-мя столовыми ложками сахара, добавьте жирные сливки, ванилин и цедру половины лимона.\n4.В полученную массу добавьте сливочный сыр и снова все хорошо взбейте венчиком до получения однородной консистенции.\n5.Полученную сырную массу (довольно жидкую) вылейте на готовую основу и поместите в духовку. Внимание! Чизкейк должен готовиться в духовке на водяной бане при температуре не более 150 градусов в течение 70-80 минут.\n6.Готовый чизкейк уберите в холодильник на несколько часов, а лучше на ночь. Перед подачей украсьте чизкейк (например, сахарной пудрой и свежей клубникой) и достаньте из формы.", + "video_recipe":"https://www.youtube.com/watch?v=-UVzp2uF5Es", + "ingridients": "Печенье (любое рассыпчатое) - 300 г\nСыр сливочный (рикотта; в идеале - филадельфия) - 500 г\nСливки 35% - 200 г\nЯйца куриные - 4 шт.\nМасло сливочное - 100 г\nСахар - 5 ст. л.\nЛимон (для цедры) - 0,5-1 шт.\nВанилин - 1 пакетик (по вкусу)\nДля украшения (по желанию):\nСахарная пудра\nЯгоды свежие (клубника)" + +} +] +} diff --git a/TelegrammBotProjectByMaistrenko/telegabot.py b/TelegrammBotProjectByMaistrenko/telegabot.py new file mode 100644 index 0000000..8d5e91c --- /dev/null +++ b/TelegrammBotProjectByMaistrenko/telegabot.py @@ -0,0 +1,332 @@ +import telebot +from telebot import types + +import check_function + +API_TOKEN = '1240952041:AAGgpZ6C_-Ttga9fFgFKgdFImeV6GLcjd1s' + +bot = telebot.TeleBot(API_TOKEN,threaded=False) +@bot.message_handler(commands=['start']) + +def handle_text(message): + keyboard1 = telebot.types.ReplyKeyboardMarkup() + keyboard1.row('Поиск рецепта🥮') + keyboard1.row('Правила использования📄') + keyboard1.row('Помощь❓') + + bot.send_message(message.chat.id, + 'Готовить стало ещё проще!\n' + 'Добро пожаловать,' + str(message.from_user.username) + '\nЭтот бот предоставит вам возможность \nне только найти новые рецепты, но\nтакже сохранить их в кулинарную книгу\n Выберите одну из категорий ниже ', + reply_markup=keyboard1) + + result = check_function.check_user_exist(str(message.from_user.username)) + print(result) + +# +@bot.message_handler(commands=['help']) + +def handle_text(message): + bot.send_message(message.from_user.id, + 'Вы используете бот для поиска рецептов\n''Ниже представленны команды, которые существуют в боте:\n''/start - начало работы с ботом\n''/help - основные команды бота\n''/first_dishes - список доступных супов\n''/salads - список доступных салатов\n''/main_dishes - список доступных основніх блюд,\n''/desserts - список доступных дессертов,\n''/statistic - посмотреть статистику оценок,\n''/add_comment - добавить комментарий,\n''/see_comments - посмотреть комментарии других пользователей') + + +@bot.message_handler(commands=['first_dishes']) +def handle_text(message): + result = check_function.see_all_soups() + print(result) + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['salads']) +def handle_text(message): + result = check_function.see_all_salads() + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['main_dishes']) +def handle_text(message): + result = check_function.see_all_main_dishes() + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['desserts']) +def handle_text(message): + result = check_function.see_all_desserts() + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + +@bot.message_handler(commands=['statistic']) +def handle_text(message): + + result = check_function.statistic_of_marks() + print(type(result)) + bot.send_message(message.from_user.id,'Количество ценок "1" - '+ str(result[0])+'.') + bot.send_message(message.from_user.id, 'Количество ценок "2" - ' + str(result[1]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "3" - ' + str(result[2]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "4" - ' + str(result[3]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "5" - ' + str(result[4]) + '.') + + average = check_function.avarage_of_mark() + bot.send_message(message.from_user.id, 'Средняя оценка - ' + str(average) + '.') + +@bot.message_handler(commands=['add_comment']) +def handle_text(message): + sent = bot.send_message(message.chat.id, 'Введите свой комментарий') + bot.register_next_step_handler(sent, comments) + +@bot.message_handler(commands=['see_comments']) +def handle_text(message): + bot.send_message(message.chat.id, 'Комментарии других пользователей: ') + result = check_function.see_users_comments() + print(result) + for i in range(len(result)): + bot.send_message(message.chat.id, str((list(result[i]))[0]) + ': ' + str((list(result[i]))[1])) + +def comments(message): + check_function.add_comments(message.text, str(message.from_user.username)) + print(message.text) + bot.send_message(message.chat.id,'Спасибо, ваш комментарий был успешно добавлен!') + +@bot.message_handler(content_types=['text']) +def handle_text(message): + + if message.text == 'Правила использования📄': + bot.send_message(message.from_user.id, + '1. Для начала работы с ботом, необходимо ввести команду /start\n''2.Для поиска рецепта нажмите клавишу "поиск рецепта"\n''3.Выберите категорию, к которой относится блюдо, которое вы хотите найти,ВАЖНО,бот сможет найти блюдо в заданой категории, только, если оно относится к этой категории\n''4.Вы можете просмотреть видео рецепт блюда или просто прочиатть его,подтвердив свой выбор нажатием на соответствующюю клавишу\n''5.После окончания работы с ботом, вы можете поставить ем оценку и оставить комментарий.') + elif message.text == 'Помощь❓': + + bot.send_message(message.from_user.id, + 'Вы используете бот для поиска рецептов\n''Ниже представленны команды, которые существуют в боте:\n''/start - начало работы с ботом\n''/help - основные команды бота\n''/first_dishes - список доступных супов\n''/salads - список доступных салатов\n''/main_dishes - список доступных основніх блюд,\n''/desserts - список доступных дессертов,\n''/statistic - посмотреть статистику оценок') + elif message.text == 'Поиск рецепта🥮': + + keyboard = types.InlineKeyboardMarkup() + key_sup = types.InlineKeyboardButton(text='Первые блюда 🍲', callback_data='soups') + # И добавляем кнопку на экран + keyboard.add(key_sup) + key_main = types.InlineKeyboardButton(text='Основные блюда 🥘', callback_data='main_dishes') + keyboard.add(key_main) + key_salad = types.InlineKeyboardButton(text='Салаты 🥗', callback_data='salads') + keyboard.add(key_salad) + key_sweet = types.InlineKeyboardButton(text='Дессерты 🍰', callback_data='sweets') + keyboard.add(key_sweet) + + bot.send_message(message.from_user.id, "Выбери категорию.", reply_markup=keyboard) + + +@bot.callback_query_handler(func=lambda call: call.data == 'soups') +def callback_worker(call): + + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название супа 🍲') + bot.register_next_step_handler(sent,text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название супа 🍲') + bot.register_next_step_handler(sent, video_recipe) + +@bot.callback_query_handler(func=lambda call: call.data == 'main_dishes') +def callback_worker(call): + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название основного блюда🥘') + bot.register_next_step_handler(sent,text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название основного блюда🥘') + bot.register_next_step_handler(sent, video_recipe) + + +@bot.callback_query_handler(func=lambda call: call.data == 'salads') +def callback_worker(call): + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название салата🥗') + bot.register_next_step_handler(sent, text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название салата🥗') + bot.register_next_step_handler(sent, video_recipe) + +@bot.callback_query_handler(func=lambda call: call.data == 'sweets') +def callback_worker(call): + keyboard = types.InlineKeyboardMarkup() + key_text = types.InlineKeyboardButton(text='Посмотреть рецепт в текстовой формe', callback_data='text') + keyboard.add(key_text) + key_video = types.InlineKeyboardButton(text='Посмотреть видео рецепт', callback_data='video') + keyboard.add(key_video) + bot.send_message(call.message.chat.id, "Выберите один из возможных вариатнтов", reply_markup=keyboard) + + + @bot.callback_query_handler(func=lambda call: call.data == 'text') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название дессерта 🍰') + bot.register_next_step_handler(sent,text_recipe) + + @bot.callback_query_handler(func=lambda call: call.data == 'video') + def callback_worker(call): + sent = bot.send_message(call.message.chat.id, 'Введите название дессерта 🍰') + bot.register_next_step_handler(sent, video_recipe) + + +def text_recipe(message): + + add = check_function.check_is_dish_exist((message.text).upper()) + if bool(add) is False: + result = check_function.if_not_exist_dish() + list(result) + print(result) + bot.send_message(message.from_user.id, result[0]) + for i in range(len(result[1])): + bot.send_message(message.from_user.id, result[1][i]) + + + else: + result = check_function.result_of_search((message.text).upper()) + list(result) + print(result) + for i in range(len(result)): + bot.send_message(message.from_user.id, result[i]) + evaluating(message) + + +def video_recipe(message): + add = check_function.get_video_recipe((message.text).upper()) + if bool(add) is False: + result = check_function.if_not_exist_dish() + list(result) + print(result) + bot.send_message(message.from_user.id, result[0]) + for i in range(len(result[1])): + bot.send_message(message.from_user.id, result[1][i]) + + else: + result = check_function.get_exsist_video_recipe((message.text).upper()) + print(result) + bot.send_message(message.from_user.id, result) + print(message) + evaluating(message) +# +# def choos_dish(message): +# check_function.check_dish_category(message.text) + +def evaluating(message): + keyboard3 = types.InlineKeyboardMarkup() + key_one = types.InlineKeyboardButton(text='1', callback_data='one') + # И добавляем кнопку на экран + keyboard3.add(key_one) + key_two = types.InlineKeyboardButton(text='2', callback_data='two') + keyboard3.add(key_two) + key_three = types.InlineKeyboardButton(text='3', callback_data='three') + keyboard3.add(key_three) + key_four = types.InlineKeyboardButton(text='4', callback_data='four') + keyboard3.add(key_four) + key_five = types.InlineKeyboardButton(text='5', callback_data='five') + keyboard3.add(key_five) + bot.send_message(message.chat.id, "Оцените,пожалуйста,работу бота", reply_markup=keyboard3) + + @bot.callback_query_handler(func=lambda call: call.data == 'one') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(1, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'two') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(2, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'three') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(3, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'four') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(4, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + @bot.callback_query_handler(func=lambda call: call.data == 'five') + def callback_worker(call): + print(message.text) + check_function.add_user_mark(5, str(message.from_user.username), (message.text).upper()) + continue_working_with_bot(message) + + +def continue_working_with_bot(message): + keyboard4 = types.InlineKeyboardMarkup() + key_one = types.InlineKeyboardButton(text='Оставить комментарий', callback_data='write_comment') + # И добавляем кнопку на экран + keyboard4.add(key_one) + key_two = types.InlineKeyboardButton(text='Посмотреть комментарии пользователей', callback_data='see_comments') + keyboard4.add(key_two) + key_three = types.InlineKeyboardButton(text='Посмотреть статистику оценок', callback_data='see_rating') + keyboard4.add(key_three) + bot.send_message(message.chat.id, "Продолжите работу с ботом", reply_markup=keyboard4) + + @bot.callback_query_handler(func=lambda call: call.data == 'write_comment') + def callback_worker(call): + print(message.text) + sent = bot.send_message(call.message.chat.id, 'Введите свой комментарий') + bot.register_next_step_handler(sent,comments) + + @bot.callback_query_handler(func=lambda call: call.data == 'see_comments') + def callback_worker(call): + bot.send_message(call.message.chat.id, 'Отзывы другх пользователей') + result = check_function.see_users_comments() + print(result) + for i in range(len(result)): + bot.send_message(message.chat.id, str((list(result[i]))[0])+': '+str((list(result[i]))[1])) + + @bot.callback_query_handler(func=lambda call: call.data == 'see_rating') + def callback_worker(call): + bot.send_message(call.message.chat.id, 'Статистика оценок') + result = check_function.statistic_of_marks() + print(type(result)) + bot.send_message(message.from_user.id, 'Количество ценок "1" - ' + str(result[0]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "2" - ' + str(result[1]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "3" - ' + str(result[2]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "4" - ' + str(result[3]) + '.') + bot.send_message(message.from_user.id, 'Количество ценок "5" - ' + str(result[4]) + '.') + + average = check_function.avarage_of_mark() + bot.send_message(message.from_user.id, 'Средняя оценка - ' + str(average) + '.') + +# def comments(message): +# check_function.add_comments(message.text, str(message.from_user.username)) +# print(message.text) +# bot.send_message(message.chat.id,'Спасибо, ваш комментарий был успешно добавлен!') + +if __name__ == '__main__': + bot.polling() +#