From b1a27f31f8a1297d949bb4c68b42b96c927cad74 Mon Sep 17 00:00:00 2001 From: teddy Date: Mon, 28 Oct 2024 16:07:24 +0000 Subject: [PATCH] Merge pruning main branch changes. --- __pycache__/__init__.cpython-311.pyc | Bin 697 -> 0 bytes __pycache__/__init__.cpython-312.pyc | Bin 657 -> 0 bytes __pycache__/__init__.cpython-38.pyc | Bin 570 -> 0 bytes __pycache__/app.cpython-311.pyc | Bin 6536 -> 0 bytes __pycache__/app.cpython-312.pyc | Bin 5836 -> 0 bytes __pycache__/app.cpython-38.pyc | Bin 7560 -> 0 bytes .../argument_validation.cpython-311.pyc | Bin 43670 -> 0 bytes __pycache__/config.cpython-311.pyc | Bin 2860 -> 0 bytes __pycache__/config.cpython-312.pyc | Bin 2715 -> 0 bytes __pycache__/config.cpython-38.pyc | Bin 1744 -> 0 bytes __pycache__/extensions.cpython-312.pyc | Bin 845 -> 0 bytes __pycache__/forms.cpython-311.pyc | Bin 5473 -> 0 bytes __pycache__/forms.cpython-312.pyc | Bin 7164 -> 0 bytes __pycache__/forms.cpython-38.pyc | Bin 4072 -> 0 bytes __pycache__/model_view_base.cpython-311.pyc | Bin 1254 -> 0 bytes .../model_view_contact.cpython-311.pyc | Bin 1669 -> 0 bytes __pycache__/model_view_home.cpython-311.pyc | Bin 1359 -> 0 bytes __pycache__/model_view_store.cpython-311.pyc | Bin 1671 -> 0 bytes .../model_view_store_home.cpython-311.pyc | Bin 1405 -> 0 bytes __pycache__/pay_stripe.cpython-311.pyc | Bin 7968 -> 0 bytes __pycache__/product.cpython-311.pyc | Bin 2879 -> 0 bytes __pycache__/routes.cpython-311.pyc | Bin 834 -> 0 bytes app.log | 66 ------- app.log.1 | 97 ---------- app.log.2 | 67 ------- app.log.3 | 66 ------- pay_stripe.py | 182 ------------------ routes.py | 54 ------ 28 files changed, 532 deletions(-) delete mode 100644 __pycache__/__init__.cpython-311.pyc delete mode 100644 __pycache__/__init__.cpython-312.pyc delete mode 100644 __pycache__/__init__.cpython-38.pyc delete mode 100644 __pycache__/app.cpython-311.pyc delete mode 100644 __pycache__/app.cpython-312.pyc delete mode 100644 __pycache__/app.cpython-38.pyc delete mode 100644 __pycache__/argument_validation.cpython-311.pyc delete mode 100644 __pycache__/config.cpython-311.pyc delete mode 100644 __pycache__/config.cpython-312.pyc delete mode 100644 __pycache__/config.cpython-38.pyc delete mode 100644 __pycache__/extensions.cpython-312.pyc delete mode 100644 __pycache__/forms.cpython-311.pyc delete mode 100644 __pycache__/forms.cpython-312.pyc delete mode 100644 __pycache__/forms.cpython-38.pyc delete mode 100644 __pycache__/model_view_base.cpython-311.pyc delete mode 100644 __pycache__/model_view_contact.cpython-311.pyc delete mode 100644 __pycache__/model_view_home.cpython-311.pyc delete mode 100644 __pycache__/model_view_store.cpython-311.pyc delete mode 100644 __pycache__/model_view_store_home.cpython-311.pyc delete mode 100644 __pycache__/pay_stripe.cpython-311.pyc delete mode 100644 __pycache__/product.cpython-311.pyc delete mode 100644 __pycache__/routes.cpython-311.pyc delete mode 100644 app.log delete mode 100644 app.log.1 delete mode 100644 app.log.2 delete mode 100644 app.log.3 delete mode 100644 pay_stripe.py delete mode 100644 routes.py diff --git a/__pycache__/__init__.cpython-311.pyc b/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 070ea83811d82165cfa58c5780adbf645d4fc1a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 697 zcmZ8fF>ezw6t?e@wsMrUASSOFh)~7|Aq7GOQh}%`AVnt`_xzH$xw9kNM-!$Zbzo#; zWdb4o0l%UkBv2+KCbmf3I$>WqQTXKZz31oeeW&l;`(~3MkE6v5K4FA@hNMFLCpdfN zgEvT^5fWHL8P20ogi(Ybg7}?hee}--Mm4A%)~oF8MipIti~l$niP{jg>b&XOkb%*M zkh(7Q81(k`hx92NSm}WD3OCiJEYQ2+h#Ns4NFg$CT3sLJ(oIPqRTvmZrIlLIo)UBq zEO3)f={}@Wr87NQ(&5rN$SvKKo(zJJzqKyC&C?kuL3V(b&vU6J$rEV{p3$Kzgw(Wiqti*s!7x9V z#0w>iNpB2e?fLS2>t?P+k-;s~^itu!u)BU+#~9;v)WEeh3fnb=ub!eSm)DPt#xcCQ g_fnteG7aDGH^J4%U;qFB diff --git a/__pycache__/__init__.cpython-312.pyc b/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 83b8f2242bb8182b99f63e43081cb9e4cf83c810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 657 zcmY*XF>ezw6t?e@wsMrULQGzRM1(R%2q_S%B2kE%0@CRu%RRp&PVel<_Cc=`hyfNP zHhu%*AMh8L7!c?-U}6JRES<2ggoqW@K=p|%s zNIfQ_{evle1cz2SAfwVPv}p?Tws^vgpnFn?9Gq5Hr-gJ25=d)I3}n(ut>{Pzx(^n( z$rkhgvW3#Qo>z2QSqFusccmwTAmpMpq&InX1WJ${;I1^#jJ>0zlRTG}JFiQ~7;I+b zDkMX)E}np;ZUJ;B=k|#5)hd@+)8GHEg{z9fu>%#JXlZFdP^lW`>U;%#@*^y(hwFBu zRc~Zk&E))EZ?oQHOz4cUx;+bHOfae5VodP@{B7*VnpU{$%#1FWJ`6j3i%x^!S#oQb zKCobH3So`ueFbA9A459USy_N`HuWyd4KE6*=IKLeOP diff --git a/__pycache__/__init__.cpython-38.pyc b/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 5f0aeda206bae706c1d25762b8f4ddafad9dd72a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 zcmY*W%We}f6tyRh21EYAOR^wBSw;vE2$hhaM4c9-$dcvSHyJlG_Q>|ohHZZYmiz*r zGFw*s0xRwes(>T;O80rJb1tV-Mi4i*2l!42`Ozi+Vt~mDeDN^`L$<_Fla;i}wizXm z!QhT=hcLVzeHojyg=0@r;p@+N}e*7ck99|`8{C+bILv>o-g+OhU-XZL5bllDYPi>Hf)=-rX%jzBgcrA2k5oY%*8@~rZvDd9O9O5zy9aQY~l F(BCvZte*e? diff --git a/__pycache__/app.cpython-311.pyc b/__pycache__/app.cpython-311.pyc deleted file mode 100644 index f5f005a71f0b222042b6e1d5b13826a6e95f4397..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6536 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 diff --git a/__pycache__/app.cpython-312.pyc b/__pycache__/app.cpython-312.pyc deleted file mode 100644 index 5c81800b45fd9ffadfaf940f32a2d73aa7d6ef3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5836 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 Rzqkitqki|_{NB;9|9_g4soDSl diff --git a/__pycache__/app.cpython-38.pyc b/__pycache__/app.cpython-38.pyc deleted file mode 100644 index eb2f35a1f397d384d084d69758ce94461079c958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7560 zcmc&(OLN>vat6?E@Hy05qX#sa(TEzpM2UKEG&5>7n<6E$$zeC85ljyZc2$$0fbLcS zEiF5mbJ51$#&&oQdswf7^vUB0`{J|zf+OrB!Usp#m%aM95svVe1+Ya@+^{Z=X$CU0 zvL47vWM*Y0SNr;O1;2a$@T=P2+)$MNq{hKt4vmL+{C`U-3R6slsZ4WKPctg8= z^Ms^z_oR2qJmsA>PkU#~Gu~PAtar{l=bbmtdmo!0dl$?L-bM4G9NXhw@-CZ~CEe>9 z-WBtTr2E`YysPF_?^E+r+3t5g^RAiKB%O0VH$R8`IrqAG9eBVU_HLLryf4fz;{FkH zMD~xGqrijim^W^YdlTk_?ElEU=}nrG@z`7DEq;pMeyf^O{2HGEzQZpQRu!Juy341m zyTJE=@3A4k`+RDP9+jPVKqIEXn+E<8_)Fjizz=}G0{#m4Yv8YezXARR_#yB^;5=|1 z_!00U-~w;~7~{9p{TZO*IiTWMpyGL;;+dejbJ1N)idO&? zuK_Av1ysBasCXq%@miqb)!4^ULdXLNFGw0Pfxakd$OZb6q#+yV%aVqCpbbewM$lIz z4LL!7BIyN5UzPNtq(7B(Nz$K5T7D6!)hllmbBQnQF7v59vX80VZ}*hHI1g%RcV$l@ z&X$TVxU^NaD$kWEY)bO2n13f8 zf0x~p{6CZY`)r)u+0f)l)9g#xW6Pcg-Icy#UrYYF^Z@vPLuY3%Ys)O z-)Yp1e4QC9+~>BaZWTc$-u46T`No2S$(-r>yS`~7-)tI>d7TT})n~aK zv;>#024B}_xL*}cGr;Q8`h4999NTr;+&6+vZp^y2|I)CVP1mW~G-Sl^c@Xtg8}*vA z(GrqxtlK_k1|+0uy#Cq|jk?F{!H8i)WX5Ywoz{HQFhrvjfV@5~d&cc`w1+Xx4h+HT zj0*!hX}UHIdIL?!75yeOP;>B#zzJOLkLkas17%nXbx3DLvV`e^lnLD4*@o~eGy}UD zgnhDAZqYut7*@l9#RlW9^~~XKtVfXi2y3q45o_qcsCX%GPaNPLSTcjJ&05u$7KKVfFeZ`7UIc9;?TRg3#Uc>2f?%MXN8-w03mP=!?!4bNf@zJAaU+hJDl zs1asb!nJA*5oUbulVL!vWMOHg46K*GUC6uDP3~<&5y?f{al_0ahS?jmsh&c4Wfrmq zSQPy|Zo_64L$m%m?7>&sZ;)zVwZONUZp#mIcq6Y@p*F0MS|S5BA5Ki%t=86=ZP)Iw zn|yup?&QRMJp7(LRjb}xwZ6yE`FSXw)ze}7^5UmoWcHbPWGGaV$2$x+6Red-a zCg50MnhVhoewdCtOkBotKPloikOY5NEljVi`ds*HoZ{HpQk~BT=QUrOX;fPj0Q@x= z+lH_`4|cuw%<)^cYm|c)a~j6v#N_0fjEoi{;~HK_&scLiOv!Ei741L+P!i$}U^_d$ z(P*&sZT{Yd5pSanBcsHIu`R9CKJ_>nJz`Wvi@Wjm-bsIen!>a&6R-XoG@|!v;x6c_ zlmP_&NVW75sorT29TjPuwxPboamf-p8cUM8ceOo*rOqj*m7N4j?}ZK(sFfN}vYXTO~-mP3$N^lBpdS>yO%w`dq1xC6yrcQWp!VvI7mb z2ZMA+d#k3E=gJG^Z?!Tm5Ifor+IMKx0Xw8unDl_vM8LB)5z5Cl1JC^lVauba|5HX} z@YYac>tWvp4=kr%YgjGVu(%1n=%vnF@fTGt4@D?85I-fvtYp(l)_Q|&hblj+oFu*L z?=j4$B@|7AMh5YBNfk?I!+7CDbRHd22boe=9gN0Z3zWAC)Bu%0Ay7w0d7Io(gA~*P zLxWm0sO28il7?E4Y3$&})IJ|%f@~-87B{CKRhF!2hZL0fA<6j=gu1m+2JH6@-Kbkfjz4qDfbXg&QydSB~|B5hBpeK-*`$mL-X#;R|` zN3fK zLL`M_?ep{X*U0YJm@$j2fRd?(;mhtZv5eOWa>wC8`NhK_ITUG_)u>z1C>VxE=|qy* zfgNgvLYS=E9v9!x+%p8EUEBf{CZ(4oqw$o@9JQ2;DASDR1YQs@3D8nzmS)W(Z93L? zdSm0UnhihrXN>nR07Mp))v~Jm(@v^qRUI~!)&^DaJ^I_ZarpRar;3D^#_#_UAi74i zhQ|L9kI3;T9zBcW(fJ@9WGEsX>v%^a6CCeE}CorS=d2A>TB9J_Y4MEu9IN;j|h%(Ru3fn=-oUxZ*QrcBD?>p-9r)1B6`|r_ff;J ztFKzf(^*@WUSkk**38sk$GB~^uROAG3Bm+;XO$y8V#fNmL3S(}uFJ)kj&wVXGdXDa z(viAG5`Uw2M$&a+cy4r`!R;!*dvGTj9ugExaqQ!s5vH2BN(6$6ZD#f*-=+(LCn$Xh zvlfp2rT~0~<`FY9bvhMsp?k>#^Niy)8^{!%l$S~|&%zDUGY6vqvSHy~5*+YvI{(BZ zz;H%<2V~~D8jGBs4pXzg$%WU#o{_Lv4l}c_T6P`RyX|AWKD)o&f5%+^1^{_HdAN>q zHhQwa@P63(U_!@fGKA+ws#g{AT+NOnb>YZ%4jKF*_y7M(N8-~qmf+pz6pyiyW1Tn? zkNqFo?|T^q2e*B8+^!;=`Odn7Y;Sv%42VC?wcMY@ zt}jO0?h0e=3-ckH9(sS;sbjaiNn0KmM?iaRSGPy&jR2nfbA07<(RO1&tVoa#*=qmc zDfs`wF(&O`n-rUo{?sjN*aFs$)Q>WA3h4M>23>9ZF^R0# zRM(=4oJjwXPP(ed6a)YHcyDH$U&)*w{}p+!e?JmON6XpumQTe!-)gK=xzitOMwKu@ zS(SOlb=Jphu_22AR-9A9YRwbJFhk9L9j0njbre0AEiYry?Sc+AF+gCDz()jz2%G>g zbvXxhK;es%#2Abi{wvpxYGLBkfpL^yiqkZkvR1P{8vG`xja7Y76K9Eu;}~^O6iv|x z(@}*?oTEACiK8`qagT^zRK{qJOR&#GS*v zNmgovff?coflmlrCGaVM&j?&2@Hv6&1cnLF!79EWFhYPXBVvreI03o26ar@FYUXAn}}tF zDOnemWgb~`k+lSQahA71nZnD=RUYPo&Obp%fS_~B!^%Va<0Fpz4xE%Dp`_o1wO+30p48{_b(XzD(}UT>X_}S9lgs9i>}2r}J~60CY=F)jd2+h? Ezae&YMgRZ+ diff --git a/__pycache__/argument_validation.cpython-311.pyc b/__pycache__/argument_validation.cpython-311.pyc deleted file mode 100644 index 34b94b602caf54ac00822cf80f1c6e25e588406d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43670 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 XgL!52Ta{Sq5=#oc)F*~(*EjQj=?Jw| diff --git a/__pycache__/config.cpython-312.pyc b/__pycache__/config.cpython-312.pyc deleted file mode 100644 index 1e511593f1a48fc476b8b83de31dba6c532c91fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2715 zcmZ`*%X8XB7+*lV#KS!N#E&S>lQdycx6`TJG^qgDCg$NH;nWOM6(hw~0?1u~JNQI9 zIV98R1fPsgK6l*zq!$u;V05Y5o_ce}p6N_Z-9?}{ZqbZB?f2WCzHjy0)wlbr%S8fo z{rQt|bHNF~U)bqi=3e9U7u47X0>}cvAQ+2=tN}euMPtd7HI;}gVE{%Tn$S%g^YewWd zdcGC=C^IQI`#FCw1YNtY$W(Huv9mzF*GKK-p_Jb! ziVFER)+re@s*a+Z7kELgh~*vC@mMPNor0#MW_z-NQ;1~W2O>a|2C_!MkTs#3K$4lC zpb5Wt3C6yRS?fTKN$1!GatNJcNBPKsJhRSo4CGjJj&mT#s&ia|E$bf0v+KN}fgDoj zcm{GDI>$SZqc6#<&kh7v)-SlT!@^K@1Sv9#{IP*=di3by136xuGcl0!E>2(|$EU}c z9LVwOoT-7FVVyHw8wrl87HuUjspaUu(hSEh#%Xp%9b>>yR;rP`|I3A0r!)Yc$uX2%Px`*)StJRTnXgan=a}0))!5P)Y z^W}U=Wx|;y)ygp}7fUXwMp;oUn<6d&(2D+HmF%gC zVnRCxX3h!ArRm5DpGZYxi?ImJ#ZpNY;<67N*x)Llx{$hDYK2K^YGK)ubb^6HnBl?3 zi)my}6g(J5w~e%2L&DfKVNz*Mb#|Lbbe@Z|=RB5;_w>UP(v9xNfqmEvV>5!yC^A2T zQ)I#0uObV%44P0SC*nGtOO?ealy<~iR4!CYV!5K^P?_I^`BF(LZ|2q{1xZG+m8u}g z)ZE>sM^QiLY^4r_FLbvXQwrkLWQ(=P>E6ZrYpMhhix6X9j{`yj9X#6>RS$k1y z2HHbc>&qQ)pyAt}*qdlg-f4S7^@k@GaOq}q<4`(~S~uzTOt?i%cCOuO5wpjmml_-U z(w@|!K5UQ9)l;46>&^7x`oVhZ#)J0s7cC;t@lQ48_UHHJn_sv6x9joFaG;(zc8@*Z zcqzS*nq=F31r0&>?QQog@_mzy+5O;Nu$gH4Zq-*V_Mg~nX4}a)@Qv0Vc6>Jw!Q-#T zI{tAK-#>F34&Dq1?L9lgoz8zR-5o7;Fjwi1+ z=MLu&=3Cc3Yfs*55#ybyYt8Us>>$><{&{=q{wrbv2K&;!w;%Nm1mF}eruX-wnlWfn zy-{&TEXvz>R<**xC4&SU!@@CJ$&Sg@n0{@V s>3C<+Z{tJJPQ1Y4Y215lzSQwvMwlC6Zydle(i-`+P0qK7`L1^V0+x|~E&u=k diff --git a/__pycache__/config.cpython-38.pyc b/__pycache__/config.cpython-38.pyc deleted file mode 100644 index 2232f3ea0c92859c89eea3fd1196173a04f6709c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1744 zcmZ`(yK>_;6y?hj1xdF2+*c;UEmF9MX2+!`lPpcrw#G80h?F;r(F}%5z&2xvR6xoZ zyNvfkk}`eDRQZE#*`~@bq{;>8S2i1HaCOeTzy)x?i*dV+6llMH@&5F;hNAo_$m3=J zc?~^31w$3AP?c&^6{`md)v57bp~j7dHDF7$2CT-k8y)Mw>(m5pN^Z~wUSdnMaiQ@( z({U}`0)~KLW&kr;oi=aOpCEUjY`3mIpdrt`XK}G>K^xkmFtFaRcX?7UWG{;IjLU%K z(H|pDt>c8!DJ!z{%V3ri=SWPtYeUZBBu}!`vQuh}Sk59IpIae|&(mz0on2YMRbH@J zZuJwG%qT(+v0ZB~iZ577(LRfc1!r)VvPw``6A2%JyYv}nOV3>kckXU2-&jwY0Q9&|+G(a_~Kn;m%fDo=AR%i=%XdACW)-}3}*JWe{A{!EQ0Bzp;wj^2w-xG<}06mpx z9ndq#@f`XKx&c?WS=K5AaOcQ-O9Iasc_G>F+rd%!B>1*(_nkxU_$_hm(B88HkBmpX z{c@$}5_=pTz9LS)=lNl|^^xN?QQ2|_$9B)J2A9SnXB?aJh!^>^pk>|NBjdmul}!Lc zI|$wkMy~W84ubG{eHJCt?%n8aoOKr$$p=+Y!g3w5_KEB5+v9!+i}@~OX-nsQo@$IU z@I%`P$#A^a?>Xhh$aCyr=p5R&9szSzgx8Si#cE65T2Y)4BLo@aK<23`e$eM2-h;Z@=f*VQ=6ET+}OH5~e1G zw?W8oaOC+?7%UX>?PHIdVg%H?!bSPxraUT0cjAq3qdNCs6ylbIpeYIa!6Oy~eO$>S z^p+W0B3VA6&Kk682^{f0y#5F^ebN^GR@SRkZ+5vD^sZ_18xcs8uO_`vzL@sU|#2#o4#b zvQ7xiVnX;jH zjgi;#f0-(+l6JRvBwy<~ury{6Dkg?JQcQcVWR@oVk@kQcbJ<$$$R7!8LlOFJ7ooi5r^_vzzx-rHwl z)Uvg+9VJ|Q+n5s#7=A8qbURzSkSXkd)ZJOn)&7&#vUdAs11R7=;23ZX6b*O=d;@a^ z%(Ft-Km|dUCW&D$0|`|VXiNk0fJf6gp!SbW;6P9}*$oq|O~ps5-|k81!@LQuMmQ8t z_S#9R*Z?Ah`^xr3AD-aSuwZnKNkPQc+K%_MV~T4xGwGkmDN4wBuyH?lE*Z#x#YYhY zJ1N_QRURkV%G%wvwP1I>^Q;@bWP1VLbim#y zmYN5U?cwO$e;~3r=j)( g_|22I$If@Jd~%4!t)B$P_9gSH@4a^}+{Ai+0X#+UPyhe` diff --git a/__pycache__/forms.cpython-311.pyc b/__pycache__/forms.cpython-311.pyc deleted file mode 100644 index 27d38a73d093450c0dafa87c1f94b55d42b5bf0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5473 zcmc&&OK%(36`mQspQ5RUtyq>Pwv(8#t=Mv&mSIB=%U0~risV-rrPDF*6*cj2hPg9z zLd6caNB}LhsM6_y;!HSD^K?`^;>AQRQB3BNoF35oim6;m6eQuQK!V>1 zBt)gBK0){aZtuz+;Jh&KB0aox#M6udH`c@L=bCZgC3<)RoR-p@A|b(P)QvL7r0c52!(+vsAUqjPhY;O$Op;q*8`MSRDy;2@cx8(Xv) z2+nF$CvM^v{o0;nRP~y%#qxcave$@DnWj!vqt%)-Y+9hKEl71RCU0c?Zek9nyFkAz zYm5>%mMs_WQ?{TQ1?mPDK<(?28=rx7wMAf3$pxBMOLl(68#~{MJO0y-!mV{^J`t#p z6CwH~NuWL=K84-z1Ki$~^8+hAP~ zB@9MuiQx@piE1}j*aG4tgjHEe4M_EUkW#UjMg(jCo$iO7p~nP{dwes+9(iEl9l zw%C$dDlPFq9V=B>3VP>o5FV@oKy~NSh#y?LzR_2UpRC7ERRcmnXzjC&L$$=Q zdg54h7C%gGkGy}RJp%UsCenJMD%Ogs1dl4%E*hi{#tz_w(+K?t0|y1f*J{#gvb4a2_WV|Lu)MsSZPcBMqSJ@f|ZA-oH>g*NJV=1I#>b6?+>bl$q=#OG@9xq5uA8So86n_=NVx|s;4f-ePtZG`HzW?D!N!yXx| zC63k;N2{}q)a%tb{CJ^(!~NfUl-lj1D@3!|n=l>r7Q#t{48kb@H+Z`Q)~8wa4wAY; z`#jPRrr`dS4Y!kA8mVKu4Tr<+Z@Aw>e02wRSD?1eGU6lt0-koky{A$^>H(#~ zB=w7AQR)CW&^20`q;vhG|2rW!Kn5T!47N`6DNV;BYIOk4KABJ*_C2e#5BAm6v{^Q6 zAiM(ydI3tZjO0q?2d;GcIy@yXK`=wbT20llB-+&keki|UYI$n0(-0x6k=e4Y%Xm7k z#^+Z|gUSZ4nO4)kT{?C7v$JPDTCzU>=DpM7XCI$fJ$KX4D=h)*v|Q55mTXmu_f7q@ z40WGumDD^G7YuG)H@~7}EFjPER@%k~3BN`4WeW$B`HAI5%(4yTrlOJ6Aum&Sieo$U&q3J2 z1G6eLzmXbQk2^=s*HZ7+Q}4FQ9%uN}kGeCn?7UZK3c^EiN^1SQ#MX?o?fn3; zEM7rga#jKsAaDTjC^)k}K_zIgw|`_9x|P`EGNM!k!7P!ACF z0D*E(BJCgG+>@4(g+IWXC?F23pbj7~0IN3|eXp&3voZ1GjUR9PDf{QFa~@nZQ|p_l z_svwV@rgJir(eM5FJpflb3U4LQXkh+AJFYW;0>ls7KG0fMYo}KftZPlfO>0E)w$siY=dXysdoH??MzWb;*J9m4 z(CJn4Hs}IOtb6UBA`Jo8V&T+xt$pOI;~#DepV&D3hkMTWtTTMIHhi@{eAV#}d0)>I zZFNxguK&gqUS&UBW{ev7iW`H)Msd>8-x4;4S+%Altp{dq_hlz-?i* zv}@Ue$Ew*z`pEjJjW3>k?xZJb>4|!JVz={AGn*N9LyAJoJiK2S0@6cA)VlpW#d?r%dN z&VTZ42sfRd`!<9zXYaQe42s8_LNBa;^b)Dt9abuUlD)7#_Y$ew9abs^OL{FX9%~A{ zu&%vC>UM`U6332vVZDNq(D4pyBq?J0+aGbp$l2b_mql?5@?{TffG|+EJFK82UW2~( bM-)fS_HKSy5-*}cH=sd)in84-zK{O}2CYCX diff --git a/__pycache__/forms.cpython-312.pyc b/__pycache__/forms.cpython-312.pyc deleted file mode 100644 index e1e1053c65390d9e4727d756aa1d696b60072235..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7164 zcmd5hON<-Wk=@NE+58TN^U;jvqt-~VMSU21ypFBUT99T$Y4o9Fjeh2i-RSApGt*L& z&Ae{PA}x8TKnRo|!0NIv_m<-d(!qvLK`sf9gMk16wVZ`C9R%J*a`8>V(3d%F)oYT& zp(QVZ4T5ce)vxNkSN*D9y{dY}-^XHM4xZmmG?xBr8^`?_k@n+nHP(N@bKGYf;c^_| ziD2@1At&(I_L;uCm=jrBH2wKNE|3rAf_W(?Rk zTwgwsOXT}={rO}r$@&83Kz=Yc$a4aBk|V);9FcVKkIkFu0X5M@9c9#hpeDPh+ZlBLsDoY9F-9E%>TnlzoKd#{b)<_r!KkA^ z-QGo=WYjUBj(1UaFzN(QC%dRJqwWBz+(q44-kF-JG{YCDbzRq-Loz%Uj$OPoFJILc zZNt&S$4btMMOlY@f_$t}BA+t|F?Gi(9GK4=&Po_3wVw-A*9_aR3i7c6kuU1Du2OA9 zzNBj_1a&+4{DjiLizI|Rs*QP6EUW2*Lz16MC)k z&=^v@JCZR>N2j&|Iv^#@QD#&}U$$r&`a+BwE+7?jBl8XgCK*FFi5t75-*S#oUG>n& zd}$HH@sQ|o%QAJf(8A^lz)z>`fw~Eb_Kg;;*%2r_Ylet_3uqg3&dSm4P=q!r5Q)aA! zqiW7Z>_lEQOj#v_>bAY{&Q+^q61i-ZWYf5z%Z??3_2|Y;T~=kyDwbtyNp@BYTh`e; z3aZg<=cp@Y)x7Qo&jAw^mE$Qtn~J-Vq7Vj)(^G=BvmOTB&^z;HdZVDW?1+`dQU`CrRmgxX+ zXJ7;x_CEr+$E`)T)%qIIJ=GIyp`rTl`9|nM_4rz3_`%IaWU@ND79Xq4HR7*TPp%~< z8wt5Ow-y_zjWl9YcQbTXo8QYVV*$GVwwBRl3lU}uF=h*3$Obq7N(XU4LkNZuK)m26 z%9>3@=_n%G5sV?g9i!t2aKGpTf=L9pUvvio+#9+R!4v`}?QU$n)&?>(?6(2@HG1sP zA2QpbKm05{>!$$p>JLtYNCe`0EItz0C~g@d-eZ3!4*6k3fCM^cCJ3ieDhE@N+sAZu z99)_1D8~qKrT0r}!7-fjH+Wn(c3c1lW9u>)7QE?VHM@!%Mqvw0}EJ}@|@8)%1b zs-^+1)1tN;B>IwCG9A|ke6tTjy~+*&e;NbeN^oe{H#fEGhR{G2r(D!~6}<=NAwV75 z?*O>R{deEkGb#BZz=0l*)n7lg8l8LY_YH=hOI&}l8Iux$>Zun=Elw2ffU98J_3LHw_P6xkQi}CK3rf4z~?<3kTtG zq)lh;ULw&g{d`wH_DCf5%6{yTNW5eEafbK3ay<4(B=O3A?CB@{9ezoY%ncAoxpIT$ z!PHPI5FIy6%mXTe;Id_+n{Z-ixgC!xi5aU@aDebbh(pVeRip%0DBW;{%V(e!!=ptD zDyAE%iP5?Xh5n$nVi}rl(;vdlRYIAPY04N>Hli0+tb#5VSU9gFKU&y#^q<~1aB#u? z@RPUqPrq?zcje9V1+&~5VDFcUX33WAa(>Y=_sfvF$aYcHASP1ynWpuzPSPo!9c_4d zU%O!04unjiSK@H0F}gxXg^#{j8Qp?U%X_SL&ftnO;7{BDle)}&Z$@h+10Vv&VcQ44 zb+q))xZ51254{f+2tUseVV+C*vTg+3LrcpZGV5s>GL*@V>rfWGeNYOPqqMgHMu@g< zF4_25nWFP{LsrRwoJcW9W!O8W-o$i={t*nbF^W{VXY%f+^2~q8GxzV*r7K@e0AQ{p zn;Po%aS~&05OAM{rkWJ5Ewm4b0dMEMBq78yh9%fZ8pqCP5qDDYcG8u=={l%$H>7$x zSKi!gPP?MU)T^OUl{Z}|J%JxPiJ-@W97Gy|_u*&%5deg$#CUz;tw!P>STL`T?)%)V z&o0&9UVg!GH~HfNWFa^CS>ZXymG~1vljGtUp_*AsjMdIG5_@3Mz+~;yU;U_l{3;At z|GEvtMTGZ_TXs%~nqVxBB@0U+w>O zx_)qOHE|laBITV%;$3KB`tk6{qxb5253NQHLl%ND^Wp7BpVrgwt;UYRVp>5I+}jWK z*2SrHk@sKaJui>aZt-$xZ}_ZZxbF?9ozpFrg_O@7WF|3ZD{}?SED@b3SB_n(L|T{( zNH*nv>DEUKTQORbdUxR>e3&9o;b%tyz%C>wYj+yS19#7O%f{|4%NBuv&pMjz=CTQ& z^MPZ+EP#LP>o`w;S%iGwTYl?&lod>jtb&^~h~n8`=VY+#ANn5hu3(UCD$pa7I|OsS zJI%A|E3lwm5icVR0fC=A4B#I3Z2XP7IJ!2v`IJRrMqs&G83)dj9t<#7NY28N%2Z=t_AdhHs6qA_;aZIL!K`4jy56sDrb}O2QqS zMN$&!;21AO67Ap^9}^_j!TZbcRG;fFRBFyLlCnN zV^=m0OSUnh7gg%uwWbno$CbHRdK5Iq^7%?Qquy!-GB?;NAygvm{gvlt-M}#o6V+@g z*=xnEU2ZSX+vP=M&2DT_=8QFOm2Mkjt8|l_3sW?2%@9VnW`@vp)_qcX`maI$yja+~%)$&u9&}Exe4XbVkA~y!Z7yFzY4M zu34C&@Y$3|Etu&>Ap&6b!DMkoEGxMI&j28@_%zdYN0wTJp<=5rq_qk|u85h8jlx0M z%gaVoHp+!O@TFaP#+Nu>SlIchhiV0 zw~#!AU>5?6X-sPjdpXa>@ma3|=rvn(Z*9|D=9jt0!j@aJkFdDU!stEAZ zW$90_*>e(pjx+=huz~9Ilz^m{D*?@=*T6fGx>a@slkB>ygTebc2Jd<1{w*S4&5;&? zZzYILh^$PCR~&RV;<+{jowgTPnau^k%u2|qN5o&CPze4Fe)c2)F9-g#kxYY;V37J^ zTUJd#^`mewW zBcS~U0MC6q&%Y4Dy!h=n$DiZB4RE~tHCKGf6`yd$uelHYll$OLT)G(u@Vg!yY;y2w zCj8KzYjW^bb9d=J}6fj`aHLf^vV)80+) Fe*hE3)hPe~ diff --git a/__pycache__/forms.cpython-38.pyc b/__pycache__/forms.cpython-38.pyc deleted file mode 100644 index 111ef5850c48ca3b7c9f255258451e695044ad28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4072 zcmb_fTXWn<6&`7B8qLMyYc9a1xfWBKn8dIwgoTYSG3A1tHFmP8YGx6#x@~Kt%WO;9 zWCnOjUh_Z5JHJM+ys+;)`GMj)EsZ@SlPah}Q+-;W`gZ!9(_f!?-0j*GJb%0K^7Ph9 zrSf+I^G^-n0ZQ@@2vOk`VF)uYLX(>Yy;p;3SmU*@&g)@=H^L@wh8DNN7H{eHT40B5 z-VQsw6Lxtw?D3xdUJsVSKJOcqUsps!G+$OkQ<^WTd>PmhE#Q{ME5NpB1GhC^1@4G0 za986s;GS3lUeb6SxG$E0mo?r1UJl$AN-VoP-uW5WkTtBW1ZcP7a zAFB8Z>81A>p2O{O`%6`+F!%Rm4T7B^axsH(8$}zsY1tnUj`!YK9bMVZ6)0TwvV$Ds9b=~P8LXfdG~F^!=8`x&K~wP>jI^E zN78f0sdrwi?UAnYj|uPqCAkkFE8IY|nzAa47Y47%x-d~UfUBsR(h@b)Eor}~@V4xT zI#5?M;QMCYp`AOsag@4VdeMCtx_-c1A(Tv#iw~c~Ss>UX&RF0-l`M@J{44#hBy*V; zk0&fXW$C$}Fsa8WY*Hra$9Zk&hB9w{f=OK3W?{PFpqE>Y6QRvQLn}AweJlVZJ zqWDQhl45xDX(aa)wlUg^y)2Ybnv8G+&XgO5aR2BtKY=#vIL(9~v#q;ZTO)lc9Gr@g zJ06d8Y;BGws)r@6p(Gs$%b5KdhHiPc-+qGb|GnR|$J(XGy4qt193KZssU^&$`XrV~ zfY&N&6=FE(s5JuXBsNHpT@`7ot*Wlm+YJ(ARdtgDSx|k0#HI0yw{Ow6_aJVeB*de$ zy;_F;{?=Z}a}TKVU5NR;%9=1mRn%UYXW&;+e^upm*$@qiRm8C+nuts*U();B!Eu(U zvn@n!{VsE()K4d08<_Fp)*%jHA{o4gQ|+>G48o$&^ozsz+RUr)rrsCc?XTRx2YtjU z$(ur+x>=CsRm?kl-FnkdP0X)okGX}g)N5W@hPTN3PC6OOg+?L+k$V$zie;LHS+)OV z*364W3#Ovh|GTOB^QL+z{8TY4qrOezJ0!kK;`P(h!EQ-$#2IG=ysT{fgzZX0b)o^ zW*j)}@5Wh_;=_-?eP_6924-$%Pr3Q{H+bt(u&KzUOUMm4xPA_zz3H9Dz9$p)16XF- z+RuW35s_VV4$tFAvPfSB)0IDr-v9XbckldslzjfD4{mSW{mb{J_dbn+N!cN}&Bj5N zuw)XR#KCQb3ymdX*8>kLlpu(oNwGOFbg-i;Ry&N76f`a5w1+q+MhA^!(R>>_?*@?Au7gnqlo)rp3TcH z!@>HSCz{BJw|oJz@I5zB7O*1D=8eLunjCpc-$1AEl4_$d?~KVyPT?hPfnrj!CvUlh zJ)L`3uUow4Y14TWFq137Q1@uDACp*g-fpAe5G5f#CQ{u%xoPzAvr1Vr74>@S+>sd` zpd>`}Z=Sot8~K{H(Lv%IL|%{yDV)!?A5GgOVgSQIeWAJ9e&YD$poN-$fK~rU%ab19 zHo|Y|c$rkw-e)=rgID!6fTS8{yDn;ooO-Ei87vcr?zlM0SA5|VPPz;ePKguRUK_dT zi{YU0#s>I0#=JeOaQlZ)WZ`~(TI!#W&X!R#)a(oJ)$_mXsJN_mGo@tYP4YH$@=Cz1 z*=O}LOuk?fyK^)aP%p{8=%QX0J@|JiFRXE#jmLp6m9|Dw0&dMdYimq9 zyKy*nBM>0il8{bN3$!vrLXKUPQvNozXN-2RrzqjjdC}C~cb}IO%A4h1nrVAxcXqJH z8`~Zw4a338n;}$Mf2Lqz{a@15RS4eERN)m`ULvg}?wU)*9Iw!v+i+&d8j8{borv-3 zsr#HapA~<$l=f{&Rf&UyoUWopobeGR2vJJTs2QEh)N?K^qh7Q69vY^t{%jq|-a&pSi zbuz58M4kUAN+L9)Y0A*2Oi{2Z(sPaY7t@S$wGp-w*YTxRw_j~yD K`_+D}-}pCVdexu+ diff --git a/__pycache__/model_view_base.cpython-311.pyc b/__pycache__/model_view_base.cpython-311.pyc deleted file mode 100644 index c7bbb367088eeb3e9d49fd99030da3945a364e2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1254 zcmZ`&-D?v;5Z}8bZ9E$eQBV+ZMG;c$hf%0R5v$dzw6!*|LO58ix7%jzeZ<{8wZVrx z6zo4BzV=Beeeo|56~TH>g7_Y(58{J3dr7qQW5P{l?>DnE^P9OBg@T1ZepHv)D-)ql z`p}bX*VsM*#xq1w4Vh>XQDYTR^Er5L!qbtOK{FLp%r-w*vm(03JXOXZv*UBs3ckx0 zBv;HDk5xSqDS)rihpwP_np5gC6@^2UfUCNtgL*P6n8ziLLOdQ)JjWz+g;&Q_=GDW< zkCs+&Wko6$NIbM9opIutKP0zZJ8q~-N`)&IT5w@<<036R4OP=IPCHEJ1Z*0O785hz*B*K#zwifVmp z=#f$D2a0luofbuOeMF~go~$d?kmZq)czM|8;WDE<9QLAMgoh)3Bq+2-R|45Q((_va zs^W#zrK+)^)1#%cp0T4qJ-Q4$+f`6cjb}*hKvl1Lz#gOBgIwQ%0o)bvg80o}cT~`Z zF;mPWIT<&Y5IR%RPe=$Ik)oMoJYObz2=RPZN1yCLX^{s_I+XtSKb?=Qm_|6`DZ*cn zioIYL^Exzi14c+<5ds~?zP1MlxesJ?k%3tFWGda18)0JU(976rYi_yIQeZwTT0+3ylhaAR32aoXhrux^dh~;=2Y1USvkL}E? zU7IcV5aWP{KZDrx!{krujUE_hE#zI?cBrIF7?)Y0S z^R2sq?}t<*@oYT`#D*acjoJ#MUciGSwiaUFx<@&6nYUrxr`|@Kgvt80Ro~`u%!HkQ+UZ{*SC{cxSp6;H;hHfJr=YCII9_pu5hhL9<-VX zv%Gx&CfGCnl;oG!y$c`0=H!=;2pUXDuEDf!^^1}I+w(iAxu&{llx zs9n?q%pd8FmT4+zg)aIWJ4HZKOD|2h$>UB-x#EosOZ!FmWHC;^2JsDsa^f!(fnkuh z2V=bh4m*m_Mk@#%g5DdCF%qS-HKCvB9drmjdt<)`BMO~u0S$J6uin@nB%&_w%)FS% zO+sRTkE9yF9NEQGaW~V-rW=wV=E99V%4AS!fwx}q-uASXS%Ux z?rZzagSDURBYpl@pYQAQ&&;V`uU!A(@{u`vY|cJ0Z#_0|{p=l?wPUl^*K4O>0G%tj zEJIfERZwKfC(C^Zb3OQm?Omw)}Ubam zQ;pNGnGM*>uz|}^0Ce^W^lS>m&TAKzd}!smJaP>Lfbxf4{i?KAdZJH1)~Ap3nPYvX zug^T4n(k_QQV@X%X;zdhinN*&!=qtH zh>eHQNo_fQ+ zX$XCniw0%t!bu*44dkLCa3C|z>7&Hey8c9fVS~iE|p|NrOY^&&5*QF8bYNs zrzI)J7fCy%j&BP=sgOR&%BlTqz?u?_3yaA+wO)m6h~&2h_F|tY zSXJ~STfbF@`97qIYe~wApVV@cy`UQ61_)vr7^KtqjygJ5hO22U^RS98V7ivME*1a7 zR23@F7(5ARJ~wh8eY2%0X5rCsd1=aQ8`X|TBv186wSph>Zdl6n#SE}&3S(T=44kea e$?hQByNm9&{?*QQ4EddBpQE30_tym~75ER3qDr*@ diff --git a/__pycache__/model_view_store.cpython-311.pyc b/__pycache__/model_view_store.cpython-311.pyc deleted file mode 100644 index d0acdec39a44c5d1ae9e1a6e5d32f5c11267864c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1671 zcmaJ>&u<$=6rNez+3kW^R{|6Yf>BzKOdvw(B}533HWUt|M0F^VwbHQJnK)bahnbme zNrXfWkth-eE~wX>f~s8jQ=H1EXs@V;-i!hg>WMeAw(F!8=_dMRtpaYMH=TU%9c-B46@N87c0rZH+F7d(t)l%-@PW#k5zJP_eF+2G-Jn#EaXhqQL2;)x`mMUc#y>pqPw zlbaF0L)J3JW9eSwfyxCpTenmuI9U$_Pu0XC*Inf@6j4{fj?3;a&H@#XL>D1jnIO{S z-iFH3eXNl;ap9RgsNRlV2_$b?g$*3AJXD1@bm+AxR$Rz%NSFDshA$@z;QRpebJWIg z1=d}(g&E#=+7;tj;8j^=AGK?D(YLs*iLMrniERy}5Kk1Zg0C;=-{X4*Mch?=*DgwC=P95ZWm z7hbpQ3)H6tL| SD4sPxfB%=B{d-Et9OyqoG?+91 diff --git a/__pycache__/model_view_store_home.cpython-311.pyc b/__pycache__/model_view_store_home.cpython-311.pyc deleted file mode 100644 index 7d9d5d40f80d92e2ea184bf254440159c08be08c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1405 zcma)5%}*0S6rb6)c3Ejk{74YLChDaI3E^aj5Q(53L$o!~+Ks zG4X1+dO{8VfPV%U3}!DL)PuL08e=&5X8OU0nE2X#^LF0%@4bDK%UKBM*WE|#vw_eT z_0pnDQ>YJsu!1~PLLT;v0Eb4&z{o&1ke6CQUYZ%JDTLPGX;3NUWs0b9XyL0h!Q+R_ zm4gImVq|ivNba!*!k5e%smgN9wStU!PaN)%ao_U-CgbQ*G4y5GQcf+J;LP=fA4g;) z^2j6;%;9dCOfk0{#X&qfPm1$GvQUs)J~%VavUYTXWZGv>$aw6rKv>tABdeV0)I}L{ zMsCI-+ht-|qfEHmuSm!@XpK73A))dmGchMZyOfp797MIgtELM$>C)k;%0zWow+V+n z09;M=UO1iuoD7vPKx%lnlv+kJ0PK=kN^2&s$KQdJXFIYRpySN!% z9cg&fEb3FhUf~racWGs-5YRnCtMIngzIol2K-ng+0{^vkj3Ro6Zx>QYMpP?|bG0Q& zmeL5?rUfHOxq(PJD0Krz2ug*DNfx(fuMOIF1>?eIYS{Ljh>dc8j@hHJTMbzxg$=th z%bhUvqgi{}7gZ-9MOpRym<;p}4A^>oD6Eg|R4TTf2UP>0dLUE{q^~m1J0Rb}=>rk# zYgTy{OvE{0zZcQB{IQS6FTTCDk?-Hk_iyDdf5=~ce{>^1w3#1TH;3wAh4!GU`qAj# z1YtkAt8ljlPlH~!F>BqZbFU4C@2ZG+78C`8n{Xs1rGDf~jb>V~V1^%t>n4!A6J(wT zws7WOO*XvGD<{>e>e9@;$iB>OncW}E?hUhN)9hJq{do>-3R#slazaLFVo?h4Rs$t> zQu-Js(bQz5F9W7A)-@!#=Ac~`1W+(;l&bo^+Ne~mhu)D>Ac$#TP)_Ujsk3`=td=%1 z!!>jOGmXqirT8DFyU>Yl!xsbl=*2FS-?e{FxSE}|dxsi63eauyN~7apega-q{o+2b pS_)%aGc260A;m5r+_#P{?f%z}bYLj(Z?=A__lLUvd4Nu5{sYtjT%!O0 diff --git a/__pycache__/pay_stripe.cpython-311.pyc b/__pycache__/pay_stripe.cpython-311.pyc deleted file mode 100644 index 6257e5636593989bd7fd335679f897d73e6c88d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7968 zcmbtZTWlLicC99xuO=l@5~;WC*2A*sha^8`%N~36vgNfcE0#SIGa7d&c1dcP4^4N| zwis!bvoJ8)g@IKP0m~pBL?0W+6Z^wJf*_xXKl9ZT8W7Qd00Y4QyMHuh3=HNgx2pM+ z%J4O!uBjj}OY$QHAQ>@i2k5p#x|F;~bH<3e1_9da{7mW_I1HKCeVZK#%h z+oIl>FXUqoW)|y;&2H8gbCqw={(?d16+C7NHT(%Oj$JZ-(fJgG0-_6OqlL8ERMaPO zyLg*%^OqjnEV>_B2#;ciyvNMTM7Bk&sg__6l(ve@KBbn$wo*H_qF402u6qGv`U)O1 z!3Z>9i_l*D22D16pjuPtAU?S0EplugD&{KR*jFtBdJk^$l^n&qST8orGq3$Gpm(om z4@r#}c#2-Y`&E$*g*rZ}p>bagO?xzSepEwqwY6f)9@(ys%C_#?dfOfi-5=G^zORM@ zdo&#WsD^{$p?$`X-=m@DqZ&H))zG;|!x4Ny>?(NQaqx~BcxtO>s(LKx%=eb2u_7aO zi-%wLRL?uCM$0sPf=9v+V3BcCa$*rj)FB?y)bO3V)BI<6R*_W94JXxwgiI^=aq)3j z7WrF}C`PfGh@Y5_N$LVegoq$cxj2hhT~WcN4cvwtR`hln}%|Z8^cOOmX=h|KEz#*OR5x(N-3=H z>H_AkM#IWOKD@LPl_Funa-3JNYSu*(@i}QeDbsR(HmqQg2MdW9jz5y*L_CJ$>Tx~{ zCX0AZiW8lW6TF;As*vsNr#1cIS@;fuSXkv{92c?7Lr<2XVZ!tnMuKWomS6TZnR7pBKY?~LCS zrtjXlJ~eI@P2C&0d404{6shnd5LosThk7%%ocF`d^C1wSQu9l)=^qPACExszXy2@1b z$Gw6U?M3E&dr{eY&kFOub63_+qhQTss*cR?67CBxNy07yHld~m1 zPc?R*Jk@_I5eMf|D#~G|*?2gH4Yycc6w({$k6}$JqT!U{pz2XLYS>~#*sw@qkTu*% zST#a8mPp1`!x>4+;CPW`!v&rMdFpaYazac-)YRZ~G7`ax(!oz)8S|3DFDH^RuM~`| zG=?w8@RB&hr_TN)K`8>dL5!@9C9ps>?B>uIj>6a&4ge=&l3|a?014QzP01i82VjC= z9Q*~7gi4c)*8NHaXaV{}{FCQ@oEaUOxu;-RnZX3tW^Tvvm@GZQGh>NJk^q7-11-6<%D)0hqaD_zaeZIUJ&(f+ep$9(XZtm_f2XbE`Q`1lfvvWIoa<1|*PFMY_LJ|C zwcY+bAsXBKfkU0Wzi;2}IJ4DpCg=0#YU*>|mdv15+m-Y1n||HXlXs!cv+t3u6NG?h z?7>e;FAV3SC~Y(6T}VAJXVD{DT>MX%SWN;G&~CIaLE`uJ!|)W?S1A=59i#T-=6!; zxnG}uc0PSu?k1wPsXNz4#|=024B_Od(`U{aC^dLLk>q1ZMI|wW5A)RF`0Hc56zBT@ zS^M~@D26Zs)tG|*o$=wZTjPDHpy|9PlrY2vtn^0~aO5FGjT4DDKA}o6d;+|L`c}#| z&^OR`GIeP|RhN{Z{{DFgAj#RjNFvt%Co6$baXbPKhHwY#UXK3A^c&V|<97k<9We}n zTT~*@%TfY-Ffp9;y?U<5-u|_<8f#%5*vS+pEF@yMZ$XVk4R!*u-!O)a#=Tmya~}xvcw~?mnln=crK14!unP{s3Po{h!SA z!Q_LYvau;{niTNFWce&8mj?+sPYCJ1X)jlnk}pE(r|>9^K+@=2cdOQR;?0ca9?7~# zboYqHj+jO}`yq^~;fVVGH@k*JWTJ`=aEco>zxaE~$8B~LMC4Dv&JZz}U?DX)bLGu( z&3z^7zM{LYXzUf!UI(!kwm?@&f|YU=BLf$?iqv4RmIGTmKC(`=En&Q71Cm916JMwZC2`*;KAmsa;1tl;a7>#r@-V3+ zlO43s{e$5v@(2aBin%*5XWUO_d^d+Y3Gxy=3c(7Pa+mK}`?jlP%hi%OmUZ>$uAcM= zjio)Cof_8zzbt!1XOC#?k)5Uk8^6?>`nH<}x0(k3-I8s(s5f2ISU)(1*3gx8ckAwM zjqNrkzPaDrM4Tv^aH3$O!A{+tzFXx5WKO6TJOhvYsa_yjs)4`S4=PspuC=(zxR6S( zl%RD;Wgl29`M_p{x0qanuE6zB%6!|%TeMetUPX($E_DDMoX;(A40r9?z+2P?qSs6- zmc^1)BKO)|-MeYjg;atah18AY;Hp(EgAP(l7dT+)u0Fr^RO69YGiQld?!$%Is`VFE zI9Aj5W9Bh>V!e+ZGr`(P!}&!r9EXs({6_*OhJEbzt>NpFslI;2++(^(Hpn#!QpItdiwh9N#Xj~YO1zB5{^f36pLmw_Ec_pDI|hhk3$Rcp8+BJ{epf0 z_67!L3e!9rONiLuqHxp|;1nKHq<*jrP>+p31wlV7%L!TfTT)tESYvYuIVS&{s2?F@ zln@H6H%RU#AqNR@5z-IDaE(8SV0vIT5!MPjn;=WAGdM933rlfgj(m$SGgu)|Ms5+RFMed&pvx`vIG%=v6x zw_ews{&}8lvK{@%n!R~9Y9D%!T@E zcTo2ZYR*vt?#+ni4QkHazaJpwtso6= zg^caL4Y!Q=&|4ojYPG&?JvegN`u03S@|SHuQ_lX!cy=L?cvuAu1fnT4{9r-@@xekW z2l{qkh%N{uJtlCy=g+*=qg^ez1c$XJ7 z=&)7ju*ZD_&?-t;_^#quVMTjIy`vItM8}GqfME3)FlfatIt#ae-YS0AZq7=;5;@T= z?G2}%Nh4t1^a!7gk4)UYeWP&ylkyeM8`6B7Ub(?`$^qvTa+PFoiZm}QzzGb?a5TrT zBvpeI!)n-I)#W8@*b}ql<}hW4Emd6QQ?13-+E;)xa-xB=5M1>o$yP1@4;vf&lz9k( zD-F0~z#)YlGkyNhXH*ijBY#2gBupC_e(8b$FBjcsxBCH8yYD*AAV_1_t%OV0v<= zp=o32>-p!=Y{N0V;aK|SJ4YaoYHUZp^|x)@-u55a@*mN9hqC^Qy8q&uD{ry60z3ZJ zjmd5QsV)Dho#sQ&J#Sk6<8t1L0;k_2CNRx>PwCqDyN2dW zNOBGSwTbdy0eoBm0z!7w*p@lB@%b9J#=Y~lWv=Spt~E9n=-BMh1Hm;eSKqk)WTP*A z<6G9X*1I0ca)+`kud}?y^6wmVTHxfC<0Qer;EuCKt38r+_Ug`F&Dr~{yMBElBWVr2 zS$9x(2Q@ZGk?ubOXGS>mmg7cv>svoF(q?@dU`W2r2Gnp00*xMm^fv$#cgbbJQbJY@ zn}}zV^TD9u5a1RxA_%4z(J=Lp%$;qHTolU$&*0L(0=+ahmL9c z{obJiTJ;Yctk(A|^xFr&d7!oTXKM!Znt?QztMTqB%iHUjU>=o7uZ4jKTOu5C)vsBe zxz@qOT6Je@+Lp6ANxf%%JoEXM9|AGtU*b3NKR=||9P3JtYusp-9n;w{jUCIe&h*$? z-Iv#%UQ1sCyBL4kuA_z=+n@6^YBJR%VcB z8+>m?mX1;hhb%VAeLjOTpAqiEI&(O0VVF^9oKV8wQ!cX?1%|Rrqs}xE)}K+ z_QP-NFP{+Y=XK_M-qOavL;xY|7fL0Uina`G+B1~9S7&;wxr3#WOK?tJOKn+O^2ot- z!SLIB=^N|rb@yM_Y}91ggF1T|6V{&-3Qv z`F;HSV^^0!Ku#@v#V1pQ{D}_@QR_50o<`< zlG37qrEP~rWr;a5m|A&aoD=>PZik~L$hqnyS%0W~3d#=|hjm#@dy`g8? z7{oS{Vr_u>8u>=av}07G6a*Fhja1Ld@kq-H$L3K7YdLE-(uqDmstGz%`wQT<0?Adb z!J*f*P=SHETxse>g(ZtBQ;XU|?Vbh+hdUO9Y+KPRgkplV!HU!ySG3MZGX1q@pucqq z^@c`Bk!&xr^`>8~IdT@9@}POr9NB1}T}js?HbSY#uTr{_wp|N~!3sm+TrPxM;AT&8 z)u0j?OVknzG+fSe(FQ{c-}d}8{m06UPXxNQ(H14Fr6{#zxiknx)Q-x$>sw)@1qE0l zF!)ibe$+-PO4@E950JabO`-(Ni4L6CPO0>T(g1gl%YF65m#0Rv7XvPWEXUr+p7r>o zaF%#>(zgpa?u9`X-f2Ntxt!xIWWR8Ng5{cXVSzcmdF<%1V_Dg46uK>I<@4Ekp^oI2 z#cnv}rHCAW!CDdE?^W`9*Z#FcrFUS>c&r;Yjawhy-Lu}k{`sTPl0H_}$2RpbP|(zQ z>*C$%_4D_8ejY06Q)PW>Q=bAQUiI;M*M0HmgJ1TQ^qI0gv#HO3@;Kdd`_f&zoIbdj zKKNUD=-2en{p02IklGR!7|Wm+V3j;h@45Be zdRQ7BFQ+Fq(-S3qLhdnWU<{C6D2)tCb3iyQ>YbE+4V6~6B(VX~lv9ZgbbAbVCv7L4fHyDLt02AmME^TmyhwZ2c-m*Xo(oGuO{lI(Dtj ztj=7YsqF44sd$yuo~oMCj#kMlpj*`rS4k5(744K#C2z(!mMXYm!`+ldf@-5M^jca+ zGMBV2$vg>Ut^uW!Oq-lsYVkx*HER)qQ3afAOq!gYHQWSe4=8}gqRN9==bL_dNoV%)gNDzX<= z`d)S^CYF=9>Kz31X;2sMqJ9YBJ%j;-!wC3labpdlhK#hekKV^YgyU$i0JithmaeJv z^_Nt<%4+|=?x0pLHMO``@Jy&{`0_E|1|E0|zM}G5Md1_aFv$<13ns;_F8##sPP`h4 z_l15UW|}d9&LcSl-vd;WilS5#hN4yp!T?bYl!zH$)m^;`w)CsC-f5>JK-VOto+>ACPCluGiEv66P!!%MsG}%@be^Gx|V$lg>b@Xx~Vxm00+z# zb9xBHTpMX-=X7%JJSa!s3A_wEN&e=>bc+=ypn0+j%vTl~*lnY|HBy458-Z5IWq2?hs))P1Zt zL>%R8FU0GrDHYzE7b^g}hKV2K5-qv{5IPH805>epuhw26bS2@ny^laRQp9~lvy7uC wTDERQ?Ij83A&H(Z$g}_H1$nTzsTbt&;-)UUBpNNq(|>i@eiRVU*t>}O8!6TO(f|Me diff --git a/app.log b/app.log deleted file mode 100644 index f41e58ab..00000000 --- a/app.log +++ /dev/null @@ -1,66 +0,0 @@ -Request: 127.0.0.1 GET http /store/supplier_purchase_orders? Host: 127.0.0.1:5000 -User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0 -Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8 -Accept-Language: en-GB,en;q=0.5 -Accept-Encoding: gzip, deflate, br, zstd -Dnt: 1 -Connection: keep-alive -Cookie: session=.eJytVlmPo0gS_isjSzNP4-rkhpJauz4xlMEGcxherITEkJw2hzHM9H_fxNU7PQ-zl7SS05AZQcQXGedvM9i1SVXjJkJ2E9Wz999mISwvEBW4vDRtVUez97buol__dNy9GD9PowLifPY-i1APa_RWYITyqK3KpsBt8vd4or6FVTH7dXbFddOWsCACZ1aE0EDOMLqEXV1HZThcUHSFXd7O3ssuz1-kOopxVf4F4RMA9cf7ZTICELmv5-88J9KBxIWixCEgQQEEkALX6DopbC4vxJdHVOMrjtDs_QrzJnpRcBnmHYrQxVlYP7R-2knITXcjqv5sfNPV3w3S_mn3_DQZPvtG7qupr5e2yqKS0Fn6ylMwgFeeQREMBAQYluy4QIhEimVoJIEIsCgiELvvboBhGDXNHxKiQU0COcQHrGbwrOD9Ss2DQpv2Sy21aRPouoJ7DM_6qKQVhjsThDuN3w9S5p-9NihRAkel11M_91O_Osg5G2COCgcuQWez0lZcGtDgoZTg7W0oBc5otrzXDqu8iddvV09uj1ogXwJa0VQxKfrs2C027eqYMBifGxrGHs_tYk-iF8meEbcnES_sPFnsPqB3EW5BbN5KzhFyLQIDYJXgw7UHFVIV6psxbGst61vzylrNXB2P8hVsLp07r3YZjBXfWPODVFeAt8qnHozuvTO4fMyhuwP5gV0Ix9DY4E7mH4LffRz7B3U4fOyzA3JXOF0Ez5Ode_rJ9J15fF5IThSXueiLmh1Tsrk2536wcj22rJbzLKXlZoMzd64m7HzVwr3dczBuCt6P5h9Pbuse093c3oFtv0G7PAa0F9BPNVvKiahDJdKOyWKhWDKOapsTDnO6foB6z8lZgtNwzcgQt_fLk3EuYFybyTGuHT14ExlvU7FPjuNruv8Q1F1XrqgFCYPoecN11FwgCUFKoCUg8AJP_zjHJChEngXglQV_ESUne1QoHSuNUppcuFJ4JbudnRXZF-3Nn_al84jOvm1mLBuk6sPfxZSTbffaNqHMQZXeiLAOunodFNvWP5EPCidD9HbwV1wLXTMLZAcENDcGbg7gSzCXBK49Kc_9HUrCwugILfPlZ45kqQtp6obkZOHTVALdvvNoqZ1CNpTzFO2c4VNHAtBuOR6w-CChWYbFlvbOZhLiz_D0zn6C5O2wH-3RX-uFlhpAW6NMt4ixtMfqsjfotJ5o65DVRxP7aw8cGU3S13GvlooUymHhr0nc7cw-HOzRONmDickq9Iykw59TIdcyoqvYAu-sjqqlyr5rdKHMlRNmdF5mBFfub6UETZeZKj3B0mrWgizH1qwNr609sjadZoWMOzmicFrPzZspPX3XZIjcbF9QN182G_9sPoJSbyHRb8joxbcv9Edw-vHdmfHzsMgL6DqZkt4Kz32O_un_kPLEHu88ySS4ALpHZ_NpZdTZoBMLnpOnNZKbyre8kyVnw93mp-zG20U2laCbdzbwId0wWhpzB2sx6ukLLzsFHLF7IGeDnmq0NvmZcfCkg-gCcL0U9dRmtULhdFdjD5aTaes80ccl9qxN7xdO8YoNOn_hOqzV3LC3pWXnpkNzySkzGZ-WKjv1TY2WcLhdthAkvLUJJ1wdicv0M540LkiXDMr1UyQjwy8k29-ZHrkbeSp1DhfpLLVtL1q46p4DvCYr7XSiFONeUpEhr3q6bDVwdaLDwwZP0k6a05yqhQuoNKq5SMfw_sjlxT3ZMdw2TSR_KdTNqGyXknFudsG9W1Ku-2HsVogV6T34OO0716lOmC0jJ0mets_1Fx1Ak1f4A19So5_c8k5cicqTbqTj5tD0uibyQJXT8SYJoIOyJH2sxYtHHVSznN-zqEhlXBQcrdIPK8tu3qEYvLslNKk2nvKmzsc5HDf2Hfu9VT-3xwvFzQcJyb4mdJA54GTvKp62cU2Scv2q6SRpUKpU0Z7e4ZmG1lZe3r1KeDbKXFHNfP2YO6r03O-sPVyqmrEzlLjty8cJp1A2NsM293Lmkkz1qwmr29QZyX-J0U-3urriPPrpc174dfYqWJd2ePEsI1iTpvfZ-3B5rV79ryPNeRbL6dDedc1dJSf8vB8E2jRGZ-cuYKSqJL9n_8sI8i9aPymp32sszTNTjcXfi64oSeDzoGmIgqRtb837ly8oeszLHmY04PnoyicifpZvXfP2mj4mVV-Iru-DwX8GVeIw-3fME0tVhhM9lErQP07mMz5eKwu157LfEvINh203DWp_IGze4ho-YAvrF5zP1y8cg5grzbJAQBzNCVeRvdJCCIEgCmyAePZvzVdWBL_UX2_xL-jrS9bPzOJnekt-ISp_2Ef2nyIb8haht1sZTx7Hk8NEOlosYk0x3BKq6z6uEpM3mCq4HYtsN-7libEL_ptZrbsh2JJpbHLGjAY0O6fAnOIsinoH_Dug3ihB8Gffvn37BzRZnhg.Zw5Mmg.gBkevkFjMnKbLNa4Z7YPzmq0RA0 -Upgrade-Insecure-Requests: 1 -Sec-Fetch-Dest: document -Sec-Fetch-Mode: navigate -Sec-Fetch-Site: none -Sec-Fetch-User: ?1 -Sec-Gpc: 1 -Priority: u=0, i - - -Request data: b'' -Traceback: Traceback (most recent call last): - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 1473, in wsgi_app - response = self.full_dispatch_request() - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 882, in full_dispatch_request - rv = self.handle_user_exception(e) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask_cors\extension.py", line 178, in wrapped_function - return cors_after_request(app.make_response(f(*args, **kwargs))) - ^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 880, in full_dispatch_request - rv = self.dispatch_request() - ^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 865, in dispatch_request - return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\supplier_purchase_order.py", line 43, in supplier_purchase_orders - return render_template('pages/store/_supplier_purchase_orders.html', model = model, datetime = datetime) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 150, in render_template - return _render(app, template, context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 131, in _render - rv = template.render(context) - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 1304, in render - self.environment.handle_exception() - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 939, in handle_exception - raise rewrite_traceback_stack(source=source) - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_supplier_purchase_orders.html", line 1, in top-level template code - {% extends 'layouts/layout.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\layouts\layout.html", line 329, in top-level template code - {% block page_body %}{% endblock %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_supplier_purchase_orders.html", line 55, in block 'page_body' - {% include 'components/store/_row_supplier_purchase_order.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_row_supplier_purchase_order.html", line 62, in top-level template code - {% include 'components/store/_preview_order_items.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_preview_order_items.html", line 4, in top-level template code - {% set str_items = model.convert_list_objects_to_preview_str(order_items) %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\models\model_view_base.py", line 367, in convert_list_objects_to_preview_str - preview_str += obj_json[obj_json[Base.FLAG_NAME_ATTR_OPTION_TEXT]] -TypeError: can only concatenate str (not "NoneType") to str - diff --git a/app.log.1 b/app.log.1 deleted file mode 100644 index a4f829e9..00000000 --- a/app.log.1 +++ /dev/null @@ -1,97 +0,0 @@ -Traceback: Traceback (most recent call last): - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 1473, in wsgi_app - response = self.full_dispatch_request() - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 882, in full_dispatch_request - rv = self.handle_user_exception(e) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask_cors\extension.py", line 178, in wrapped_function - return cors_after_request(app.make_response(f(*args, **kwargs))) - ^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 880, in full_dispatch_request - rv = self.dispatch_request() - ^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 865, in dispatch_request - return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\supplier_purchase_order.py", line 43, in supplier_purchase_orders - return render_template('pages/store/_supplier_purchase_orders.html', model = model, datetime = datetime) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 150, in render_template - return _render(app, template, context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 131, in _render - rv = template.render(context) - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 1304, in render - self.environment.handle_exception() - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 939, in handle_exception - raise rewrite_traceback_stack(source=source) - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_supplier_purchase_orders.html", line 1, in top-level template code - {% extends 'layouts/layout.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\layouts\layout.html", line 329, in top-level template code - {% block page_body %}{% endblock %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_supplier_purchase_orders.html", line 55, in block 'page_body' - {% include 'components/store/_row_supplier_purchase_order.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_row_supplier_purchase_order.html", line 62, in top-level template code - {% include 'components/store/_preview_order_items.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_preview_order_items.html", line 4, in top-level template code - {% set str_items = model.convert_list_objects_to_preview_str(order_items) %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\models\model_view_base.py", line 366, in convert_list_objects_to_preview_str - preview_str += obj_json[obj_json[Base.FLAG_NAME_ATTR_OPTION_TEXT]] -TypeError: can only concatenate str (not "NoneType") to str - -Exception on /store/supplier_purchase_orders [GET] -Traceback (most recent call last): - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 1473, in wsgi_app - response = self.full_dispatch_request() - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 882, in full_dispatch_request - rv = self.handle_user_exception(e) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask_cors\extension.py", line 178, in wrapped_function - return cors_after_request(app.make_response(f(*args, **kwargs))) - ^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 880, in full_dispatch_request - rv = self.dispatch_request() - ^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 865, in dispatch_request - return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\supplier_purchase_order.py", line 43, in supplier_purchase_orders - return render_template('pages/store/_supplier_purchase_orders.html', model = model, datetime = datetime) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 150, in render_template - return _render(app, template, context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 131, in _render - rv = template.render(context) - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 1304, in render - self.environment.handle_exception() - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 939, in handle_exception - raise rewrite_traceback_stack(source=source) - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_supplier_purchase_orders.html", line 1, in top-level template code - {% extends 'layouts/layout.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\layouts\layout.html", line 329, in top-level template code - {% block page_body %}{% endblock %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_supplier_purchase_orders.html", line 55, in block 'page_body' - {% include 'components/store/_row_supplier_purchase_order.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_row_supplier_purchase_order.html", line 62, in top-level template code - {% include 'components/store/_preview_order_items.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_preview_order_items.html", line 4, in top-level template code - {% set str_items = model.convert_list_objects_to_preview_str(order_items) %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\models\model_view_base.py", line 367, in convert_list_objects_to_preview_str - preview_str += obj_json[obj_json[Base.FLAG_NAME_ATTR_OPTION_TEXT]] -TypeError: can only concatenate str (not "NoneType") to str -Server Error: 500 Internal Server Error: The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. diff --git a/app.log.2 b/app.log.2 deleted file mode 100644 index 0b999dc7..00000000 --- a/app.log.2 +++ /dev/null @@ -1,67 +0,0 @@ -Exception on /store/supplier_purchase_orders [GET] -Traceback (most recent call last): - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 1473, in wsgi_app - response = self.full_dispatch_request() - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 882, in full_dispatch_request - rv = self.handle_user_exception(e) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask_cors\extension.py", line 178, in wrapped_function - return cors_after_request(app.make_response(f(*args, **kwargs))) - ^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 880, in full_dispatch_request - rv = self.dispatch_request() - ^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 865, in dispatch_request - return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\supplier_purchase_order.py", line 43, in supplier_purchase_orders - return render_template('pages/store/_supplier_purchase_orders.html', model = model, datetime = datetime) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 150, in render_template - return _render(app, template, context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 131, in _render - rv = template.render(context) - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 1304, in render - self.environment.handle_exception() - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 939, in handle_exception - raise rewrite_traceback_stack(source=source) - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_supplier_purchase_orders.html", line 1, in top-level template code - {% extends 'layouts/layout.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\layouts\layout.html", line 329, in top-level template code - {% block page_body %}{% endblock %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_supplier_purchase_orders.html", line 55, in block 'page_body' - {% include 'components/store/_row_supplier_purchase_order.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_row_supplier_purchase_order.html", line 62, in top-level template code - {% include 'components/store/_preview_order_items.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_preview_order_items.html", line 4, in top-level template code - {% set str_items = model.convert_list_objects_to_preview_str(order_items) %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\models\model_view_base.py", line 366, in convert_list_objects_to_preview_str - preview_str += obj_json[obj_json[Base.FLAG_NAME_ATTR_OPTION_TEXT]] -TypeError: can only concatenate str (not "NoneType") to str -Server Error: 500 Internal Server Error: The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. -Request: 127.0.0.1 GET http /store/supplier_purchase_orders? Host: 127.0.0.1:5000 -User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0 -Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8 -Accept-Language: en-GB,en;q=0.5 -Accept-Encoding: gzip, deflate, br, zstd -Dnt: 1 -Connection: keep-alive -Cookie: session=.eJytVlmPo0gS_isjSzNP4-rkhpJauz4xlMEGcxherITEkJw2hzHM9H_fxNU7PQ-zl7SS05AZQcQXGedvM9i1SVXjJkJ2E9Wz999mISwvEBW4vDRtVUez97buol__dNy9GD9PowLifPY-i1APa_RWYITyqK3KpsBt8vd4or6FVTH7dXbFddOWsCACZ1aE0EDOMLqEXV1HZThcUHSFXd7O3ssuz1-kOopxVf4F4RMA9cf7ZTICELmv5-88J9KBxIWixCEgQQEEkALX6DopbC4vxJdHVOMrjtDs_QrzJnpRcBnmHYrQxVlYP7R-2knITXcjqv5sfNPV3w3S_mn3_DQZPvtG7qupr5e2yqKS0Fn6ylMwgFeeQREMBAQYluy4QIhEimVoJIEIsCgiELvvboBhGDXNHxKiQU0COcQHrGbwrOD9Ss2DQpv2Sy21aRPouoJ7DM_6qKQVhjsThDuN3w9S5p-9NihRAkel11M_91O_Osg5G2COCgcuQWez0lZcGtDgoZTg7W0oBc5otrzXDqu8iddvV09uj1ogXwJa0VQxKfrs2C027eqYMBifGxrGHs_tYk-iF8meEbcnES_sPFnsPqB3EW5BbN5KzhFyLQIDYJXgw7UHFVIV6psxbGst61vzylrNXB2P8hVsLp07r3YZjBXfWPODVFeAt8qnHozuvTO4fMyhuwP5gV0Ix9DY4E7mH4LffRz7B3U4fOyzA3JXOF0Ez5Ode_rJ9J15fF5IThSXueiLmh1Tsrk2536wcj22rJbzLKXlZoMzd64m7HzVwr3dczBuCt6P5h9Pbuse093c3oFtv0G7PAa0F9BPNVvKiahDJdKOyWKhWDKOapsTDnO6foB6z8lZgtNwzcgQt_fLk3EuYFybyTGuHT14ExlvU7FPjuNruv8Q1F1XrqgFCYPoecN11FwgCUFKoCUg8AJP_zjHJChEngXglQV_ESUne1QoHSuNUppcuFJ4JbudnRXZF-3Nn_al84jOvm1mLBuk6sPfxZSTbffaNqHMQZXeiLAOunodFNvWP5EPCidD9HbwV1wLXTMLZAcENDcGbg7gSzCXBK49Kc_9HUrCwugILfPlZ45kqQtp6obkZOHTVALdvvNoqZ1CNpTzFO2c4VNHAtBuOR6w-CChWYbFlvbOZhLiz_D0zn6C5O2wH-3RX-uFlhpAW6NMt4ixtMfqsjfotJ5o65DVRxP7aw8cGU3S13GvlooUymHhr0nc7cw-HOzRONmDickq9Iykw59TIdcyoqvYAu-sjqqlyr5rdKHMlRNmdF5mBFfub6UETZeZKj3B0mrWgizH1qwNr609sjadZoWMOzmicFrPzZspPX3XZIjcbF9QN182G_9sPoJSbyHRb8joxbcv9Edw-vHdmfHzsMgL6DqZkt4Kz32O_un_kPLEHu88ySS4ALpHZ_NpZdTZoBMLnpOnNZKbyre8kyVnw93mp-zG20U2laCbdzbwId0wWhpzB2sx6ukLLzsFHLF7IGeDnmq0NvmZcfCkg-gCcL0U9dRmtULhdFdjD5aTaes80ccl9qxN7xdO8YoNOn_hOqzV3LC3pWXnpkNzySkzGZ-WKjv1TY2WcLhdthAkvLUJJ1wdicv0M540LkiXDMr1UyQjwy8k29-ZHrkbeSp1DhfpLLVtL1q46p4DvCYr7XSiFONeUpEhr3q6bDVwdaLDwwZP0k6a05yqhQuoNKq5SMfw_sjlxT3ZMdw2TSR_KdTNqGyXknFudsG9W1Ku-2HsVogV6T34OO0716lOmC0jJ0mets_1Fx1Ak1f4A19So5_c8k5cicqTbqTj5tD0uibyQJXT8SYJoIOyJH2sxYtHHVSznN-zqEhlXBQcrdIPK8tu3qEYvLslNKk2nvKmzsc5HDf2Hfu9VT-3xwvFzQcJyb4mdJA54GTvKp62cU2Scv2q6SRpUKpU0Z7e4ZmG1lZe3r1KeDbKXFHNfP2YO6r03O-sPVyqmrEzlLjty8cJp1A2NsM293Lmkkz1qwmr29QZyX-J0U-3urriPPrpc174dfYqWJd2ePEsI1iTpvfZ-3B5rV79ryPNeRbL6dDedc1dJSf8vB8E2jRGZ-cuYKSqJL9n_8sI8i9aPymp32sszTNTjcXfi64oSeDzoGmIgqRtb837ly8oeszLHmY04PnoyicifpZvXfP2mj4mVV-Iru-DwX8GVeIw-3fME0tVhhM9lErQP07mMz5eKwu157LfEvINh203DWp_IGze4ho-YAvrF5zP1y8cg5grzbJAQBzNCVeRvdJCCIEgCmyAePZvzVdWBL_UX2_xL-jrS9bPzOJnekt-ISp_2Ef2nyIb8haht1sZTx7Hk8NEOlosYk0x3BKq6z6uEpM3mCq4HYtsN-7libEL_ptZrbsh2JJpbHLGjAY0O6fAnOIsinoH_Dug3ihB8Gffvn37BzRZnhg.Zw5Mmg.gBkevkFjMnKbLNa4Z7YPzmq0RA0 -Upgrade-Insecure-Requests: 1 -Sec-Fetch-Dest: document -Sec-Fetch-Mode: navigate -Sec-Fetch-Site: none -Sec-Fetch-User: ?1 -Sec-Gpc: 1 -Priority: u=0, i - - -Request data: b'' diff --git a/app.log.3 b/app.log.3 deleted file mode 100644 index 8a03ce02..00000000 --- a/app.log.3 +++ /dev/null @@ -1,66 +0,0 @@ -Request: 127.0.0.1 GET http /store/supplier_purchase_orders? Host: 127.0.0.1:5000 -User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0 -Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8 -Accept-Language: en-GB,en;q=0.5 -Accept-Encoding: gzip, deflate, br, zstd -Dnt: 1 -Connection: keep-alive -Cookie: session=.eJytVlmPo0gS_isjSzNP4-rkhpJauz4xlMEGcxherITEkJw2hzHM9H_fxNU7PQ-zl7SS05AZQcQXGedvM9i1SVXjJkJ2E9Wz999mISwvEBW4vDRtVUez97buol__dNy9GD9PowLifPY-i1APa_RWYITyqK3KpsBt8vd4or6FVTH7dXbFddOWsCACZ1aE0EDOMLqEXV1HZThcUHSFXd7O3ssuz1-kOopxVf4F4RMA9cf7ZTICELmv5-88J9KBxIWixCEgQQEEkALX6DopbC4vxJdHVOMrjtDs_QrzJnpRcBnmHYrQxVlYP7R-2knITXcjqv5sfNPV3w3S_mn3_DQZPvtG7qupr5e2yqKS0Fn6ylMwgFeeQREMBAQYluy4QIhEimVoJIEIsCgiELvvboBhGDXNHxKiQU0COcQHrGbwrOD9Ss2DQpv2Sy21aRPouoJ7DM_6qKQVhjsThDuN3w9S5p-9NihRAkel11M_91O_Osg5G2COCgcuQWez0lZcGtDgoZTg7W0oBc5otrzXDqu8iddvV09uj1ogXwJa0VQxKfrs2C027eqYMBifGxrGHs_tYk-iF8meEbcnES_sPFnsPqB3EW5BbN5KzhFyLQIDYJXgw7UHFVIV6psxbGst61vzylrNXB2P8hVsLp07r3YZjBXfWPODVFeAt8qnHozuvTO4fMyhuwP5gV0Ix9DY4E7mH4LffRz7B3U4fOyzA3JXOF0Ez5Ode_rJ9J15fF5IThSXueiLmh1Tsrk2536wcj22rJbzLKXlZoMzd64m7HzVwr3dczBuCt6P5h9Pbuse093c3oFtv0G7PAa0F9BPNVvKiahDJdKOyWKhWDKOapsTDnO6foB6z8lZgtNwzcgQt_fLk3EuYFybyTGuHT14ExlvU7FPjuNruv8Q1F1XrqgFCYPoecN11FwgCUFKoCUg8AJP_zjHJChEngXglQV_ESUne1QoHSuNUppcuFJ4JbudnRXZF-3Nn_al84jOvm1mLBuk6sPfxZSTbffaNqHMQZXeiLAOunodFNvWP5EPCidD9HbwV1wLXTMLZAcENDcGbg7gSzCXBK49Kc_9HUrCwugILfPlZ45kqQtp6obkZOHTVALdvvNoqZ1CNpTzFO2c4VNHAtBuOR6w-CChWYbFlvbOZhLiz_D0zn6C5O2wH-3RX-uFlhpAW6NMt4ixtMfqsjfotJ5o65DVRxP7aw8cGU3S13GvlooUymHhr0nc7cw-HOzRONmDickq9Iykw59TIdcyoqvYAu-sjqqlyr5rdKHMlRNmdF5mBFfub6UETZeZKj3B0mrWgizH1qwNr609sjadZoWMOzmicFrPzZspPX3XZIjcbF9QN182G_9sPoJSbyHRb8joxbcv9Edw-vHdmfHzsMgL6DqZkt4Kz32O_un_kPLEHu88ySS4ALpHZ_NpZdTZoBMLnpOnNZKbyre8kyVnw93mp-zG20U2laCbdzbwId0wWhpzB2sx6ukLLzsFHLF7IGeDnmq0NvmZcfCkg-gCcL0U9dRmtULhdFdjD5aTaes80ccl9qxN7xdO8YoNOn_hOqzV3LC3pWXnpkNzySkzGZ-WKjv1TY2WcLhdthAkvLUJJ1wdicv0M540LkiXDMr1UyQjwy8k29-ZHrkbeSp1DhfpLLVtL1q46p4DvCYr7XSiFONeUpEhr3q6bDVwdaLDwwZP0k6a05yqhQuoNKq5SMfw_sjlxT3ZMdw2TSR_KdTNqGyXknFudsG9W1Ku-2HsVogV6T34OO0716lOmC0jJ0mets_1Fx1Ak1f4A19So5_c8k5cicqTbqTj5tD0uibyQJXT8SYJoIOyJH2sxYtHHVSznN-zqEhlXBQcrdIPK8tu3qEYvLslNKk2nvKmzsc5HDf2Hfu9VT-3xwvFzQcJyb4mdJA54GTvKp62cU2Scv2q6SRpUKpU0Z7e4ZmG1lZe3r1KeDbKXFHNfP2YO6r03O-sPVyqmrEzlLjty8cJp1A2NsM293Lmkkz1qwmr29QZyX-J0U-3urriPPrpc174dfYqWJd2ePEsI1iTpvfZ-3B5rV79ryPNeRbL6dDedc1dJSf8vB8E2jRGZ-cuYKSqJL9n_8sI8i9aPymp32sszTNTjcXfi64oSeDzoGmIgqRtb837ly8oeszLHmY04PnoyicifpZvXfP2mj4mVV-Iru-DwX8GVeIw-3fME0tVhhM9lErQP07mMz5eKwu157LfEvINh203DWp_IGze4ho-YAvrF5zP1y8cg5grzbJAQBzNCVeRvdJCCIEgCmyAePZvzVdWBL_UX2_xL-jrS9bPzOJnekt-ISp_2Ef2nyIb8haht1sZTx7Hk8NEOlosYk0x3BKq6z6uEpM3mCq4HYtsN-7libEL_ptZrbsh2JJpbHLGjAY0O6fAnOIsinoH_Dug3ihB8Gffvn37BzRZnhg.Zw5Mmg.gBkevkFjMnKbLNa4Z7YPzmq0RA0 -Upgrade-Insecure-Requests: 1 -Sec-Fetch-Dest: document -Sec-Fetch-Mode: navigate -Sec-Fetch-Site: none -Sec-Fetch-User: ?1 -Sec-Gpc: 1 -Priority: u=0, i - - -Request data: b'' -Traceback: Traceback (most recent call last): - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 1473, in wsgi_app - response = self.full_dispatch_request() - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 882, in full_dispatch_request - rv = self.handle_user_exception(e) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask_cors\extension.py", line 178, in wrapped_function - return cors_after_request(app.make_response(f(*args, **kwargs))) - ^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 880, in full_dispatch_request - rv = self.dispatch_request() - ^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 865, in dispatch_request - return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\supplier_purchase_order.py", line 43, in supplier_purchase_orders - return render_template('pages/store/_supplier_purchase_orders.html', model = model, datetime = datetime) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 150, in render_template - return _render(app, template, context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 131, in _render - rv = template.render(context) - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 1304, in render - self.environment.handle_exception() - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 939, in handle_exception - raise rewrite_traceback_stack(source=source) - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_supplier_purchase_orders.html", line 1, in top-level template code - {% extends 'layouts/layout.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\layouts\layout.html", line 329, in top-level template code - {% block page_body %}{% endblock %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_supplier_purchase_orders.html", line 55, in block 'page_body' - {% include 'components/store/_row_supplier_purchase_order.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_row_supplier_purchase_order.html", line 62, in top-level template code - {% include 'components/store/_preview_order_items.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_preview_order_items.html", line 4, in top-level template code - {% set str_items = model.convert_list_objects_to_preview_str(order_items) %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\models\model_view_base.py", line 366, in convert_list_objects_to_preview_str - preview_str += obj_json[obj.FLAG_NAME] -TypeError: can only concatenate str (not "NoneType") to str - diff --git a/pay_stripe.py b/pay_stripe.py deleted file mode 100644 index 821e3bde..00000000 --- a/pay_stripe.py +++ /dev/null @@ -1,182 +0,0 @@ -""" -Project: PARTS Website -Author: Edward Middleton-Smith - Precision And Research Technology Systems Limited - -Technology: App General -Feature: App - -Description: -Initializes the Flask application, sets the configuration based on the environment, and defines two routes (/ and /about) that render templates with the specified titles. -""" - -# IMPORTS -# VARIABLE INSTANTIATION -# METHODS - -# IMPORTS -import os -import stripe -import json -from flask import Flask, render_template, render_template_string, jsonify, request, send_from_directory, redirect -from dotenv import load_dotenv, find_dotenv - -from config import app_config - -# VARIABLE INSTANTIATION -key_secret = os.environ.get("KEY_SECRET_STRIPE") -key_public = os.environ.get("KEY_PUBLIC_STRIPE") # 'pk_test_51OGrxlL7BuLKjoMpfpfw7bSmZZK1MhqMoQ5VhW2jUj7YtoEejO4vqnxKPiqTHHuh9U4qqkywbPCSI9TpFKtr4SYH007KHMWs68' - -# METHODS -def create_product_price(): - print(f'stripe.api_key = {stripe.api_key}') - starter_subscription = stripe.Product.create( - name="Starter Subscription", - description="$12/Month subscription", - ) - - starter_subscription_price = stripe.Price.create( - unit_amount=1200, - currency="usd", - recurring={"interval": "month"}, - product=starter_subscription['id'], - ) - - # Save these identifiers - print(f"Success! Here is your starter subscription product id: {starter_subscription.id}") - print(f"Success! Here is your starter subscription price id: {starter_subscription_price.id}") - - return starter_subscription_price.id - -def get_file_str(f_address): - f = open(f_address) - return f.read() - -# Ensure environment variables are set. -price = os.getenv('PRICE') -if price is None or price == 'price_12345' or price == '': - print('You must set a Price ID in .env. Please see the README.') - exit(0) - -# For sample support and debugging, not required for production: -stripe.set_app_info( - 'stripe-samples/checkout-one-time-payments', - version='0.0.1', - url='https://github.com/stripe-samples/checkout-one-time-payments') - -# stripe.api_version = '2020-08-27' -stripe.api_key = key_secret # os.getenv('KEY_SECRET_STRIPE') - -# app_dir = str(os.path.abspath(os.path.join( -# __file__, "..", ".."))) -# static_dir = str(os.path.abspath(os.path.join( -# app_dir, os.getenv("STATIC_DIR")))) -# template_dir = str(os.path.abspath(os.path.join( -# app_dir, os.getenv("TEMPLATE_DIR")))) -app = Flask(__name__) # , static_folder=static_dir, - # static_url_path="", template_folder=template_dir) -app.config.from_object(app_config) - -@app.route('/', methods=['GET']) -def home(): - # return render_template(f'{app_dir}\\templates\\_home.html') # f'{app_dir}\\templates\\layout.html') - # return render_template_string(get_file_str(f'{app_dir}\\templates\\_home.html')) # f'{app_dir}\\templates\\layout.html') - return render_template('_home.html', title='Home') - -@app.route('/store', methods=['GET']) -def store_home(): - return render_template('_store_home.html', title='Store Home') - -@app.route('/contact') -def contact(): - return render_template('_contact.html', title='Contact Us') - - -@app.route('/config', methods=['GET']) -def get_publishable_key(): - price = stripe.Price.retrieve(os.getenv('PRICE')) - return jsonify({ - 'publicKey': key_public, # os.getenv('KEY_PUBLIC_STRIPE'), - 'unitAmount': price['unit_amount'], - 'currency': price['currency'] - }) - -# Fetch the Checkout Session to display the JSON result on the success page -@app.route('/checkout-session', methods=['GET']) -def get_checkout_session(): - id = request.args.get('sessionId') - print(f'checkout session id: {id}') - checkout_session = stripe.checkout.Session.retrieve(id) - return jsonify(checkout_session) - - -@app.route('/create-checkout-session', methods=['POST']) -def create_checkout_session(): - quantity = request.form.get('quantity', 1) - domain_url = os.getenv('DOMAIN') - - try: - # Create new Checkout Session for the order - # Other optional params include: - # [billing_address_collection] - to display billing address details on the page - # [customer] - if you have an existing Stripe Customer ID - # [payment_intent_data] - lets capture the payment later - # [customer_email] - lets you prefill the email input in the form - # [automatic_tax] - to automatically calculate sales tax, VAT and GST in the checkout page - # For full details see https://stripe.com/docs/api/checkout/sessions/create - - # ?session_id={CHECKOUT_SESSION_ID} means the redirect will have the session ID set as a query param - checkout_session = stripe.checkout.Session.create( - success_url=domain_url + '/success.html?session_id={CHECKOUT_SESSION_ID}', - cancel_url=domain_url + '/canceled.html', - mode='subscription', # 'payment', - # automatic_tax={'enabled': True}, - line_items=[{ - 'price': os.getenv('PRICE'), - 'quantity': quantity, - }] - ) - return redirect(checkout_session.url, code=303) - except Exception as e: - return jsonify(error=str(e)), 403 - - -@app.route('/webhook', methods=['POST']) -def webhook_received(): - # You can use webhooks to receive information about asynchronous payment events. - # For more about our webhook events check out https://stripe.com/docs/webhooks. - webhook_secret = os.getenv('STRIPE_WEBHOOK_SECRET') - request_data = json.loads(request.data) - - if webhook_secret: - # Retrieve the event by verifying the signature using the raw body and secret if webhook signing is configured. - signature = request.headers.get('stripe-signature') - try: - event = stripe.Webhook.construct_event( - payload=request.data, sig_header=signature, secret=webhook_secret) - data = event['data'] - except Exception as e: - return e - # Get the type of webhook event sent - used to check the status of PaymentIntents. - event_type = event['type'] - else: - data = request_data['data'] - event_type = request_data['type'] - data_object = data['object'] - - print('event ' + event_type) - - if event_type == 'checkout.session.completed': - print('🔔 Payment succeeded!') - - return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS}) - - -if __name__ == '__main__': - # stripe.api_key = key_secret - - # create_product_price() - - # Setup Stripe python client library. - load_dotenv(find_dotenv()) - app.run(port=4242, debug=True) \ No newline at end of file diff --git a/routes.py b/routes.py deleted file mode 100644 index d93a97ad..00000000 --- a/routes.py +++ /dev/null @@ -1,54 +0,0 @@ -""" -Project: PARTS Website -Author: Edward Middleton-Smith - Precision And Research Technology Systems Limited - -Technology: Backend -Feature: Controller - Webpage routing - -Description: -Defines the routes and view functions for each page. -Manages the interaction between the frontend and backend. -""" - -from flask import render_template, url_for, Blueprint -from app import app -from app.forms import Form_Contact -# from forms import MyForm -# from app import MyForm -from model_view_contact import Model_View_Contact - -""" -@app.route('/', methods=['GET']) -def home(): - return render_template('_home.html', title='Home') - -@app.route('/store', methods=['GET']) -def store_home(): - return render_template('_store_home.html', title='Store Home') - -@app.route('/contact', methods=['GET', 'POST']) -def contact(): - form = Form_Contact() - if form.validate_on_submit(): - # Handle form submission - email = form.sender_email.data - CC = form.sender_CC.data - name = form.sender_name.data - msg = form.sender_message.data - # return render_template('contact.html', form=form) - # return render_template('_contact.html', title='Contact Us') - return render_template('contact.html', model=Model_View_Contact(form)) - -@app.route('/about') -def about(): - return render_template('about.html') - -@app.route('/contact', methods=['GET', 'POST']) -def contact(): - form = MyForm() - if form.validate_on_submit(): - # Handle form submission - pass - return render_template('contact.html', form=form) -""" \ No newline at end of file