From 76632341e5cc8279d8f9ffaed083263414d69ed7 Mon Sep 17 00:00:00 2001 From: darkicewolf50 Date: Sat, 30 Nov 2024 15:35:56 -0700 Subject: [PATCH] feat(putTogether): read db also combined --- GetSchedulePackager.py | 5 ++- .../GetSchedulePackager.cpython-313.pyc | Bin 798 -> 790 bytes __pycache__/ReadDB.cpython-313.pyc | Bin 0 -> 2542 bytes __pycache__/WriteDB.cpython-313.pyc | Bin 5761 -> 5761 bytes __pycache__/main.cpython-313.pyc | Bin 2059 -> 2068 bytes .../postSelectAppointment.cpython-313.pyc | Bin 1022 -> 1386 bytes __pycache__/send_email.cpython-313.pyc | Bin 4229 -> 4127 bytes interview_database.xlsx | Bin 5607 -> 5623 bytes main.py | 4 +- postSelectAppointment.py | 35 ++++++++++++------ send_email.py | 2 +- testhttp.py | 14 +++---- 12 files changed, 37 insertions(+), 23 deletions(-) create mode 100644 __pycache__/ReadDB.cpython-313.pyc diff --git a/GetSchedulePackager.py b/GetSchedulePackager.py index 47ce8c4..6e85fd7 100644 --- a/GetSchedulePackager.py +++ b/GetSchedulePackager.py @@ -1,6 +1,8 @@ import yaml import json +from ReadDB import ReadDatabase + with open("./MockDB/schedule.yaml", "r") as scheduleyml: ymlschedule = yaml.safe_load(scheduleyml) @@ -17,8 +19,7 @@ def getSchedulePackager(): ``Contact``: darkicewolf50@gmail.ocm """ - return { - "interviewDates": json.dumps(ymlschedule) + "interviewDates": ReadDatabase() } diff --git a/__pycache__/GetSchedulePackager.cpython-313.pyc b/__pycache__/GetSchedulePackager.cpython-313.pyc index 15ad327ae9c5bc32e8846e26841a30e10f33a98b..33a56b0a79c6a15790786b0dc835be5c4fb646ec 100644 GIT binary patch delta 394 zcmbQoHjRz_Bp&5%9fqW)!CNJh9W(9^A z7A1yY=3o|6CXhx31}26g))HD!c|6tM?0f*?$n0z)vX6hje5I-??k z4ub|%Tgt?lV&ZHsK|H^ejJJ4#QWH~L5=#=35{pwOZqtxu21jMK5D_0RnT9fk@ zOJ!ni&MlU#;{3c@Y+x&$idZJMF)6y=;;ziiDNfEvO)1SuEdrTX!~r5e8jC;ycZ*rwsCwA2TUQ@iTILXJ=s3yvnNas~BX!3}JKT J?Ocwm>;M`WOv?ZO delta 383 zcmbQnHjj<>GcPX}0}zPRd8ePB$SbMW0_03(2xbUo^kyi6(2PZlF-%Gf!A!x-rc5Bk z3=B*RMa(e_K^zkkL=~A$86kp2tig;R2velM5X>UQP{cNInkqZ%OOP7BiI+5FS%3^? zApUFxB!E^iMgwUG2x6L;Ai@(3QUM00jFZI~56NgU-(txs&d9< zIU_ZtG$(cPJ;u;_9-wM=ATE{x5)BL=-(pgd6kz1~&d$K5d6iY;S24)6 MNy3KA8@cS+0Y?c^?EnA( diff --git a/__pycache__/ReadDB.cpython-313.pyc b/__pycache__/ReadDB.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6517ae015e5bdad8f9f4a9df18d6bc76e3e95be1 GIT binary patch literal 2542 zcmZ`)Urbxq8UOAd|2H;<010OJ!U)7_aLEW|Az2%PQvwuNeCrIwWaeOBh!gwTx%Zk7 zN9%alL)vYMH>p~xRa>U*A(c7_P1DAtJv3S-?a`K#CA~!|()yA&Z$#?UK5XB)_61U@ z$MX5k`Ofcr-*>)$cekm@2{=Cb$;|5ST>$^08*|tii`~EC;$09yWM)8N49Y4jQg()$ z<`sV0qF99bxmB@>oMIDs#V%SpL2)cPMeEoC01*JXVbReGBMq^NYth{ci)^&B!8kyW z?-FgI{S-UG)Y$^8GOJ7vEP8A}S^yNUaof9p9zgpP?}T@isnZo^1-`=tV1)@fo>3ul zK~}fFp3X>blNYs`t9{xF zajL}_=DTHX2xLCSMKO9`9j2#S;rt%~3aBrCG2UdNVph>&!Ofl|+Y4vb7tZVlEc2KW z_GvGmG~2-&#~OzzM8|z5@~fzM>L14odhG|Lh>o!v=((dPqt%r0_2_7uiP@*756o8@ z8l4LtjI9F5u9$1jPV~;~y8sK?X^arTI1ItUOO$z#Fsd!r9;fZ zB&9Js#m@c-z=d&)@hU62=x?MEWdZsi9zcjO#AeeT33K{5>{)?2R#*W7C_{kxv-SM# zfq1)l6SIE^s0LPa4`M83Hh#oB6PseJ2SiT{aP|&cOdXh4do>pAGST}KqsQ!H12E5< zmD9*v%C=@DA#bo1&T23Izq@>o}X0{oDtYGI6vW1M6&Z97*X;Lxf5K43tLT5dWe+b&36jmB zUfoN~EJ;v|s=Com;lR*?6Jv|x11E2YhydT=^srpWS*4FWh z%Rj&TyVt61!zH$6h2FlB2T7pk*Vo>=_N(mAUN42W{oQxfd#}8AtLlHL6xr_SyC>f7 zsvLc#+A~_3-X0$L^XMN&w}!XY{&M=s@ML9p^8MjD{E`2qe_SX2mq| z`O2m1)r(4b?N;^Ttq)s26gOMTBa@XA=c|KLPX^~JgY(tF3y*@)8o)R^!Ils8qb&oc zD*b0m^PhI~mwve84^;glPlreD&Q-dGcKk=TB9+1LV}E!@_}1n``PS+waPd$+V_~rPkk#_EH-|*6T$cOVo#)15Y?aoM_?V-TYb)PX0jGpV^ z{w^>$>-Iz)Vs&pmM1!|mLIb_=fm4;s&I3jhEB literal 0 HcmV?d00001 diff --git a/__pycache__/WriteDB.cpython-313.pyc b/__pycache__/WriteDB.cpython-313.pyc index a93cb16d94b674f7614e89634a49b3104d0e5a05..f2c7f9530f9a0a8a86d00a82771663fb8ae33546 100644 GIT binary patch delta 19 YcmZqFZPexZ%*)Hg00h2W8@bBG05B>9od5s; delta 19 ZcmZqFZPexZ%*)Hg00dj=Hgc7V0RS>s1o!{| diff --git a/__pycache__/main.cpython-313.pyc b/__pycache__/main.cpython-313.pyc index 4cbd1bc2f68b6b8eade3b39b1edf3746d37903e0..84981fb7a041d0135ce80c971fda1b983fc9f98d 100644 GIT binary patch delta 93 zcmeAcm?FUYnU|M~0SFv=ywiVd76wpskEpaR;$j{6x$xY2GDV{uqsY8GtO>naY ja}Wz-=j3X3M}Z5R(w7-!J~Ht#a(!lIV3M7Dn%w~aZJ`~7 delta 84 zcmbOt&@I6GnU|M~0SFXYz0*Hzy<(3nsZf)Mkm}$e|NuC`v%#3?vG>b5v zb8g6kQ6X|7by!%|0S!09U4D&b9onINZKGjDr#g#JizLWtq~$XD0H)=|%1VH)sOTZ8 zhv+#(B2m{OibWIjZ#I4gYkKvnermA<>jK^Pe>Cqu4%5m(ZS1M9B88>krD~aC(+<%6 zmJ(Gkv4V4C4lb|`m?PnujeXKnhZ1m+H~D?eD=)r|3N@zg@zg>x%`;}63uD&In9g$H z2kBJ8il{1_p#!Gkh$W7?Y5Gzs#ckX5RRpY*h`H*Vk+J!BmyUWODoNLUA%v0=P&gD8eK)=ocBy$|z4q z8A6OrF(mW!mV~C;Y&EtQ2<~+EY<3r0qx`W}@Uc?mQ@xvm#nus|JO@+*_?y0e zYXX0J8HgI$X$!s7ih-eb-l3l*hQz+ziCsU6L{)g@L9?a$qU~%ephR2PRs)fKi;A|e z$eLEXu69$H4!=B7QOyl-Iflu@>CA}(L8TT#isE{cNz2IcWYSd^1^&wyP(~WW(aPcZ wY%aZ&;lm`A-NQ)0-@K73^s>p4B&+;)D0T?|r;C^9{3~{l)X6TrLY3cVDh_9Y z>Fq1ny#^0FvI2FYNEtkO3>0lLk1ebN_yvHbH49BT3!XJka2(?R%h0hqw(EQ|;(L-z zE^ciJ8DI^&GU^E#wZ|J~05~SY9O1!u>jMG}BqkbY!2XAHjBJdSLC?NmNzx!^%rJ)U zpyqhIN+fO2is6|9?jCyghLHFpJvo(3pbeoOb;V;LuJ!!xrfVrD-ly~Dxz}&Eh1Pd! z%2;w)QtUJ8S!+6=}!Y;C)U#KP1emI3@ML;l3un;&X>m5ZMW z!}a#wa*zT%A=fFwGTorxO?TgPl0G-^g5F{%O1fqsf13?zUwQ6xX=XPV7EkT)Gz*7I zgVmJ7k>k5!SgfGr{FO#%79h#ATKFE>YCX%$RTrw&^5TtE*G~97)s4i}C1vcXV*J~h uno}jiC$S`%OT94YZ;H$6D7NNr^jRz^BZPc`(?6VPQcBOob$iA#OMd`@L4ef& diff --git a/__pycache__/send_email.cpython-313.pyc b/__pycache__/send_email.cpython-313.pyc index a595e70c7b6bb49b4ccd3ae4c4475e974e23941e..def618d177026d51a08d8a8b588a18addf496a52 100644 GIT binary patch delta 232 zcmZowoUg$9nU|M~0SMkq@=jNt$a|5IXXE|DOn&L|iVV>zAPEp)XGoM_V8|1SR)_Ez z7=qhZnM@fWA_@%h48ihwLXJY|@(?$G^GdutQ delta 363 zcmbQQ(5lG$nU|M~0SH!gc&95)JrRz`)LsD8ayxCxoO^F;s|;!I%l5L!Kd6DNo2zC|wCcr!l56*fPsA zq%mqLCvpM}<_b>DODR@J-29jMKAW1fYi?p@jzV#2UWr0+X>xLEadBE{PEMslNxniA zt3qO4ioz{My~($^)(El|6lLa>+~RbtNKP#%$;{8&JcHYok;@e5I(8r~cG-NNhn-2j zhxZN#?*#$v3p%zJwC#4J9`HF}cOfw70$=b|j*uUBCcom-6t!_RW;klh_S%9#^NK(Q-{Odm&r8frjgMc+@EOQwC^7+y+T`Y^l;)(` P71>R`&u_zG3lszZ!{%Bw diff --git a/interview_database.xlsx b/interview_database.xlsx index f649e881efbe9d4ead8491d7a3aee1510cbf3657..69e0caf9ccbfc412c9acab188a2726b6890cc348 100644 GIT binary patch delta 1622 zcmZ9Me>l?#9LK-I)zV6{EykGn*-Q*QQ6j&Oan;V~rt`Bym?4D7Vr_aXiJ>NKek3(N zt~Qk)IXA`8&?4>90P9JmX7!XIrp^qrk2U`aTyEHT#ek{;xiJmt?L~s=32ffW0wX#9Gh|P|{Wb;Ky%fn^2|T; zn3*b7Yl6z>UFQ{bmmw{=F)Mkihx$f73gz+tev}ZRGV#@R<*Ul24_`yn06?J0UfHZq zyZc>Ge6>A%4R?N4z0(e9^0dj@A+E`mU&aZF9z!Ll><)c?<;Jy;gHqE7uOC#O#-w>s zGM}_)jU{bU%sapFDGBXsx_BY@w3-v1Zg-dEOgyvY!JHRw2 z`mpIwoa!ctmTltig_e=mBgui|U-SJ_Xk4S^EV}Kj}qPgZ~^?m6g5I zW`Jtl-!0``winMVhd8+_cnO_X<9484#L=4DVDCW_R3hWD@rqeK*+%LX#9E|nA4X;v z=4NDOdP?7^MYszHt1-FVvXc;Ll7%kwesg$gw5<^_$hruPt>o2uyf1j=6j|>!sm4V3 zuHm&GPU?{#B<;lEUB#(p>o-GJjq+)SU^?7bG`-M}Ze(-9w1uN-U4wfh3HR)Esg|Km zq)(Okc>atjZyM*1;MJ?KwDDh6oYNw0LMPAI?ysUQ6GKEnf%A9$zky!PIT!Zg$?dT7 zHVY0temOxOkE7L@bGY+c{1$YJY-AUsni(TvV|eOu>}~V&R#Qlli)_iy0+W&9I%d+7 zEBX|bVj^nToPZ3g-35b79}iF?qPFTBlf0{0NSQdzjq2}{Hug~%G~KAqVN16ELwRzV z88i0ND9%1b@a;Y_+kIv-AmTGb!CTaQEQaVpdn2ld%dQNPAt5C6;J7@PamKhpj$qs+ z-`I+X@wg6cY{NFaY4OHyVh>m3C34%w-t(TGKzUc&2ui1iDva{s8$S@+2b zj+T;j!t%v+hFvtC{PBlpu%kG+l(#mcF&ktXf>v`RK zZ~FN-ATmMvIiIGA3CjRZ%@sP z6xEK#4!zAMw52AFIFd)`w`#Jc8`>wD*Y;9rB-wgb;!08TlcN*_4*Ztj*Itp~T+5Q} z$I#;`2#)K0#~HU)f0vcyx=srsRMhR$7)Y~Uak;t{N>b2SLUfNH{%~tuNrvgB5?ELG z@Np+vaWVof0Q0@;+)J1BCAa3e*`Zz#bAglfO?-PenAtJb833syK@=SAPFB~BU<+o7 zy~Sj-?ou*IHpH6ZKAvRmUMJTNalh*ym?`HCWqKs@c9xV*=!KeY8k-xMsi>aAf19@^ zEye%3&Wg+-UclO&UDU(WFRVJP-tx(p7{IlB=X+*Pd+(xa7(6eBHT^YM65DFFnEA AV*mgE delta 1606 zcmZ9MdpOez7{`Az*R_~k%CgNR8>5)B3X@!pN+>x>sjYG=C3D$C?eHtdt%x*tN0BZx z#tb#-qFJO)y3L(KqjFafB95Ks={)D0_n-IqzR&x9zt8jj@tHCCU;^Lm0#!r<0H6xE zhNr>nRb9iQy`0~kd7mcL1>IsP2+2cOzxsNAqF^X&chPDK^E5|U8CiI*VbSFv^jFS` z%2DQ2UuZAqOI{8fl?jveNw6zS*?nC59b+XGT~k^yH&joDDoUaVC|WK@hSm_URs2M= z11ffkG8kF4Ztz@@T6RZ9wrP`Rsnh)606aiRK@G;9EN)uCegP_nG%s~ftOLU)dvb^8 zw@f^Dh>Jyr@&U2F>dk*-G<@UX#W#iuhRc(DiDM;d`UUbe$((n zSsfTac$0gi@+s{1wA*@063qHwTT<)ZC2X;4*VsJ}kyP4%3jNtgB+|VCY)lH~b|>`c zcVC=FMfkqfB4TAF+o)64=7DW3{D+W#KS~H!=vPvgzslfqT)_eq0LC=A^C|=|V?Tpc zvCXp5$7-@)K@GRYUCnXVX-0yA7Hij!p-kHQw)0s&S*+8K4?X`HkYJI$BvJw3W0{8Q zo#|4gGI+dDbb931gKk6z&xO5xzCBi(EIXN$dbP%q>#GhkU54`R&MMv_ITWo!q^mC8 zmk~*R%tb;>CFqX|ZNGqM8vnHKo{E)@ZbZ_Fy6XcI`h#=b$vf9durv^{=#ZK^JB5!j zxsGj<%Km07apn)^^|h zF({Xir|%p+M`ITaa75DPSFu?e1en?J9mz;+{v~(n(?8Oi$PB%dRn%>%%BVp*6LscR zKLgwVI>SjCPrZ8pNCC}&*khYiNai(M)G%LX8rq4GzSxh~Lb~s!teeMf!kIG{Vk3Oxper93_IR`XFD3L;Y+UA)etPhvh@k`b5_mq4b=ixSG(x)lZ*{M$2o^*?GcvL`TN?`eQ%zCd5Kj#AL-;7eDC=|YwsCU zzJ=FNZs~FUiO_N$824>r7Mj6{DT~d#{W5@4=#142GAq{kI9)8>;?XpHp}w=UIZnO$ znseL;KaOcFJjUmgjr1C|-RCi8_V79GA^lY;kr(&arg0c^Cf{(My;Qy@EJpZtU)HaW zPu#bYmsAKEE86%m@D|F=F6o&Gxcaqr&caeBnB#+qhIg;f*AwsC3)d38D0AWV83cw$ z&Xuch^2Ny4*FrKLv#u*aQS=Z0jJ6JWThG()hUf z6j*LYK`Z0E4r{Tqdnu0M)GeXf@%ypLGy3pPQt!labuo>g{;5i8gTKK!Q$1edY%!W* zR<(;$)tMhv7Ag4z6)@bT%JtYIq|9~$;d{J2wU2Ff$Mj&c_lI>FtmI#wJ3{C!MuTI0 zZ5*z+x1jV9CM&N)B)XL>h9ZJ%+Q$&uS0qdS0fjkySV6%xoQv1^u-t^oh*J=`jMkLN zr7zO;Zz(`+{s+9=X_SS0#T0G(f5LFkmNs(eAk8eS>lFY%00)4T%k2J9XCav7N#sd0 z7W?!`f0k)v(8=8{5Ct^w1Mu8QG!6pcuEea7Cy+5X$S`*shM+4qrH;sI%a)zyApo%E ihvRZT3-Qt9rfA~01sJ&eiobldo%;+!Qs$!MYkvWBG1AQd diff --git a/main.py b/main.py index 10966e9..07a7486 100644 --- a/main.py +++ b/main.py @@ -29,8 +29,8 @@ def get_root(): from GetSchedulePackager import getSchedulePackager -@app.get("/getSchedule") -async def getSchedule(): +@app.get("/getAppointments") +async def getAppointments(): res = getSchedulePackager() diff --git a/postSelectAppointment.py b/postSelectAppointment.py index 5d92867..475c07f 100644 --- a/postSelectAppointment.py +++ b/postSelectAppointment.py @@ -1,4 +1,5 @@ from WriteDB import AppendAppointment +from email_validator import validate_email, EmailNotValidError def SelectAppointment (appointmentJson): @@ -15,17 +16,29 @@ def SelectAppointment (appointmentJson): ``Contact``: darkicewolf50@gmail.com """ - - - status = AppendAppointment(date=appointmentJson["date"], start_time=appointmentJson["startTime"], interviewee_name=appointmentJson["intervieweeName"], interviewee_email=appointmentJson["intervieweeEmail"]) - - if status: - resBody = {"Success": True} - else: - resBody = {"Success": False} - - # resBody["message"] = appointmentJson for testing - return resBody + """ + { + "intervieweeName": "Alice Johnson", + "date": "2024-09-16", + "startTime": "10:30:00", + "intervieweeEmail": "darkicewolf50@gmail.com" + } + """ + try: + validEmail = validate_email(appointmentJson["intervieweeEmail"], check_deliverability=True) + if validEmail: + status = AppendAppointment(date=appointmentJson["date"], start_time=appointmentJson["startTime"], interviewee_name=appointmentJson["intervieweeName"], interviewee_email=appointmentJson["intervieweeEmail"]) + + if status: + resBody = {"Success": True, "validEmail": "true"} + else: + resBody = {"Success": False, "validEmail": "true"} + + # resBody["message"] = appointmentJson for testing + return resBody + + except EmailNotValidError as e: + return {"Success": False, "validEmail": "false"} if __name__ == "__main__": print(SelectAppointment("10:00 AM")) \ No newline at end of file diff --git a/send_email.py b/send_email.py index e450ac1..888ce36 100644 --- a/send_email.py +++ b/send_email.py @@ -78,7 +78,7 @@ def send_email(interviewee_email="darkicewolf50@gmail.com", interviewee_name="br server.login(gmail_user, gmail_apppassword) server.sendmail(gmail_user, [interviewee_email, static_email], msg.as_string()) server.quit() - print(f"Email sent successfully to {interviewee_email} and {static_email}.") + # print(f"Email sent successfully to {interviewee_email} and {static_email}.") except Exception as e: print(f"Failed to send email: {e}") diff --git a/testhttp.py b/testhttp.py index ff7d9c0..d65f6d4 100644 --- a/testhttp.py +++ b/testhttp.py @@ -8,18 +8,18 @@ def BenchMarkServer(): #print(json.dumps(res, indent=1)) def BenchMarkDjango(): - rawRes = requests.get("http://localhost:8000/getSchedule") + rawRes = requests.get("http://127.0.0.1:8000/getAppointments") res = json.loads(rawRes.text) - # print(json.dumps(res, indent=1)) + #print(json.dumps(res, indent=1)) if __name__ == "__main__": - test = 0 + test = 1 if test: - djangoTime = timeit.timeit(stmt=BenchMarkDjango, number=10) - pythonTime = timeit.timeit(stmt=BenchMarkServer, number=10) - print(f"FastAPI: {djangoTime}\nPython: {pythonTime}") + djangoTime = timeit.timeit(stmt=BenchMarkDjango, number=1000) + # pythonTime = timeit.timeit(stmt=BenchMarkServer, number=10) + print(f"FastAPI: {djangoTime}\nPython: ") reqbody = { "body": {"message": "hello"} } - rawRes = requests.post("http://localhost:8000/SelectInterview", reqbody) + # rawRes = requests.post("http://localhost:8000/SelectInterview", reqbody)