From 377edf613c1395af5a782a5f2209f1242d629d5f Mon Sep 17 00:00:00 2001 From: Anna Cho Date: Wed, 12 Oct 2016 23:28:54 -0700 Subject: [PATCH] try know to do --- .DS_Store | Bin 0 -> 8196 bytes Assignment/.DS_Store | Bin 0 -> 6148 bytes Assignment/HW5_SQL/.DS_Store | Bin 0 -> 6148 bytes Assignment/HW5_SQL/HW5_Starter_Code/.DS_Store | Bin 0 -> 6148 bytes .../__pycache__/config.cpython-35.pyc | Bin 0 -> 321 bytes Assignment/HW5_SQL/HW5_Starter_Code/app.db | Bin 0 -> 20480 bytes .../app/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 405 bytes .../app/__pycache__/forms.cpython-35.pyc | Bin 0 -> 1243 bytes .../app/__pycache__/models.cpython-35.pyc | Bin 0 -> 1655 bytes .../app/__pycache__/views.cpython-35.pyc | Bin 0 -> 1845 bytes .../HW5_SQL/HW5_Starter_Code/app/forms.py | 18 ++++++--- .../HW5_SQL/HW5_Starter_Code/app/models.py | 34 +++++++++++++--- .../app/templates/customer.html | 34 +++++++++++++++- .../HW5_Starter_Code/app/templates/home.html | 30 ++++++++++---- .../app/templates/orders.html | 26 ++++++++++++ .../HW5_SQL/HW5_Starter_Code/app/views.py | 33 +++++++++++---- .../HW5_SQL/HW5_Starter_Code/schema.sql | 38 ++++++++++++++++++ Labs/.DS_Store | Bin 0 -> 8196 bytes Labs/Lab-SQLite.zip | Bin 0 -> 18405 bytes Labs/Lab-SQLite/.DS_Store | Bin 0 -> 6148 bytes Labs/Lab-SQLite/Untitled.rtf | 8 ++++ Labs/Lab-SQLite/app.db | Bin 0 -> 3072 bytes Labs/Lab-SQLite/app/__init__.py | 8 ++++ Labs/Lab-SQLite/app/__init__.pyc | Bin 0 -> 423 bytes .../app/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 385 bytes Labs/Lab-SQLite/app/forms.py | 9 +++++ Labs/Lab-SQLite/app/forms.pyc | Bin 0 -> 718 bytes Labs/Lab-SQLite/app/models.py | 24 +++++++++++ Labs/Lab-SQLite/app/models.pyc | Bin 0 -> 912 bytes Labs/Lab-SQLite/app/templates/base.html | 14 +++++++ Labs/Lab-SQLite/app/templates/customer.html | 31 ++++++++++++++ Labs/Lab-SQLite/app/templates/home.html | 29 +++++++++++++ Labs/Lab-SQLite/app/views.py | 29 +++++++++++++ Labs/Lab-SQLite/app/views.pyc | Bin 0 -> 1350 bytes Labs/Lab-SQLite/config.py | 9 +++++ Labs/Lab-SQLite/config.pyc | Bin 0 -> 491 bytes Labs/Lab-SQLite/requirements.txt | 10 +++++ Labs/Lab-SQLite/run.py | 2 + Labs/Lab-SQLite/schema.sql | 9 +++++ Labs/Pokemon.db | Bin 0 -> 9216 bytes Labs/lab-SQL/Pokemon.db | Bin 9216 -> 9216 bytes 41 files changed, 369 insertions(+), 26 deletions(-) create mode 100644 .DS_Store create mode 100644 Assignment/.DS_Store create mode 100644 Assignment/HW5_SQL/.DS_Store create mode 100644 Assignment/HW5_SQL/HW5_Starter_Code/.DS_Store create mode 100644 Assignment/HW5_SQL/HW5_Starter_Code/__pycache__/config.cpython-35.pyc create mode 100644 Assignment/HW5_SQL/HW5_Starter_Code/app.db create mode 100644 Assignment/HW5_SQL/HW5_Starter_Code/app/__pycache__/__init__.cpython-35.pyc create mode 100644 Assignment/HW5_SQL/HW5_Starter_Code/app/__pycache__/forms.cpython-35.pyc create mode 100644 Assignment/HW5_SQL/HW5_Starter_Code/app/__pycache__/models.cpython-35.pyc create mode 100644 Assignment/HW5_SQL/HW5_Starter_Code/app/__pycache__/views.cpython-35.pyc create mode 100644 Assignment/HW5_SQL/HW5_Starter_Code/app/templates/orders.html create mode 100644 Labs/.DS_Store create mode 100644 Labs/Lab-SQLite.zip create mode 100644 Labs/Lab-SQLite/.DS_Store create mode 100644 Labs/Lab-SQLite/Untitled.rtf create mode 100644 Labs/Lab-SQLite/app.db create mode 100755 Labs/Lab-SQLite/app/__init__.py create mode 100644 Labs/Lab-SQLite/app/__init__.pyc create mode 100644 Labs/Lab-SQLite/app/__pycache__/__init__.cpython-35.pyc create mode 100755 Labs/Lab-SQLite/app/forms.py create mode 100644 Labs/Lab-SQLite/app/forms.pyc create mode 100755 Labs/Lab-SQLite/app/models.py create mode 100644 Labs/Lab-SQLite/app/models.pyc create mode 100755 Labs/Lab-SQLite/app/templates/base.html create mode 100755 Labs/Lab-SQLite/app/templates/customer.html create mode 100755 Labs/Lab-SQLite/app/templates/home.html create mode 100755 Labs/Lab-SQLite/app/views.py create mode 100644 Labs/Lab-SQLite/app/views.pyc create mode 100755 Labs/Lab-SQLite/config.py create mode 100644 Labs/Lab-SQLite/config.pyc create mode 100755 Labs/Lab-SQLite/requirements.txt create mode 100755 Labs/Lab-SQLite/run.py create mode 100644 Labs/Lab-SQLite/schema.sql create mode 100644 Labs/Pokemon.db diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4aeb6bf9c199d6bc8770fd808dbc6990f612a8ad GIT binary patch literal 8196 zcmeHLPfrs;6n_IKTM)ba6EGe&5)%@L;jbJFp%#cXXsDK85wPsGL)oz1X?C|%sF;2Q zkDB-aJbCcw7tl}O$@mfU>Pg?sY)dV21*7wtdB542_vUqfeY3N#06^lU+yuZN0BG1a z>Yb?mAbg&;6Vein@JWLH0C{ks02Fm_!deX|1{4E|0mXn~Kr!$)Fo0(^7wwdDU(PD6 z7*GuSmkjXdgMp1>EX1lr@#sJ$N&v(*92SCotOJCP5n?RFszl+6Ys%_@gsvnkF^F`> zd4roH#zL%0lZb3OT7m3&BwNzW92w2xjA2~lQe@}^o>L!S|pZXF$I+Q5y8xx{wi;IQ)i=*25>J3zwc3Pj~~UB5o< zX7^K`>o7Nu^W3)$?t=*y_)WyU#koe}>URGsS@j#Vv-@E-koUE0_^Ru*e28>(Uh29W z)w_FoyZgHP`}?m9^bZbQ9m?pvmYLnld;FJOU=H)*PKj>hJv)~wnpxY;rvv&dNZE%p zqxUqKKBBp&$3v?JMYQQV9uUjj^(b}4dMi6SJ`K_tJ?dvY<~T{_+kws8^@iE?O&>Eh z5zs=y-C-DUA9Hf0$j$sU>iLK#{L|~E=b3Jv#t*g})1uCb8)rel3TZpbT=~tTVp+UQ zdXz6YJpUat1!Xw4TnS9khaCtVjKh2-UXUt@}t_owvCMox2sANE~vz5jws4;#IPI}wg#GVpIC@hi8z9y OUIYXUN+|};l!0F?#yKef literal 0 HcmV?d00001 diff --git a/Assignment/.DS_Store b/Assignment/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..54569409e2a4924acbd84235bed8be08d5399702 GIT binary patch literal 6148 zcmeHK%Wl&^6ur|1>NEn3gw!sF1rm#Z(xf2^gk+^bqNqrKBf0>T+I7@gb?qp28XyFD z!#@Cjz^Cv9dQk??Vr-%{Z)h$cNj-We1P8AE9mAKW7aXA7;}qU{Ce~pGfHWIxy8VcPEhX1 zx{wYiF3jmGqR!9B#t6IAK*Yx~S{HFTNIlv?tdz1vK3gmBuS)(V`nzC_Fo%HlDUyCr z;C?J{S0uM7xzCE~u^)f#?T^!e*7}=2h{80h)xNW(<m6u)ovIE$+(@2;vkiAo_g6KxaD%$ zD);R5$)w(FR(ZYEm{$3u)v8tbX5-#;YFTTyHXdy69lw1yc|ZN|8IJ^G;?)YfreKzT zfmaZvupm}(aP-N8$YLShrHtMbUy)pPpXQd`EWB~fqkw){R^>co!!ZgN1unD#Vt?RB z0v(OHLb-JylUD#>3Dwfzi$4g0!!bl4b1!zkTRIeDDY1e_yv_Ew$%Ut literal 0 HcmV?d00001 diff --git a/Assignment/HW5_SQL/.DS_Store b/Assignment/HW5_SQL/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a2e36a6462c27130ee355fea1b5eeec8c3e453f9 GIT binary patch literal 6148 zcmeHK-D=c86h5&D}C>W8RJ_p|kTR=n>{Ipj~=Ft2CmR-tA=aZIsCf z9QDCGg+KhQ4UuZwrhUx(5Ui3yd|1l*O_&@%ZA64U#9sg%E%F=P!?fzno zrRJ^McR1%Qez)}|IFeORhUH{D2#W(RRw(xe);mp5fzhH0J@XVPEq zr+F-^ft=*=SoiZXERVqTJdbG*o7<7|hVoE^MA} zu{LPv#O&pR*^!yOp)fr<`WHH#m~YUPP64ODc?FhCwXOF5=a=9A&y!ruDc}^iQ3|l; zRWcuGN_w_@a~t#}2l4ede&K;L3*5G^ow5YRHX!YS}i G6*vJvUw2#p literal 0 HcmV?d00001 diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/.DS_Store b/Assignment/HW5_SQL/HW5_Starter_Code/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8b9dd98627c520d8f9f732b05f23c7f66eb56bab GIT binary patch literal 6148 zcmeHK%Wl&^6ur}g)=ofpfz&R&L1GbAX-mlhAz7g;x(#DcwyRl7LLXbE7 z1MmlY3SYp7@Bwh<0mOFMMu6r@Gw06CJ@Yuu%w&j&_4CmlkwruX631o>*%ijyd8*ll zs^L5)`WTW&Lz>W-+*-7*&mG;k&<|rD5jY;$Ht@rD zVPX*t#3q!Kqv$@`?$o3Fd77xczW7NPq*=H7m2EVd*EY8d!)O~f+OGzacs|IyEKmF1 z?1d-=qp`32CvhD9@;(1qFrK^Ct%q@xc|kOut%SdP9z>&f-jDNWl!|^Hd)WkB(=-j! zwRRSZ{lmkKz27@ncI-v3*X`JM5AH3OhOvEn@4@lO^zzN(?eg76u}oq(+JxOy_!B8jX)T&IaI)jE~j`#qp9E)Z+XwNCfDBPPO zMU+vB5i`1=tipd^8FLe?9E>aG$G%l!Tj*6D>{ER9U6jr#EcY)y{pt_oIz1Kh2{4-w za~pv-gMV7#aV=JPC~8}W0_ultwAV419z!dj75JwV;OB#l#L-b$NEAm0GVufeHc>4M zK7UJaj;+v9SV%+*j7cg`Qki;UFiA(ft>PSog+xgwrXC+mjm*>wg^AJ8zb(RvITCfQ z70?Ql6==w!#qa+|e}4a$NxGyJ&`wX hSUCJD-a!(EHk&&@M`0lmH8A~0K**pot-x9p_yKgNywLyv literal 0 HcmV?d00001 diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/__pycache__/config.cpython-35.pyc b/Assignment/HW5_SQL/HW5_Starter_Code/__pycache__/config.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..172ae63e45e4201129c09755fe8dc536bc1158f3 GIT binary patch literal 321 zcmYjNO-sW-6nyzG3B`g3@z|r#LtH#~5fN*eq8KVRkzg)M(!9o$O}1ncC0_kC{uuv2 zuAcl09>k4B@G)=RFfa_fgW+%xynly>3cv^a8%^p9x#Cn(Dxm-ahyV~^t-xCS6B?in zuS$<-2T~Ox15ynlvyb>={Zr;)9=z*TMY81OD$kBKZD*Yo TJZ%`B%SVAQB<(6A!%%(zrl?in literal 0 HcmV?d00001 diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/app.db b/Assignment/HW5_SQL/HW5_Starter_Code/app.db new file mode 100644 index 0000000000000000000000000000000000000000..a5e2f48528adcefaaf44022af31c3fd621ee7bf1 GIT binary patch literal 20480 zcmeI(&u-H&90zcxP1mhj@mMugQ#BE3LM#$PO*Yc5JcH!q~~U6nzC00bZa0SG_< z0uX=z1pXU=lfIcP+P3k0Q?jErcYC1>I$YEP(cmIk%Ix0X+d15`4tH+v?^($@Ya_Sd zH7w7U{Fn=?E4&U9ed{6bU(GEH`l_E-tI%2NL{#m3xOeR9W*bo>+Y-FV1@~PZT7zJC zUZ;ABw~6(dXcomcqKq1howHAt(%Itbs&VpcF!y2S!}oMzuEUs~;~*EC%GgYO*5UP_ zS?@9-EyJl?t-C>kThTon zCwYtLgEe!(<7*RN^C&*Pcz2C#ac#{wRpX3(aHFeJ39Bfov7-F!Rcv}9ly$w96Vq(7 zSv79Z=`w#3hIg3Pp6I9B3jDF&bGF`_=V+18uk<5*N8i%d^d)^nAJ980hy(!$KmY;| zfB*y_009U<00I#Bw*|_%ELkaBa!NbC&vskEfqFnCTb_R$Mw!}Co3*Z~9k^4eZe72z zy}Xbml+qG)Dvncg1~tp`Q)1aEvAMHY)u~m6Z8KA1=47mp*0GEFzSYXs=*ETAw4gC1 zIQVX!ej@Y-{YJm23=#w&009U<00Izz00bZa0SG_<0)LUfqG^(q75$V#A9HC_JtlCR zxzy-v49|N1pP_FE{Z2pA5A?mtB0&HG5P$##AOHafKmY;|fB*y_@TUY;GxMaNQjw^C zXPmum-7If!<;{8h(*sJ0qf$y*AcsW&iyg>)r!e%Lc)KL5{w%--revazSKkesFH2A@yTl1 zQkIEEDH}goE=|il@6Jr6WtA>4t79)u4JXwE1aDwEjyw3h6?Ybm6{rif7H3tq(pc73 zTwafpbpJq%tS#oH)5OK}P}1DnvrbHnMxN5Bf_e%mi?XPt94^;Q`-pz9Qh3a$gAEA= LY~c0Sfc3mT>lS2g literal 0 HcmV?d00001 diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/app/__pycache__/forms.cpython-35.pyc b/Assignment/HW5_SQL/HW5_Starter_Code/app/__pycache__/forms.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fccf18d79931a03fecc45ea35c61522b97796e9a GIT binary patch literal 1243 zcmbtT&2G~`5FRH^>^M#vN(qHG$bncKdPAtFrKM8U3L;d=m(>z)QVaiecU=hA@-n>A zUV#IzzyUF{X%C2W{BHpSnUw@asSZkUJ1N z;E>&btO0ow;wI!S#O{J^Le_%34RL#6yO4R1`w;u!93?GC+VB;V+aMgc#^eqhB_1Tc zW&I@^K+=KnF!+UM!_YDAVJY)r!*s`5rp4?q6kk-PW;C0T^Y-xoDT=RG0 zvQDK)CbZA;x$O)b00Gnx_7gWiG^tB$Ot^3jFvAKRCvI6DT`N4cfTX*|dmwzEPFLbP zHom>a2bM<-R^q#s$E{ZQ(DI!%zGrzLvgsfA?wSa-y$Dw?8HYE;dohr3d7Y8xSRcGf;N;{N&D!<7G-KODaCuw^=D zGP$|D&}vprS%vk=4(@NZb6(U_KGC(r25wxZLr*?LucWHwBZ51bpOE>K;8wTA>M?OU z2qdeb*N7Un%;~Tj_og@^A4lS|9(~eN*+75n;fkbMY)>iirVV507+vT*+qL%?Z`}lr j?nZ8L=_If{;=XE(|6(yUFY#3dMYGX&22S7UHwNKfXBG$C literal 0 HcmV?d00001 diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/app/__pycache__/models.cpython-35.pyc b/Assignment/HW5_SQL/HW5_Starter_Code/app/__pycache__/models.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0b03b2635196df32048e803e885014cc701c2382 GIT binary patch literal 1655 zcmaJ>%Wm676ulHh>P4l9;~0IS?9MFI2x-t=kq1%(F<>~2<-~zD1VfG*8hj`-!#Xx7 zAb<;W+3)Bt^iyWrRezzI_RLVRq|_*-xjJ(-bLZZ}b7yBb?7#c!pOZfvqCaWvX#qdP z5ZWa8T9gq@ElOIH*z^l9K${ZBV4D(`l8(V}b}8u@?C6b?p#K-5&|%!yKX`^1H!vP! zh+knO(J5kEbZOCVZ)nk{x=*Jqx+Gc*s2G^qWbf$M-#c^Fk zWzM+2J4?BcVG-qQeth2CnaP>!iWIi?DAV>3C`*2yWyB&YY74a>_;q zFcqJ63U(F({7(E9-tyl+j-Lz0#hB%3c0T^0jH{d#QjGVX9z?IcxjTL&MEX;qed8x5 z--VNB2hFdHxMVzhjMB$=J>wi86L;q4YLFI)D8nR@k*(FFWkszm%d@_;`o{9x@Wfis z`e|bfFpTu}0XC#}j}{PD>%H_K9(zN2GpI`|4l5ePt&7KAiDz&9C6_!w(f+QlRTGx8 zaE@|DejXLoEQ)2tQQFeGp_m|WxK5kv!njVHqfLpsFhN^+>*3V)b>a9;y?#p@&3|LI zfz)uxTa%maN7038nA@@V$H1|6=trO5!!Vp318i`1pB9bB^k)dp(9DLN1$xz@Q(OX| z4Zt=1+#-oyG#+b7A7+zajlLbhGDz6}+Mn?v5U%!P#-2xJ$csn9!V1vtAh8yQy{%TD01MJ80VS(QzKk5ZXX9XxhwgSD zquo>ZGyDpE0{1>4aoWGI7pN+ahbZxk%b&ZetLyPqdv`eOMfd+bz1Ic!2X0(G;;-=5 zf1}9oFQ5P@1;heM2Vw_G7h)F#%{fqbP_FVXITtbyiY}A^!~v8c#9=e) zL*c`T^x&cgSqH8KWL?Mt_#FtxeOOI}kfA~!vH`qwa7tuD$TnKFL8~@m3uDOMX{Uzm z)aD%vTaazHY8#O4!0}}F4MqtQ*N&8&XHrd#EEh#$qz#nJawSt^yGs62OKnigO%@B= zDXUBt+B(_U8$qibJ282a(V zIb4pTR7u=@ny&0kgmO{q4^TsVuy}hEz0gwWNS1kV6@62sbt&gYM?V}rPtLyhGWuHU z{N1Pmh0k-aJjB3`Tf>-bWZmbeYRv^`pg=^>YmUw}4zC-@s8Lly{x6-BOzK zD$~||_U(!FempupSx45#C3JISe<8rgt^r;HyaKoogw>yn9k_7ewP1`qK!rCt9c_r8 zxTc;Pb!CHPzL=(1)VQC|kr-x5=9xB%$~oz)EqtgQ67Q0DkHq^VJ|MA2VxPo^B<_*; zh{T$5Y6D;G=oU8zIH*Y*oKOs$fw=p7D0)JDj2bsmw`L4E*TI_^^BBRJF-E`zHa)UO zfLT=lYvWOEuqap&steW0Y3g#0y~l-!gSIZVQ&AV{i63t&X;dyR|8Fa;XyX{0el^kP zV&YYfN#(RTv6I&7KI+|0#5l_}9uimUE~RX7H-n3rz?eg!KEbi&PTS9HKYD`1sO8g? zP7S)e)y)|=#g|nEkg1q~re~fpZh8ho$ML3TTrfytCiJz_aJRGOE*_~3cPU4AxZ7`{ z<%BUeCV`@}NNuCA1LEkknoSpYUZ`Cf+AfoMJxfwkD?C6}Q}J*`x5nBH!g*d^cxd-9^lB~WMusrw#(04nPw--ouZEwmr~(p48K3r zg_@g?1G2uVYCQAkIAa=eRoLbYXV@)fc<=;|_PUTysX*+_zStMLPS4%*9&GJ}{{g)_ BnFas= literal 0 HcmV?d00001 diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/app/forms.py b/Assignment/HW5_SQL/HW5_Starter_Code/app/forms.py index 452f61b..f3db217 100755 --- a/Assignment/HW5_SQL/HW5_Starter_Code/app/forms.py +++ b/Assignment/HW5_SQL/HW5_Starter_Code/app/forms.py @@ -3,10 +3,18 @@ from flask_wtf.html5 import EmailField from wtforms.validators import DataRequired -class CustomerForm(Form): - company = StringField('company', validators=[DataRequired()]) - email = EmailField('email', validators=[DataRequired()]) - # Add additional Address fields here +class CustomerForm(Form): + first_name = StringField('first_name', validators=[DataRequired()]) + last_name = StringField('last_name', validators=[DataRequired()]) + company = StringField('company', validators=[DataRequired()]) + email = EmailField('email', validators=[DataRequired()]) + phone = StringField('phone', validators=[DataRequired()]) + street_address = StringField('street_address', validators=[DataRequired()]) + city = StringField('city', validators=[DataRequired()]) + state = StringField('state', validators=[DataRequired()]) + country = StringField('country', validators=[DataRequired()]) + zip_code = StringField('zip_code', validators=[DataRequired()]) class OrderForm(Form): - # Add order input form fields here + name_of_part = StringField('name_of_part', validators=[DataRequired()]) + manufacturer_of_part = StringField('manufacturer_of_part', validators=[DataRequired()]) diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/app/models.py b/Assignment/HW5_SQL/HW5_Starter_Code/app/models.py index 07d1938..ee8c3b4 100755 --- a/Assignment/HW5_SQL/HW5_Starter_Code/app/models.py +++ b/Assignment/HW5_SQL/HW5_Starter_Code/app/models.py @@ -1,13 +1,37 @@ import sqlite3 as sql -def insert_data(): - # SQL statement to insert into database goes here +def insert_data(first_name, last_name, company, email, phone, street_address, city, state, country, zip_code): + # SQL statement to insert into database goes here + with sql.connect("app.db") as con: + cur = con.cursor() + cur.execute("INSERT INTO customer (first_name, last_name, company, email, phone) VALUES (?,?,?,?,?)", (first_name, last_name, company, email, phone)) + con.commit() + new_cur = con.cursor() + new_cur.execute("INSERT INTO address (street_address, city, state, country, zip_code) VALUES (?,?,?,?,?)", (street_address, city, state, country, zip_code)) + con.commit() + +def insert_orders( name_of_part, manufacturer_of_part): + # SQL statement to insert into database + with sql.connect("app.db") as con: + cur = con.cursor() + cur.execute("INSERT INTO orders ( name_of_part, manufacturer_of_part) VALUES (?,?)", (name_of_part, manufacturer_of_part)) + con.commit() def retrieve_customers(): - # SQL statement to query database goes here + # SQL statement to query database goes here + with sql.connect("app.db") as con: + con.row_factory = sql.Row + cur = con.cursor() + result = cur.execute("select * from customer").fetchall() + print(result) + return result def retrieve_orders(): - # SQL statement to query database goes here - + # SQL statement to query database goes here + with sql.connect("app.db") as con: + cur = con.cursor() + result = cur.execute("select * from orders").fetchall() + print(result) + return result ##You might have additional functions to access the database diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/app/templates/customer.html b/Assignment/HW5_SQL/HW5_Starter_Code/app/templates/customer.html index 7b7ef62..0a09e37 100755 --- a/Assignment/HW5_SQL/HW5_Starter_Code/app/templates/customer.html +++ b/Assignment/HW5_SQL/HW5_Starter_Code/app/templates/customer.html @@ -10,6 +10,14 @@

Add Customer to Our Database

{{ form.hidden_tag() }}
+

+ First Name:
+ {{ form.first_name(size=120) }}
+

+

+ Last Name:
+ {{ form.last_name(size=120) }}
+

Company name:
{{ form.company(size=120) }}
@@ -17,12 +25,34 @@

Add Customer to Our Database

Customer email:
{{ form.email(size=120) }}
- +

+

+ Phone Number:
+ {{ form.phone(size=120) }}

- +

+ Street Address:
+ {{ form.street_address(size=120) }}
+

+

+ City:
+ {{ form.city(size=120) }}
+

+

+ State:
+ {{ form.state(size=120) }}
+

+

+ Country:
+ {{ form.country(size=120) }}
+

+

+ Zip Code:
+ {{ form.zip_code(size=120) }}
+

diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/app/templates/home.html b/Assignment/HW5_SQL/HW5_Starter_Code/app/templates/home.html index 612900a..6f576c7 100755 --- a/Assignment/HW5_SQL/HW5_Starter_Code/app/templates/home.html +++ b/Assignment/HW5_SQL/HW5_Starter_Code/app/templates/home.html @@ -12,24 +12,40 @@

These are all of our awesome customers:

+ + + - {% for customer in customers %} + {% for cu in customer %} - - - + + + + + + {% endfor %}
First NameLast NamePhone Company Email
{{ customer['company'] }}{{ customer['email'] }}{{ cu['first_name'] }}{{ cu['last_name'] }}{{ cu['phone'] }}{{ cu['company'] }}{{ cu['email'] }}Add an Order

Orders from Customers:

- + + + + + + {% for or in orders %} + + + + + + {% endfor %} +
Name of PartManufacturer of Part
{{ or[1]}}{{ or[2]}}
diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/app/templates/orders.html b/Assignment/HW5_SQL/HW5_Starter_Code/app/templates/orders.html new file mode 100644 index 0000000..c6bdd6c --- /dev/null +++ b/Assignment/HW5_SQL/HW5_Starter_Code/app/templates/orders.html @@ -0,0 +1,26 @@ +{% extends "base.html" %} +{% block content %} +
+
+
+ Home +
+

Add to Cart

+
+ {{ form.hidden_tag() }} +
+
+

+ Name of Part:
+ {{ form.name_of_part(size=120) }}
+

+

+ Manufacturer of Part:
+ {{ form.manufacturer_of_part(size=120) }}
+

+
+

+
+
+
+{% endblock %} \ No newline at end of file diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/app/views.py b/Assignment/HW5_SQL/HW5_Starter_Code/app/views.py index 90c544a..6380800 100755 --- a/Assignment/HW5_SQL/HW5_Starter_Code/app/views.py +++ b/Assignment/HW5_SQL/HW5_Starter_Code/app/views.py @@ -1,7 +1,8 @@ from flask import render_template, redirect, request from app import app, models, db -from .forms import CustomerForm +from .forms import CustomerForm, OrderForm # Access the models file to use SQL functions +from .models import * @app.route('/') @@ -12,20 +13,38 @@ def index(): def create_customer(): form = CustomerForm() if form.validate_on_submit(): - # Get data from the form # Send data from form to Database - return redirect('/customers') + first_name = form.first_name.data + last_name = form.last_name.data + company = form.company.data + email = form.email.data + phone = form.phone.data + street_address = form.street_address.data + city = form.city.data + state = form.state.data + country = form.country.data + zip_code = form.zip_code.data + insert_data(first_name, last_name, company, email, phone, street_address, city, state, country, zip_code), + return redirect('/customer') return render_template('customer.html', form=form) -@app.route('/customers') +@app.route('/customer') def display_customer(): # Retreive data from database to display + cu = retrieve_customers() + orders = models.retrieve_orders() + print(cu) return render_template('home.html', - customers=customers) + customer=cu, orders=orders) @app.route('/create_order/', methods=['GET', 'POST']) def create_order(value): # Get data from the form # Send data from form to Database - return redirect('/customers') - return render_template('order.html', form=orderForm) + form = OrderForm() + if form.validate_on_submit(): + name_of_part = form.name_of_part.data + manufacturer_of_part = form.manufacturer_of_part.data + insert_orders(name_of_part, manufacturer_of_part), + return redirect('/customer') + return render_template('orders.html', form=form) diff --git a/Assignment/HW5_SQL/HW5_Starter_Code/schema.sql b/Assignment/HW5_SQL/HW5_Starter_Code/schema.sql index f06fbdb..f9ddc90 100644 --- a/Assignment/HW5_SQL/HW5_Starter_Code/schema.sql +++ b/Assignment/HW5_SQL/HW5_Starter_Code/schema.sql @@ -1,2 +1,40 @@ -- Insert code to create Database Schema -- This will create your .db database file for use +drop table if exists customer; +drop table if exists address; +drop table if exists orders; +drop table if exists customer_order; + +create table customer ( + customer_id integer primary key, + first_name text not null, + last_name text not null, + company text not null, + email text not null, + phone text not null +); + +create table address ( + id integer primary key, + street_address varchar(200) not null, + city text not null, + state text not null, + country text not null, + zip_code varchar(11) not null, + customer_id integer, + foreign key(customer_id) references customer(customer_id) +); + +create table orders ( + order_id integer primary key, + name_of_part text not null, + manufacturer_of_part text not null +); + +create table customer_order ( + id integer primary key, + order_id integer, + customer_id integer, + foreign key(order_id) references orders(order_id), + foreign key(customer_id) references customer(customer_id) +); \ No newline at end of file diff --git a/Labs/.DS_Store b/Labs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..87133780ce361c328aa23d2002a9796183c7a6c3 GIT binary patch literal 8196 zcmeHMO>Wab6n@hd>a+r~KuW|0F95MfQJOYnfsmrK2o-fva0ClLsoj{?!m*>+ZJ;4l zHrxTY0Y~8k9E1bFH$RD7$6XX51kH>z^NnZTdo%ORn{l2)M67YxUL`6Lk%7!HzlIz2^ zr8+Scd@waKQxOUiqr<)_#EI1<>QXbH8JK2(AD0`nO*T0=amo1IrHHx|QULVmh+On; zqU2Be6m0q7p5uoO^kIV)fOmh2BnG)TvAGI8{zae(TOs+-H-T?Z#&jU8HmQg4+o<0| z8PXoTOIiPzvc3pAe8wwe(No$!Elm#~{V6e*l(f^2x@zX%oUZRhak>1R&CM@dy1Zx@ z#RGYtJn-FBXPZoiekz7Yno?FDWxA^z%x7qr8E zBRmY+k+8F4#|O~O<#I-@l`jqkm1?zQR%&a*k~yf=$|ZAs?f!6R7=_!b54UzZ?~ex` zh9{o|sl=E>x~6apUr5xUk4b7E6~XxKDmuWI-y&*{(jSyh`VNTBk`!y>@hGemt5rW|D&_N|IZ#Vdc~T7 z8DfAfY+9QQEO`9uGQD;lYn#Zs$UJemkwl?_LWJW$5sm{Ve;A@}LX_*&6^9c_yY>5DY@{y!D+Yc6=dHkd literal 0 HcmV?d00001 diff --git a/Labs/Lab-SQLite.zip b/Labs/Lab-SQLite.zip new file mode 100644 index 0000000000000000000000000000000000000000..398682cbfa567fb65417ee8926e96e57e87ccbe1 GIT binary patch literal 18405 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 g6f;+k;uE?V;M1& literal 0 HcmV?d00001 diff --git a/Labs/Lab-SQLite/Untitled.rtf b/Labs/Lab-SQLite/Untitled.rtf new file mode 100644 index 0000000..5be5d02 --- /dev/null +++ b/Labs/Lab-SQLite/Untitled.rtf @@ -0,0 +1,8 @@ +{\rtf1\ansi\ansicpg1252\cocoartf1504 +{\fonttbl\f0\fnil\fcharset0 Menlo-Regular;} +{\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red255\green255\blue255;} +{\*\expandedcolortbl;\csgray\c100000;\csgray\c0;\csgray\c100000;} +\margl1440\margr1440\vieww10800\viewh8400\viewkind0 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 + +\f0\fs22 \cf2 \cb3 \CocoaLigature0 sqlite3 app.db < schema.sql} diff --git a/Labs/Lab-SQLite/app.db b/Labs/Lab-SQLite/app.db new file mode 100644 index 0000000000000000000000000000000000000000..a61b799d7873a03304be0292aedb9853420f73b2 GIT binary patch literal 3072 zcmeH`y-EW?5Xa|k)+9!3{0eGu3nEcaL41KVlFr5tusl|?(ZlDgx@B&RSoiorh|-*QkGI$^vTj6BC9Bi#jG@K3@{xEf3G=9))7% z#i3@Ls2rDb_L8XSVLPf+N~&a?9fZ= zge|9HVO*s@tl&N12fpJQzTz`J;sb#q3I_@Y{;vZ9!Ktv6SxPJ;EP@4DTtpcC1o!on Ad;kCd literal 0 HcmV?d00001 diff --git a/Labs/Lab-SQLite/app/__init__.py b/Labs/Lab-SQLite/app/__init__.py new file mode 100755 index 0000000..353d3af --- /dev/null +++ b/Labs/Lab-SQLite/app/__init__.py @@ -0,0 +1,8 @@ +from flask import Flask +from flask.ext.sqlalchemy import SQLAlchemy + +app = Flask(__name__) +app.config.from_object('config') +db = SQLAlchemy(app) + +from app import views, models diff --git a/Labs/Lab-SQLite/app/__init__.pyc b/Labs/Lab-SQLite/app/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7773f192b1801c21f289d75595f71459c5f2f130 GIT binary patch literal 423 zcmYjMJx{|h5IyIkw4q2H_z_u123CYXLY)v2sbI)r<>LZL?Igr*p)**-kVdy1Bo-R>d>w zgXQL;YpePxUtXLe`1 mq0UrH17a!bwzg76{lW4E7u2*GSICtU zzt9uwB4K$){4WTpi9yEXCSaL_KlBeItP^vcxhEp=@^*2d zi$^rOE-adQRXrrU6E79Mx-K+LiP~K!11VO1!TP}R_`s+5)=u5C&i=M-KvEYeRc8j3 z>Vj;uu{}RNSlPy?CSPOGN?ztxP}hb8A7J~Qd)Uv?JBQY#Xezx+FPma(ux?#?b+gFw s$!SXHJWMEY)nZEisZv#4wMtDlyDmDTv|EicMs6-97_%`SvN0R-Uts-Qp#T5? literal 0 HcmV?d00001 diff --git a/Labs/Lab-SQLite/app/forms.py b/Labs/Lab-SQLite/app/forms.py new file mode 100755 index 0000000..a0d42b1 --- /dev/null +++ b/Labs/Lab-SQLite/app/forms.py @@ -0,0 +1,9 @@ +from flask.ext.wtf import Form +from wtforms import StringField, IntegerField +from flask_wtf.html5 import EmailField +from wtforms.validators import DataRequired + +class CustomerForm(Form): + company = StringField('company', validators=[DataRequired()]) + email = EmailField('email', validators=[DataRequired()]) + diff --git a/Labs/Lab-SQLite/app/forms.pyc b/Labs/Lab-SQLite/app/forms.pyc new file mode 100644 index 0000000000000000000000000000000000000000..669b7b78bc49f237a48450483f413c58acf2e047 GIT binary patch literal 718 zcmb_Zu};G<5IrYtS_%~v1L701kgy;zAcUY)Vqr)H5?O-PxFxFHg!o$MTz-=8U}J&1 zq(IrR;+MSho$tMi``+ygKHly|uwE{`&uQBSf|MQs8o&sM1qkL2Xa|f7u?waFaifm9 zpqpSkh`pLOK)1lOA#M|If)X$mkb3Y6umZS`w;*l7&~H`Ro9dYWgYs!K2D7IQ1C+_K0YBYgK8(LY9lLuj~}_BBYCy zwud;U#+lTiEQ)YUj%`pZBi6y!T5jNp199WCQtT3pwY1Yfy#Bas v?ssxRXTc*HeO$@JJvvyY2fyZPGu-(rxz>s=N8H<^iOFr;-LxLuJ=J%? z-{vpTAE4iCP7lE+4ViBzlbtU!-)zF~*RFo~`t4NG;tH@nf!RBN5pF>h(OW^IfIh(q zXcT%U1@rxKhcf{I~|&huK4bBPx+B=u*(@QxMUAx=@jt2cl_9D*#hJz(B6JEM2@0oaF88GN9pm)NVeALS{WO~QrAsB znQp5(FRHER_0tz82ZJcy+uqxXSGg!AvmYvV1*_DPiIUDSwQP;m#)s8MC0nPuu&(RE z`Cb<(p5HN-|Ar?7QMa}x#tZUb@54(@Eb2;{+?*%Rlzs1Xlhk^oDtphhPMadH5_GkQ z?KD$&16jocS#J2NFJCijOJY;>#VsM(=O|ac53?!Y55XVOyo-2+hY%d&@Y2o&3tq0W z_!v#u^AqvYd4AZ*jxqd2_S^g+RY9@nZZtN!UJ4(xoEeNV0q|mE`oeAC!RU+OIG1R4 zn(;x&xNyhqjFppTc~$udXP$z?UU;KyTRAVJhksOa6MRNFQ>b(GTTi==sO?9 + + {% if title %} + {{ title }} - ACME + {% else %} + Welcome to ACME Aircraft Parts + {% endif %} + + + + + {% block content %}{% endblock %} + + diff --git a/Labs/Lab-SQLite/app/templates/customer.html b/Labs/Lab-SQLite/app/templates/customer.html new file mode 100755 index 0000000..fb6cbc3 --- /dev/null +++ b/Labs/Lab-SQLite/app/templates/customer.html @@ -0,0 +1,31 @@ +{% extends "base.html" %} +{% block content %} +
+
+ +

Add Customer to Our Database

+
+ {{ form.hidden_tag() }} +
+
+ +

+ company name:
+ {{form.company(size=120)}}
+

+

+ Customer email:
+ {{form.email(size=120)}}
+

+
+
+
+ +
+

+
+
+
+{% endblock %} diff --git a/Labs/Lab-SQLite/app/templates/home.html b/Labs/Lab-SQLite/app/templates/home.html new file mode 100755 index 0000000..8c09256 --- /dev/null +++ b/Labs/Lab-SQLite/app/templates/home.html @@ -0,0 +1,29 @@ +{% extends "base.html" %} +{% block content %} +
+
+

Welcome to ACME Aircraft Parts

+ +
+
+

These are all of our awesome customers:

+ + + + + + + + + {% for customer in customers %} + + + + {% endfor %} +
CompanyEmail
{{customer['company']}}
+
+
+
+{% endblock %} diff --git a/Labs/Lab-SQLite/app/views.py b/Labs/Lab-SQLite/app/views.py new file mode 100755 index 0000000..ce19c16 --- /dev/null +++ b/Labs/Lab-SQLite/app/views.py @@ -0,0 +1,29 @@ +from flask import render_template, redirect, request +from app import app, models, db +from .forms import CustomerForm +from models import * +# Access the models file to use SQL functions + + +@app.route('/') +def index(): + return redirect('/create_customer') + +@app.route('/create_customer', methods=['GET', 'POST']) +def create_customer(): + form = CustomerForm() + if form.validate_on_submit(): + # Get data from the form + # Send data from form to Database + company = form.company.data + email = form.email.data + insert_customer(company,email) + return redirect('/customers') + return render_template('customer.html', form=form) + +@app.route('/customers') +def display_customer(): + #Retreive data from database to display + customers = retrieve_customers() + return render_template('home.html', + customers=customers) diff --git a/Labs/Lab-SQLite/app/views.pyc b/Labs/Lab-SQLite/app/views.pyc new file mode 100644 index 0000000000000000000000000000000000000000..38f8e5c49f893bb7fa6664626a44f2263ccb9df8 GIT binary patch literal 1350 zcmbtU&2G~`5T3P@G;x!*{Bx){aj=l6c>sivS}3Q0oFF7$DmS~OZoRSD-2^JNr}8vB z5Dx+m0N436; zbVyl9f^z|t9nu}jV7rucN%tu0As3SDP`O6BPg%cN+oiHgQ`Mo90m&X+3X*H|mDtH5 zx{CKnA{&uhr;h+PD6-@DPqha@*?5^tg0;uk(~2+wW87&Vv595|)xGIz@L zeM}Zc&752FlTQm}U9*F?<#p|P7DabqvD(tEuZ?eD`)T z_5E;=1HPXr9Q1QZbU}1ZbRyU{d)^P|B%}-BeGm;lAXIXW2-plr09^=*k-)W(4}^j< z!1E;L8^#{4q=m%V5rXY(=h*4eS9ZkEGn*-s zMB)YtGhV>LSds7ulRrt=e*^geSRmTM8Dh!U4q%U=)&@JCwP;!|MUS0P&J=2SEk)a4 zz*nYsVg9#smb)x0-ompL*7p#z%ptel6$3Gj8E#L|QJLFQUqizPt2gC_Qbr(UX*cVj z1KVhTW2Ra-m2#8m9X9u2u1ojczcI&UKF8a(DAfxF#q$5aw%8V1A_^aN9!I|csD2q* literal 0 HcmV?d00001 diff --git a/Labs/Lab-SQLite/config.py b/Labs/Lab-SQLite/config.py new file mode 100755 index 0000000..bbbb224 --- /dev/null +++ b/Labs/Lab-SQLite/config.py @@ -0,0 +1,9 @@ +import os +basedir = os.path.abspath(os.path.dirname(__file__)) + +# Will be used for ORM Lab +# SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db') +# SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository') + +WTF_CSRF_ENABLED = True +SECRET_KEY = 'you-will-never-guess' diff --git a/Labs/Lab-SQLite/config.pyc b/Labs/Lab-SQLite/config.pyc new file mode 100644 index 0000000000000000000000000000000000000000..59af7fd032bca1841f4a4337b62a884ff9163960 GIT binary patch literal 491 zcmZ8dO;5r=5Sle>F@C7MWyOyRv=?R>mFjN#`L>Aj#UXQToW4MG4900HJ2%=N8N04%~r%f#D(;1@3e zl3Rd{4h^rojs8X{K?kn_xC>qtf*tVovIb7GM9st}oq?=o&0j*H@YFO-nK6DGp9CXS z&we!G3C58WDoWP!fRJ^R8m}S@jU}!yF{UX>*{l(vbW)L2*+j9gW~xkvKa#(8Ad;oO zKvf}}^N9$N^E_zeOC&PSoJV4*8WiE&_pDy)n)RP}+j6Z-%VB(IcmH$!?v-u1jN9z) zHZR~NDXM)c@aT4U%dtD04Xn!^YpZNhhqY|x@*DQlBoF?SG{`lF5)*00ezG##D4$gn sn~NyGP#P+w4G2Fp$I)^krYG?_pW}?^G{kd_vh!8ev}659JJd_s7uKI~bpQYW literal 0 HcmV?d00001 diff --git a/Labs/Lab-SQLite/requirements.txt b/Labs/Lab-SQLite/requirements.txt new file mode 100755 index 0000000..bfbaf81 --- /dev/null +++ b/Labs/Lab-SQLite/requirements.txt @@ -0,0 +1,10 @@ +Flask==0.10.1 +Flask-SQLAlchemy==2.1 +Flask-WTF==0.12 +itsdangerous==0.24 +Jinja2==2.8 +MarkupSafe==0.23 +SQLAlchemy==1.0.12 +Werkzeug==0.11.4 +wheel==0.29.0 +WTForms==2.1 diff --git a/Labs/Lab-SQLite/run.py b/Labs/Lab-SQLite/run.py new file mode 100755 index 0000000..5d2f714 --- /dev/null +++ b/Labs/Lab-SQLite/run.py @@ -0,0 +1,2 @@ +from app import app +app.run(debug=True, host="0.0.0.0", port=8081) diff --git a/Labs/Lab-SQLite/schema.sql b/Labs/Lab-SQLite/schema.sql new file mode 100644 index 0000000..6785dd9 --- /dev/null +++ b/Labs/Lab-SQLite/schema.sql @@ -0,0 +1,9 @@ +-- Insert code to create Database Schema +-- This will create your .db database file for use +# Any table that's already existing, drop: +drop table if exists customers; +create table customers ( + customer_id integer primary key, + company text not null, + email text not null +); \ No newline at end of file diff --git a/Labs/Pokemon.db b/Labs/Pokemon.db new file mode 100644 index 0000000000000000000000000000000000000000..09215571e23433905a97842a0c6440f6767e2f22 GIT binary patch literal 9216 zcmeHN&2Jk;6rb7W{c>tT^HIwR7DFz?O43$v5XoVS^J@~a7sQ*rk~tTpg@c+ z68KJeM1RJ@7qUmIZ0N}=SLp3#-QI9{&9CsP?-g9XWY-=~w~b zpbX1db5_pE&RWZ?4JNL82F?9g)062my))QruKX5-YM*)I-I>GALY$_@=?fxzp0F^o zx#l-{P&BhEi&k!a_TRN**R8pkm4!Te=jzp7JnB2O!^<4c+*GvW$p9sL70#9KN9>X{1+}udL2!a0x0vQ8V zY3JD92>hmSq0q&|W4loD-A2_bc)VF?`vLlh3e!}&8Pb(RrEv%LTyyH=TfA)KQS8 zc*RB%tL8hQ?+vR$Dpj#74bN64JC!gL!&;hZa$a_MvQs&ts3ff)Ll-$YT9)k zj8c`nrHqzt*+|uSW!{~s1BsbX5@i39rjjuwU2`gS=~hEolM15DB~ZzmN@}CwZrGvS z2JVGEs;6)%XD7gDE!QJP0x#|1mQ9;$e zEvWis+hcQq?UkIc`?Qdg2RLe{BmX}r!T@6;46tNZT)Z9(i5Nh-69W)KeBg(C zNW=otomhbEpMVsh$}UlMm0f!8Mc5k6aVi3>?Rd+>*9cZu>FxJ=;=E^&z|X`K_rHcv je5O9n8}vUR8s6uW$=4JRkaOocp-zuqp;uE*a#{ZY_Qmoe literal 0 HcmV?d00001 diff --git a/Labs/lab-SQL/Pokemon.db b/Labs/lab-SQL/Pokemon.db index 7fbc93f8b758953747c84f7262cab5cb34af8b5b..50ec70c4fcd98cf7f6003fc5dd22f6f5f285f2a6 100644 GIT binary patch delta 169 zcmZqhXz-XIEhxgkz`zN_Oi(O4QO8(ZghBV?4pyKD0}F^?U}wC?=*#FjvFtnt8xI>; zXtOWlE+$q+Ae(bD56cgJHb&-;49p)l3yNH1o@~G(rpU|4!XV4&lv z%23F_ypHKC$TWt+iDmIzjgdU;;`;iGO^Fjb;+S+4CVrHi%+Dx0S(i~^@(X2&&AyVG Fxd1XVBys=% delta 145 zcmZqhXz-XIEhxmmz`zN_OhC*6#4;0gjKzf*bf0nYf zGRJ0L#$8OT%s^@O%{(kW_&GotnLjc=+AJt?jaiSEiG@L))48-DwWuUBFQ1o@g+Z1v aI5AJbE5A6E3EkAqiY&H_n|&oWa{&NnRv-xg