From a8c5ea5e296533fcf4c40fc5e112e7b5b746044e Mon Sep 17 00:00:00 2001 From: James Devine Date: Sat, 7 Mar 2026 00:37:27 +0100 Subject: [PATCH] Add Flask app factory and update config/routes Add a Flask application factory that creates and configures the Flask app, registers blueprints, initializes extensions, and sets up HTTPS context. Updated config.py to set database URI, upload folder, and certificate paths. Added a minimal routes module with auth and main blueprints. Updated app.py to use the factory and run the development server with SSL. Also staged new __pycache__ files, app.db, package.json, routes.py, and var directory. --- __pycache__/app.cpython-312.pyc | Bin 0 -> 2706 bytes __pycache__/config.cpython-312.pyc | Bin 1537 -> 1458 bytes __pycache__/models.cpython-312.pyc | Bin 0 -> 4367 bytes __pycache__/routes.cpython-312.pyc | Bin 0 -> 695 bytes app.db | 0 app.py | 6 +----- config.py | 2 +- package.json | 5 +++++ routes.py | 17 +++++++++++++++++ var/app-instance/app.db | 0 10 files changed, 24 insertions(+), 6 deletions(-) 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 package.json create mode 100644 routes.py create mode 100644 var/app-instance/app.db diff --git a/__pycache__/app.cpython-312.pyc b/__pycache__/app.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af4fb460a573f882714e585d906afeb86d90c0fa GIT binary patch literal 2706 zcma)8&2JM&6rc63?e*G@oiCaM+H4XE7=l9u{ZK%tG#Ci^EDn`oRo!g7<7C6G*UYX7 zi4w^vNR$>SNUa2i9=M`#sMLRes;YYEg|w*>RzyPTskcN)g~X|EcD;7eg4&5P^S@PxMJIg8>fzXUaG4SQKDFwN>(Kv1=3?4U0riN zrRGs=iE||knhDMX6ScG7pVMUXiYONfnwpg@)yRuEIcphYCMgIbld37|hEmk9m?c=Y zuqj%TSgh>n6thM?r%n_JXz+Cl=S}cnc8UZ~sHTO9DUNGJTp()RG6gxWh$gm7u~-l< zjEoGY#iFU^C&Vl!mYSo-gBJzo)I3&1H7|B&AvUvn%snI7;~X`X6#k@lNHDhFi312B z{c-;pEjx+z8Q>!Q#)O(5kn{2cCcuY#(wEK+6T`w;3)q0`XD|yus0<1Z7XG*H`zSoD zip~Pw9ZO}|JTu2km7mem(RC`glXGc{_hjB~2F)R|_cb2Eo^^GdLpyf9`rKFS0(b$q zAF)gHPB0i`MO+HvjCoXbonxw}SaDDOpO$t1*HYmWzb5G6d7mDcXWN@AE zM)4X8c9+GQ)x93&mCd`m@7(I?tE*=T#T=l2OXW<%TUD|)C06Y{YKOMnlU3K8Z=QqL z_g5tzW!8cGfX7u=C3q8gvCRADm^A7@?;w+zhPE^cw_wnn-s|irnr0IG?BgD%3`JT> zmC_UCN~z>%H7A|A7=scrEjgdXP{|^UVVTG}rbX$nM=Qf&q4q4vb=fT{YS!u$jRNfl zvgYWihu)l6AjUOS!3t=vVM2g3#coBmKnUMJuF+aa_^xT^pF{Rh)69JQSHm-u1Q13T~n&A&vfAe4Y>=t zVzMw}MguUhmdJF3yPCh2Zpv$?EEa&~|i zMF^EdVIQI28oSPGy;7y~+F{sFb8A71wgoSIO|wHisY@f$@R^YdHs6;Tb*Uh|JM?9{ zVH`vDu#{5?V1wYRMNlLHc9 z+_r#1u~oilnFmG9V(fNo!_U?SN_`swio_OAetGhFD6$%ATMo5t`j}Ad7K?=T4N8II zNUU`6MJssOppIXfv|0by(U?N)PspDN1!o0{?xceNs2%PyK+zU@^JW1+12t;?3C`vw4b!r@fdH}Js%ScW%gu>hoxsqusM`*gq9y(DhI~gX;l%fsa7F-ZtQ}Hy} zM+E`+d4V;PB&f+@Ivt@?Bb{iov{_QjlQzoIZtE1RQ&0|=Uh=2hpC_lu2cV^2X!CQJ zHduyXHhmn!{S`q>(>gl1j`pvkwsq9J74KqVn;L@x@f)9(d{5*1zOE@n*Y+MPMORQ0 zfb7P6i32b&N0!lHNDUYHV)j?I`Ki$GRi_Kf^9$$iHa}?i?%e8$v&$#WKFhWi#!Kga=dyr3uEmM*Z(4O}xBvhE literal 0 HcmV?d00001 diff --git a/__pycache__/config.cpython-312.pyc b/__pycache__/config.cpython-312.pyc index c9a6f11dcef2ec20474e227ea1dd48efbebe9495..5da3bc4b8c3e33b96583498dcbda353519172db8 100644 GIT binary patch delta 285 zcmZqV*~HCznwOW00SNNKR%fP6 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..92c94bd3d0699594d98a2d4667f9605d4c94ce6a GIT binary patch literal 695 zcmah`y=xRf6rVTyd3ziwj3j;pVqvkMZXFPd6p}(>VIgecvO1Gw z63osGI3tWO5JW-@lExGWB^(PCIvt+n9BHn)%aR|40OIjvDgWA1y>E+C2BPQ&9? zOBYA6$Gv~%`>XukANl?$2>U-VHKe+?D;i#^EU)#N;yL3gsktmgT61luO?@c4TVV1vH_OuE((abjPjEo?p`{Upl^0v$Lkbfe|$7>|d??y+3KUYMnP&MMqW_m4>~SHA2iq?TCD^^L z{=%V-!dKKzW~LshHG}b6)wHp z_OLy3*lGS%Ztg#p1#1LW7XSbN literal 0 HcmV?d00001 diff --git a/app.db b/app.db new file mode 100644 index 0000000..e69de29 diff --git a/app.py b/app.py index 9b202fb..30044ad 100644 --- a/app.py +++ b/app.py @@ -57,11 +57,7 @@ def create_app(test_config=None): Config.KEY_PATH, ) # Run the dev server with SSL for local testing - if not app.testing: - # Only start server if called directly - @app.before_first_request - def _start_server(): - pass # placeholder for any startup hooks + # Placeholder for startup hooks return app diff --git a/config.py b/config.py index 28e898c..1c8d6fd 100644 --- a/config.py +++ b/config.py @@ -5,7 +5,7 @@ BASE_DIR = os.path.abspath(os.path.dirname(__file__)) class Config: SECRET_KEY = os.environ.get("SECRET_KEY", "dev-secret-key") - SQLALCHEMY_DATABASE_URI = "sqlite://" + os.path.join(BASE_DIR, "app.db") + SQLALCHEMY_DATABASE_URI = f"sqlite:///{os.path.join(BASE_DIR, 'app.db')}" SQLALCHEMY_TRACK_MODIFICATIONS = False UPLOAD_FOLDER = os.path.join(BASE_DIR, "uploads") MAX_CONTENT_LENGTH = 16 * 1024 * 1024 # 16 MB max upload diff --git a/package.json b/package.json new file mode 100644 index 0000000..2a8c269 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "name": "EP_inspection_tool_proto", + "version": "0.1.0", + "dependencies": {} +} diff --git a/routes.py b/routes.py new file mode 100644 index 0000000..759b7f5 --- /dev/null +++ b/routes.py @@ -0,0 +1,17 @@ +# Minimal routes for the application + +from flask import Blueprint, render_template + +# Auth blueprint +auth_bp = Blueprint('auth', __name__, url_prefix='/auth') + +@auth_bp.route('/login') +def login(): + return 'Login page' + +# Main blueprint +main_bp = Blueprint('main', __name__) + +@main_bp.route('/') +def index(): + return 'Hello, World!' diff --git a/var/app-instance/app.db b/var/app-instance/app.db new file mode 100644 index 0000000..e69de29