From cb3db118d0dbabc87ecbeafff2a95c7de4725da2 Mon Sep 17 00:00:00 2001 From: James Devine Date: Sat, 7 Mar 2026 06:01:28 +0100 Subject: [PATCH] Add Flask app and routes for basic authentication Implemented a Flask application factory with SQLAlchemy, Flask-Login, and CSRF protection. Added auth and main blueprints providing login, logout, and index routes. Staged new source files, database, and compiled bytecode. Updated configuration to serve over HTTPS in development. --- __pycache__/app.cpython-312.pyc | Bin 0 -> 2789 bytes __pycache__/config.cpython-312.pyc | Bin 1537 -> 1537 bytes __pycache__/models.cpython-312.pyc | Bin 0 -> 4367 bytes __pycache__/routes.cpython-312.pyc | Bin 0 -> 1970 bytes app.db | Bin 0 -> 8192 bytes app.py | 6 +++++- new.db | 0 routes.py | 30 +++++++++++++++++++++++++++++ testdb.sqlite | 0 testfile | 0 10 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 __pycache__/app.cpython-312.pyc create mode 100644 __pycache__/models.cpython-312.pyc create mode 100644 __pycache__/routes.cpython-312.pyc create mode 100644 app.db create mode 100644 new.db create mode 100644 routes.py create mode 100644 testdb.sqlite create mode 100644 testfile diff --git a/__pycache__/app.cpython-312.pyc b/__pycache__/app.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f3fa8b6d80379916ba474286095d10cf3351f392 GIT binary patch literal 2789 zcma)8-)|H}9G|`2yW88l>s`yW^g!(v5ICt<6x5^|m6QWYp;WGza4~MTw{z_t`{SJ5 z1KPC75ls*^DNz%7@WEG89!&fPFve)&3zeFd2_z)?;#)~EBs}?@-R@m05S^wo-(T~c z@67l6{p|gkOiBnw`r`%tml#5SFeVt0bz&{gA@mi}Pzh?4UTQZxN*(5w(iSsQ%5VrLtNVf-trce$AZj+iqDzaP+lvr603PE_k6ZE9>Px=O z##u{fNi0=g-YD~FkRE(oS_x@w*Ha6Eui?;ibUK=ApZWfXp*rVewN^9qvg+!#C0Eq4 zYm@1`B#lk!j%?am-N160VAaKr>`r01xu;Jq+g3%NtP{}Si!Qbt@Zj{x1W)RYi-{vo z7lM#>CYt?0E2^;fiiyP1Y@WpbW7&1LOV~ z`9bff@x1gGyF-qnVJ{9Kq~bd#4jJVsY)%80IAKrf)=AY;Cous&K3F_`WR%!0F1x@+ zd_N=Q^@sN!gcT7F|7+JmtccvE&IR5dL89ikS+2VNjDe1=)#ygfr(H3S1-m&ki^%q; zc!&qqt#uY{*!kphpRfyx5L)0mzrgMUgF|k@ry$N$K(*Fcu62r=4&?u7+3|lZH9-p- zk{O>1nTa_b-hiua5B9d!*-$Hrr&#ctES_!c4XB`PUfF!-oV-D&osPM zGiz13Wgk!*v^xS>YpsOl1c-fCOA=5{2gr8^Tx->$AE6+Yx$rDkL_5(-$l)#kc%6k? zaOkt4i~L!1fy;?AHwL{nlvyh^TTfP-tx{p#ocH=-99qb6RjZ7llVupADp5_$n$lxm zYz~iw-g6b-<$$c|Ww%eZYYY!m!_zYlLlwD3?DM*YHPD{NgaGNt1Dfip1LN!c>BR=P zQFm~qZpamz$jrBs_uPz8{)Bol$J5SYp;#O`HKGijIyF30P>O}YGp7r5>%YVdCr*u= zIQy8Qc<5xII5buuEN!_EjjDBbN|~t9sHy4}5F_Q*8~fB2Sk_qQeubvdx7^6Lh_o{i z(>}`fPuV8!uj-~b-H&T53YDy#_CeX-J!(qHgIf zJBlU^25XAx;~Evp4yn)xvFi{jNy0wDzDTqqfL^7EyfhB`S#Di`XetHa8wQOH7EX^T zqldY&I)Xq*|W*9zsq_lD!+j$;HzkqiXn zFlc4PBg=#(pmjd%gRdQ8LI*y)@K_JhD4zaO{ItI@cu$C4K7Q%=vaoGY*!K0SOTv!Z z(T)`{J}+I7mc{I%n7y`dN!+~}L1EE1>|7K&SDxFkBJWy}pI?olaMuGQgd-2yP&j&d z_|ouIeo4sO5!!v1*A6TRJ%0+~<&&3AUfsDQbUg%5dsl?$y85*xVdrKJj*^n|Jy&{e z#kSo?T)6v=D9tCYBtJ_%|PW>(KesDl3ES(TOy6&RS6|h^RIvM`n_0U zIo7)v>%AZ1V(n`@l6I^z3LGa=jpGk{z{@Ig{K#Qo{o~Hg0^)x{;X*7rBeCkvdlirq zsBi{KkxE0BQ-h*`9;M;YDciMa%&=8WfzBhW(7Z-aW}^G^-k<(9px_wWK4m*D6>2td z$sU%Hu!bk{_l4TUbek%F(d|t;F$TLh3fnOTfa7d1syuhY?Z0cjWIJ*-ZqiO&; zolMM-l=7r*kzU3!DE7M9>o%{_9*J-Gzg^xW1E6J}bmw!JR(X!&?uP_U_&b5P?z?Eu zU9{^i>b;AyYw7)5>b}LHNczL~8ll_iXTE4_Bv-cYX(X3WH&ozv zwJoFUBFbLNEume&3yF_se&e&ZrOc;&ehnYJbo6TWo6L7dmJc3YJb3s<ia}V+8;)v;}7X diff --git a/__pycache__/models.cpython-312.pyc b/__pycache__/models.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e31ef6ed6ad03d9a2082e115f59154d88860de21 GIT binary patch literal 4367 zcmdT{O>7&-72f6lk0|QTs;K&BW7k#a#8O~cKr1(@q^7nQ)oNPXElLzvEO$rbQp+Vh zyR1#ZDHzl!q?07%AQ37cZ~hXAgg7W$)4S^BAjka+KN`hXR}MY{WsOs~B&YC-OXG8VlIKx( zYp$F->9%x_=E-@JUQ73CzMMbl&jpeJ>)WRVbD?C2=Ug0d@79M+hF#n(PVqnHlmPLP zaCV?Ear1xIW9!L?Wg7(BP#a5k-LliN41;CI*H}iC$YUy*a4z(R8YZccM_pZyXPx{;T>^`NZXBTG1qPP_A6W?xQuY)f&ir*Q<`y}A3 zB-D0{etXVV39|>Co*mz~XQXYJWK-^B#yU zPx1^#7xQ35l;1#UN0;zGH8VmZA_R;GRZk0&t_YHnQ*~iplhVU?cX$>qP&FsflDI%h z&nICWHzBBeMP0pLBrKp8HBCxs~sbMtT}pd>-yg>js5k~*xtihbn;nXlA=p<@qQK%MP14fQDh-egdHhrsCS6s z{i3ARTl}J^O(=7z3iI7DDFh1(6k+SIm$h)_pU&qsBIzuk z8ln|M?2Jx`VmO;E${9&dL)5$laC8@ti{h?9FqyKRf51XACD5RVlF8hLN$Iz-)suo@ zDLS~rS&mq{Lh;tHL@y}DpFlk3KJ|?62gA#;rP#`~wei*Q?dyxNTJVj^^nSE^xwKST z@7au1V_VlY&TX4d$zrJ%eXBCF-`BsESWT>_Hr1-S?cUJ$iYtj)-o! zKMM9|&u=EGiLKO!*$=W$FRv$RXD6R|V*A~_Yq8bX`nAm))f;<(Pof`1S7Np9$;#U= zJiK>e>&^iOe=mHzcZ%OKUcko`zil2`|F&D`kqkelIM?5AAzc2)u#2Eu587mV(8VM? zRsi&yJ;QBb@06<-pw{oq*&Z;zu4m^ro-^9Er*OuwcWv`qZwPi>9VYHEx7D`YF!6h4h(&12_fl?&i$wCQ-hLo=~b%7EYIE8(m zPy#o_f?-`Fg-qVe8^d=g@&noh;wHtbo%Vnz`w=^a0ZhE_pdAY}Nlv*((zMqFpg_bV zSM#(0pb>X7e@c=UD4Ay-O)8g|UzQA6Qpj99Mg<)96%-dyTtb023&nk<-$gNm;#CmL zYpSM3nCC8eXtJZ-cseqY}%E+%RnW0fE8_w=pBSL5r`o42aBww0B5t!K0{`?-UFN3iT=YP)*Yf~&#x zi<_@iU)%Gn1Z!Pml|&Qv#;fC7^uu>Qcz5qtwV@wc$k%Kl#@`=o|z)0I95n! z_WZFb_-x^qU8PVwOvj+IeC1w2%R|~Jf)&IwmQ2v@X3XbE?~E*_h#*^z}3mHmrlV~nHzowKL-J<(`h)3b7mWF zILC_POeCFFdBi!FO?`$2Gxb;;i+O?U(-L#12~aatH{qdZAvo-?fjtD9ss=GOM1*$w z4%AM-&xnBlRvL~jk1vfcPb^LR;nI3~eaJ9*cvo0za^+@dW(^w4!^42;zmC=lM^$kuSJ&UvNYJ;9mJBm-u&x;|ISCaK5hJ z{kq~h^hNk7e)0Q&%9+*7A%|awLWC#$O3&KB>HyXdsPXaB{NnWT%+kyuhx$Q3&%bJI G#eV=z1Ci$d literal 0 HcmV?d00001 diff --git a/__pycache__/routes.cpython-312.pyc b/__pycache__/routes.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..37e350e3a978a4c41b3fd71f6608a5f72c9c8737 GIT binary patch literal 1970 zcma)6&1>UE6rYh~OP1^?sod;tHX$kAWuq;`O%8>E$)U8(wrr9@wor62UTYHDk!*J) zw~29Dv(yVY@xmMmJsM6r@oOa$8A#RfZn`$U-R_l z_uh}Gl#F0K__AI8fk)_fc8FH2%bfoO%nmY4R^3*q)4hV7V`bnjGLkWKUrWs?kC>18l+CkRo7Q3 zshWi5U1Ha*f=hgf60=N6(e=d!werg~>Wh?o(jboO$Cj;vQ_=-rwrVToYQEtR>MOw4 z8g6(<78?{Ic25JL8FPn_rY{s4ZmAi|vQ5Xn%r2-?vRqzk#eeY7tj_jXS!MN;tYq25eH(j}zJ3v>|7DSHoiMd2d`6N!PP zTCf3O^@8JkR->klX&OwLvRx=wr^ z;N!``fv_ zhu-M4r_CHDXF5{qa3FIm-RUSJyE#vpJQOC+Au-exS^Giq*LT`1m_Vm>=Mw78FhD?e z1|sA}6Bc?d!a}qICb)&B%-Vh`sEf{1HmWb{{vD#PF~K+xKOW{n@4$fp#9<(X;tA@r z`HrH!nA?5mrFBoae<<7!+a}edjlU^rwHBU^lS7Q;b+FJEDEbTuDBBmiJg4K{fw8xOve z&$Cv^=Y5eCE&sUg#{z5xfC>r&!x8=&G(lGXO87#`L0>d1GE1`%k3F381&~u7WBd{= zo}k5-Xx>BfXK|#Yx8K`+@coTr`K?XyH!M9LdpfqYws&`bcyD}j%)`@XoQ(Bz9&t0L tj61!FxI|#I?%`W!9EV?L%8^sXoypyJo_zN*n&V;ZjKg7+bif4#`y0ycpN;?k literal 0 HcmV?d00001 diff --git a/app.db b/app.db new file mode 100644 index 0000000000000000000000000000000000000000..b3b5c70653c6298edcb95f3af81b53e12ab73fe2 GIT binary patch literal 8192 zcmeI#u?oU46a~;k1ZhEZDXwp9L0tR+V+mTURbv%8R$HN96*Raz`VIc9$cUG621 za6_iEz3nEhbV;Y{t