From 6d76e560e1e4bb7f2a7acf63d97afbc0fc9c1d31 Mon Sep 17 00:00:00 2001 From: Andrew Simonson Date: Mon, 10 Oct 2022 15:35:27 -0400 Subject: [PATCH 1/4] Make into flask app --- .gitignore | 2 ++ src/app.py | 10 ++++++ src/auth.py | 72 +++++++++++++++++++++++++++++++++++++++ src/config.py | 21 ++++++++++++ src/init.py | 29 ++++++++++++++++ src/models.py | 43 +++++++++++++++++++++++ src/templates/header.html | 19 +++++++++++ src/templates/home.html | 4 +++ 8 files changed, 200 insertions(+) create mode 100644 .gitignore create mode 100644 src/app.py create mode 100644 src/auth.py create mode 100644 src/config.py create mode 100644 src/init.py create mode 100644 src/models.py create mode 100644 src/templates/header.html create mode 100644 src/templates/home.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f71390f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__ +envs.py \ No newline at end of file diff --git a/src/app.py b/src/app.py new file mode 100644 index 0000000..06090d0 --- /dev/null +++ b/src/app.py @@ -0,0 +1,10 @@ +import flask +from flask_login import login_required, current_user +from auth import app + +@app.route('/') +# @login_required +def get_in(): + return flask.render_template('home.html') + + diff --git a/src/auth.py b/src/auth.py new file mode 100644 index 0000000..905555e --- /dev/null +++ b/src/auth.py @@ -0,0 +1,72 @@ +from init import app, auth, db +from models import User +from flask_login import login_user, logout_user, LoginManager +import flask + +from functools import wraps + + +def csh_user_auth(func): + @wraps(func) + def wrapped_function(*args, **kwargs): + uid = str(flask.session["userinfo"].get("preferred_username", "")) + last = str(flask.session["userinfo"].get("family_name", "")) + first = str(flask.session["userinfo"].get("given_name", "")) + picture = "https://profiles.csh.rit.edu/image/" + uid + groups = flask.session["userinfo"].get("groups", []) + is_eboard = "eboard" in groups + is_rtp = "rtp" in groups + auth_dict = { + "uid": uid, + "first": first, + "last": last, + "picture": picture, + "admin": is_eboard or is_rtp or uid == "cinnamon" + } + kwargs["auth_dict"] = auth_dict + return func(*args, **kwargs) + return wrapped_function + +login_manager = LoginManager() +login_manager.init_app(app) +login_manager.login_view = 'csh_auth' + + +@login_manager.user_loader +def load_user(user_id): + q = User.query.get(user_id) + if q: + return q + return None + + +@app.route("/logout") +@auth.oidc_logout +def _logout(): + logout_user() + return flask.redirect("/", 302) + + +@app.route('/csh_auth') +@app.route('/login') +@auth.oidc_auth('default') +@csh_user_auth +def csh_auth(auth_dict=None): + """ + Gets new logger inner data + """ + if auth_dict is None: + return flask.redirect("/csh_auth") + user = User.query.get(auth_dict['uid']) + if user is not None: + user.firstname = auth_dict['first'] + user.lastname = auth_dict['last'] + user.picture = auth_dict['picture'] + user.admin = auth_dict['admin'] + else: + user = User(auth_dict['uid'], auth_dict['first'], + auth_dict['last'], auth_dict['picture'], auth_dict['admin']) + db.session.add(user) + db.session.commit() + login_user(user) + return flask.redirect('/') \ No newline at end of file diff --git a/src/config.py b/src/config.py new file mode 100644 index 0000000..621477d --- /dev/null +++ b/src/config.py @@ -0,0 +1,21 @@ +from os import environ as env + + +# automatically updates some dev envs. +try: + __import__('envs.py') +except ImportError: + pass + +# Flask config +IP = env.get('IP', '0.0.0.0') +PORT = env.get('PORT', 8080) +SERVER_NAME = env.get('SERVER_NAME', 'devcade.csh.rit.edu') +PREFERRED_URL_SCHEME = env.get('PREFERRED_URL_SCHEME', 'https') + +SQLALCHEMY_DATABASE_URI = env.get('SQLALCHEMY_DATABASE_URI', "Probably-some-postgres-bs") +SQLALCHEMY_TRACK_MODIFICATIONS = 'False' +# OpenID Connect SSO config CSH +OIDC_ISSUER = env.get('OIDC_ISSUER', 'https://sso.csh.rit.edu/auth/realms/csh') +OIDC_CLIENT_ID = env.get('OIDC_CLIENT_ID', 'devcade') +OIDC_CLIENT_SECRET = env.get('OIDC_CLIENT_SECRET', 'NOT-A-SECRET') \ No newline at end of file diff --git a/src/init.py b/src/init.py new file mode 100644 index 0000000..3c575c8 --- /dev/null +++ b/src/init.py @@ -0,0 +1,29 @@ +import os +import pytz +import flask +from flask_migrate import Migrate +from flask_sqlalchemy import SQLAlchemy +from flask_pyoidc.flask_pyoidc import OIDCAuthentication +from flask_pyoidc.provider_configuration import ProviderConfiguration, ClientMetadata + + +app = flask.Flask(__name__) +app.config.from_pyfile(os.path.join(os.getcwd(), "config.py")) + +# time setup for the server side time +eastern = pytz.timezone('America/New_York') + +# OIDC Authentication +CSH_AUTH = ProviderConfiguration(issuer=app.config["OIDC_ISSUER"], + client_metadata=ClientMetadata( + app.config["OIDC_CLIENT_ID"], + app.config["OIDC_CLIENT_SECRET"])) +auth = OIDCAuthentication({'default': CSH_AUTH}, + app) + +auth.init_app(app) +app.secret_key = os.urandom(16) + +# DB +db = SQLAlchemy(app) +migrate = Migrate(app, db) \ No newline at end of file diff --git a/src/models.py b/src/models.py new file mode 100644 index 0000000..8f862fa --- /dev/null +++ b/src/models.py @@ -0,0 +1,43 @@ +from init import db + + +class User(db.Model): + __tablename__ = 'user' + + id = db.Column(db.String, primary_key=True) + firstname = db.Column(db.String, nullable=False) + lastname = db.Column(db.String, nullable=False) + picture = db.Column(db.String, nullable=False) + admin = db.Column(db.Boolean, nullable=False) + + def init(self, uid, firstname, lastname, picture, admin): + self.id = uid + self.firstname = firstname + self.lastname = lastname + self.picture = picture + self.admin = admin + + def __repr__(self): + return ''.format(self.id) + + def to_json(self): + return {"uid": self.uid, + "first": self.firstname, + "last": self.lastname, + "picture": self.picture} + + def get_id(self): + return self.id + + @staticmethod + def is_authenticated(): + return True + + @staticmethod + def is_active(): + return True + + @staticmethod + def is_anonymous(): + return False + diff --git a/src/templates/header.html b/src/templates/header.html new file mode 100644 index 0000000..ed159c3 --- /dev/null +++ b/src/templates/header.html @@ -0,0 +1,19 @@ +{% block header %} + + + + + + + + Devcade + + + +
+ {% block content %}{% endblock %} +
+ + + +{% endblock %} diff --git a/src/templates/home.html b/src/templates/home.html new file mode 100644 index 0000000..01f81f2 --- /dev/null +++ b/src/templates/home.html @@ -0,0 +1,4 @@ +{% extends "header.html" %} +{% block content %} +

Paragraph

+{% endblock %} \ No newline at end of file From 6138d529843bef7296f2a0996260e49ba1f6ec7b Mon Sep 17 00:00:00 2001 From: Andrew Simonson Date: Mon, 10 Oct 2022 15:49:03 -0400 Subject: [PATCH 2/4] restore stashed assets --- {css => src/static/css}/devcade.css | 0 src/static/favicon.ico | Bin 0 -> 254558 bytes src/templates/header.html | 9 +++++---- src/templates/home.html | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) rename {css => src/static/css}/devcade.css (100%) create mode 100644 src/static/favicon.ico diff --git a/css/devcade.css b/src/static/css/devcade.css similarity index 100% rename from css/devcade.css rename to src/static/css/devcade.css diff --git a/src/static/favicon.ico b/src/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..99f69865568f318c4fc88f790b77ab4ac77cc686 GIT binary patch literal 254558 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

6tIBkD)qdz_AUtVvY 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�VF`G-rebO!L9KAB=ezjp^`el-h@&i?*R$h(CcDi(0@PT`$Eb0&Z}eb%yz z{dB=sTyYNn*vMWOns1(dSJ=?QX7Leg>*OMw>~q$)mK^fgrHM_kqLZw69-jOXJL~8r zPb`X&Jc1paeuLrjdE??KhJL@ujOgAU*7wyz~@%} z#!uYHxBtTo|D84bo8SJ;U+=kWDVE0FYwD2Cxm}$-*x_A;UNy0G_=S(S1}_-9*I=*l znM{4f73X0DKloTHcCP#tJF&4|e8dw@?#aUCbc?C{XCwQ>)q48uRd`E}vygh|3V&FN zml%nK&;Ps!*voMXhV}vTeWz!QoOO19tF<`M?|Agnhtn{_2Y%{fuX{1+8GmqukLJPy z&s^EbCN2KJoKNtEDLLfnmzVIMrx?Q0T;s4brs;Dn=fl-}+%rxV`C_fvzvMzWY92o0 zwJ~vlnb?U3nVLRv)$b}!#$lux*GC>4^obvy;J;`0=D<|zeafDw&N{D(lYXD0$zAJk zAPn$_UO4EZgH7g<={|eubI(`t@!h+t^Bpd<=i`)qxQL(mYJ)t|aK#>@;b8eMfAJ={ zu$F5+k8>txKYRFO%vBECkJ+a2wf9umkgpc{4vj3eLR@gv=K;?5IIF*Z_e-we2Asqg z_sTcd_y9Bb!J9q3SK%C=UCj+&^Vx_K_}cyuFUepVjMzjTyjx=(S)R$l5jNs1U0um$ zr?v2c8=vs3`p+(F%2k-lDLJNw+rP!L*!n)sZ(Qx^)`+jq1>l3cvj=ba!)A@oYJ$1+@jw5HlbEHO4)=0RZ0tdr_^<_^a8~}6 z^YW36>@}`gBd?vSJgW=hZJpd#1Mr(Ht@>cxo`6eoL>{rPXIHZH)4w*b1HQ1A=i(%1 z)n)Nf^L;;ST-}FPycSoyu?7d?i$T5dZT+qi(xy3%YV7;~G#X%g4pM0r_nSOH2Ra3~NQ;cC#jNO|{7JJn=c#D}> z@>dftc`PPkrat()0?nB~Eii|zuGK7xS64N&LUCw^=rTfV@6em1+ZSsz`Rbub~9 zeEcHUeYFWz=D~qKVh3aQ#em-$-QvM_xQ3|v{;y3+xtcDq{ z9`M6j_Q-2_4g+(7`IlxTp`z)Rvn-Z|NAbj z`e6=T>VkFjl=I~2BbyJJdgFIC;)E+|vHhX5Dz139w^tZbBjG4FV5Nqa|LR4xTm3e! z4v4QBB5(D<2>!0(;qxcoILE?8++peS zEuS5b?HPaA$w#@wZ(MVwn=V|zck;!Xzhd0E$6U`iZVZpg=lEcqemsJY{blO|*)U*( zxz-z}gG|_DpMLZ8#|=1$Gac+O*BU$!V>aTo_{o2{r*^YLZHVV`&gc0)KUL$!NDS3& z^<3?Oh4tdEM&Jp3aE2GV$hJRfd{7JEYRo-ZxWkXmLwLbH`tZorJmX@3`{G}Nt+?V0 zpK(we=zv3ff+zd*!6B~lNn@WmntL2&D?8PJY7&e*lanku+|!R!p52qh4ox3h#Yc|C zYgc_@$Tz%|lW;7*jq%AkbIHM5_hN2OYi?%&&*ii^WT-RNd9IHPI^{h1`qK|nIV8qv zvABzcn20?N8^a&IiVx1>l6hi@7uJej`Hv5BP5zq$Zf-yG8b)PHvE>SEs`@i4(shM&EAK1YrIMF3$cm;R&+WfBnvdnb7{HxOSJ=S{md0=eZt#brcxd+XV%*idVy#}n zfZc4VZqX};G_qmNPE8ExEdSYQp8D7okK2QtW96cF$zT0^6!&84UJUiiZ~5$OYp%68 zZJ$>M=qcuOTZ!=J5lDY=WJL!!9cw12Vn>&ePV~xT5*TB_4=$=>(v$a;$d&G*0c3K@3VKqhK+oY z?`oTvh%5hnUtnB~kwbj5-{ZBs@h%|d;v)|=HH92?Q`~Wk4}63L49X8VLyz_3(4~>h zZg!9nuc`t1%VB-uuCX1L>4ZhO4Qp{Ghdecj4g6p;8P%lpS`(M>!m}8PU9ybx!M=bO zeAo2ZGx#bm<(OD$xUDw(O`qJxd*?WIkneL?wbLF03x0^FT7eJzGq*hPEN`@GO|cd) zwvZ$CaM9QVD|X?W`0$18IL;0{g_UbL3{+{4!QdIE~a7t19*u=9QNK^Y;YG|un}u(Vb$Eu z0r=uxO@K3Q<6Cm<+qlIRF=vZf;4?ybg%|o^pr2kblV9+6P9RG^Jj7o=ePV_q`ov3q ziMjdgf(gG}$%89B=6c2_Hkivt_hPFVC)bs3{4u|?fj+!stF>_AEC1=U*4&!dR0HAx zefrJS=oL@?!Ne6m_+Si=Z~=y{&O!JQKh1>)J2d$4O}yp4Cih_{Kl$K&)B72jbmFIV z-WApKa?6#E;vX06C3u7v#`!8Yt=DHv?V!tA`9^nh+0A}>`412JHCV%jEIjPq6&B{Q zgFWrQxX>lOWV59>BbF%+0ZnvDdTs$t~;RHXF?2gBZmxYs{^WoqWQBv)J*O4dm0uKAh6T5-#q=4W_u_YMp*p`A?QPaNsLF{P8S?Y`}MQ-+Mss zy=nrC@DcWGffw0$B=>!8=p5iP0rfx}%4_TK!k#Y2=;U9y=~@1}((hiqz!Q35%}2Rn z4V|#i^uvTb;clEy>{J`#tT~?LKHNRK7Ynfp6IWcPpWSkwy&7HehK_X8qYs9#*Nm;L zWQrS|?!^sf#Rh-1YJooY#^r!~C_k$&;viSm345K-$IPW$KmPm9OfHz?j6g2C%76Ch zGrt<+SuXM=U$dQTYuIX@#!m8ZTx`X!oNo{CjMrkRuH!lGuo=hYh8!0&dyLQQ_~N|j z|J&(zJ^J{}2EO<_fM4(=D;(H^=jMqQz4%Nveu$;o!xnalJ-!+eO|wD zF|w9yoQDC9%Q?22$1X8cFXgmYnGX|KvWYEPd?(YGeDC*w*5UzK-Vfw+wT(=?fS*{k z-nb?vWLcv=!vmHYEcoKepLmG7uqp=OULX6c_sj==^NYW9iYJ+Du~wdn8QofQ)FE-p zZgbgV9sD%op4msHm=!;A!%~cJo-FIk*Ti-E+>51J;Hv4fR^IC8zZxNDXPpo z@kH(D+)o}^;-$X$9lGD_@q-Qg_FEy}?fa~N@BGm3+3!~UhCr;vkS;Y`9OW49;a6u< z_v(XKnac-P`o&Jn^=a(X*Hx^`e=#opWXV^3WFgyo7e!0*0_3R3*SBSOFYV9nDG;5 z%XL>d7@l&Q-Q@*8*v4+$jlb1MI>|JzSa{Y?CV%wzY#p5FHEx||P5D(`CXY|AYe%Z6f&H*|`jxqK&+9_z_f1B_Q2x+lY2oMQt&^Dpk= zjr>>p#S_LF4#*?(<-h%1j>3gJHHDArv32SN9lq1^ZqE;E{64^YfxlDjtY1Cxw|qVa zBm2=39$HxX)KSCKm@a z+$W1%O@3LY;Ryf5hfFrnpi z`@i_f19rjg;0y=y*kL|j)GF)5h|X%w#tOFLK&Q2AjXQLS ze|s7m#V}i~rJHZovtJ*4i;Y;8)8fPiO}~9p-jD$g@i#|3(C<7Tr{gId_{3f<-dID1 zd34hkw>+Dtkhe{QaGZT<2dn`E1(W@B0GrsfOS&JIEB%`pIV(zsi5U6eC#itGWgozL!IMk9+#? zNDR#36Mb~i$#0y%FMK2u_u_tB6??YO<-Qi*>7#?LVu`ovwXt~Q3IkVh6i;;mw$*>Q zZ4-ZM)JNE`Tm6Ea1`B%efn9iRj+~Y+o9F7S{X6XCzXp%y%L!P(o9ya?wSDgF9H3Uy z#b5Zr7w_>Wyo`~@U;gpMylOu_W-I;l!jW!k$?>dTT&y!6XUQ~P4vBj)Fu#85=z$g7 z*vu!g;Km-YrOz6=t&cDI%1v<+Gk&O+godmalgIvz5q}0=Ld}CtUS=~Ssj2kEMTI>kST8D z$`|nwGj)P~x;4+$PxjH>`>t5=fed_e^^Ci0VWS+3fAGeq>IjU)&ea-qoUYc0Aq>j{ zxQVTp;{bhPK{wmA_BrvPN6T(*QxKEf=fXa-2OHOsr>{XYs}d z_jKYJ|M=UUAy<;$J)LlM)sn{sHo{jU#~7T&PaeWojNvElu+U#UbtTigiL<=V0O)F- zewg@83GR@KkLui9*#x$xr?CijVoO#fy%3W{&l0gf(QsQ0&ahuHwTEbNIj>>*J64Y9_42*V#?|hQAyT z3s;zm1wZkvvpQ@$JF-~}`i-DC;ej}+Z~lhgIl%XuegmX_zzYWa7Xv=)V=I38O)DPb zsphjSpDW=doAAB5#$W5TxFlBmH%Coi6FcDw2mP9R^TYxsI3Dk;A=?=L+Jnf`#9KTx zxQ1`C^~+!V<*Yt7z{O`k_HZ>-4UiLjFb6KM=v~lyI?5aICqw;r&lWi+CTckB#T6dA z$H)(71Mx1-c%bHqnYFMr5AV#;I{9!lz!@)gVjo}i% z$yQTp^y7qi@HS4S`N=Yet!&WvFILvU#FcFK;%iJ?$>axn$RZODieWK>ul>!l8k7z0 zy}aRnBg6@3oiGe4jI`*#Ce zeI^jDxCsw=ARg@T_v^l!wx8J3oK-v9s&zQ#?_AjrLoLksCg$>%zurw?1}nC>^1XPm zy&Q)z`(4RokNM$QzqN6a-fAqYHTvLO+}Tl|dZ1YYgFXw!F@5$c_nrCmX>3RyyU5f} z4}avQ9Fz;IWO}M>8LP z#i=WM_(2A2;l&rW(P15Xa1YMKfj$l1@Pi#p%*Ro7t3{rzqm$kEA{Wfn=Sq&4;|clh z;{ZF^!Zy0(AndGVb9~_&xt=w$><`Y;Y^Q@P`mB?q?IG+UkDcaqUrepxpZLaC`q-*g z@E`W{;uYJCk;C?KA=~xQWghJ5)YydsFcWJrxBrW$7~oN7LiXdO9P0Z?*xHxH4Uest z_iToRW`4hG!c}{}?*Z`~FZswHeQ?H0|L-C>ub$u}zS^_wD{RFxzgdAV4B$l`S@6;L z$qqFO4t$3%?A7gZ8LnX_ZpO(h-qztPyv)A*X4CMlx#DZSMu>1 zZt#JVW*wb)V5~gUM+SVX#U0q-sArgK`35Vt^1(P>nkx?Q6KAn=<*z*>468wGX9wME zEzbDuOrwunIKV`_=(65bE*o#Z6i0K}W$wnF9iI7M9eI3!2|M_19lz;i102K1*$j4k zBRfCo<2QNqyP8LiMn+ij4<c&nLDemrQ-0$rX#{xv~*%a<}}K`{K`5{cN`u zU+v>!XO6!&k+bqzuIb|k9ObpSt}r3n`@X;DG1qUMe5XK`GcY`yA@S4uqaC~*A7kW=iTmo9kH4+}MpT=~KWS2kM9 zcF(TM5q;rZ-03HmKVoeToLt$+A9lKjDV#L=#eWfA&t79Scles` z`n@AK(|X_coiF^v&2NCb|2r=jBTqi43vBW4Svl|X1!fu@IOq56uI%x;yR|Aack3VX;b-1Wi0K8$B@B#T^Q8op@ipd5x#?@i7; z>Rx9hxegV=;E{a);TZmk6w0*y}ez{RJX+xrtGsGFYu;XXWTOk zaJPIgPyFjA*E|hIcp~QTsZP4W33uWV8F;K;D{qpAqvX&FbH3`sH8QOA%r@&`FOKjx zh9mM{!wb*w5P$b%v|sQ)SulYqIbsDrIy7rFwwgn){^rIBYjD6b*`E0!4&;Zmn#49X zs!3#$hjV=BY8@=XS-<$G(R_i4`T>7(%nwiNU=3Gebn-j=#DwqcVlzIlfsNK$Q%qV* zH@)d6i|sgy!? - - - - + + + + + Devcade diff --git a/src/templates/home.html b/src/templates/home.html index 01f81f2..89427c8 100644 --- a/src/templates/home.html +++ b/src/templates/home.html @@ -1,4 +1,4 @@ {% extends "header.html" %} {% block content %} -

Paragraph

+

WElcum To doofcad

{% endblock %} \ No newline at end of file From 148ef01c2bfd2513bf2c381a87fbf86c1adbd338 Mon Sep 17 00:00:00 2001 From: Andrew Simonson Date: Mon, 10 Oct 2022 15:57:38 -0400 Subject: [PATCH 3/4] remove old index --- index.html | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 index.html diff --git a/index.html b/index.html deleted file mode 100644 index 3ed8adc..0000000 --- a/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - Devcade - - -

DEVCADE

-
-

Paragraph

-
- - - \ No newline at end of file From 551b11db8efbcc8adac2c49e9d7751ff5bac29a4 Mon Sep 17 00:00:00 2001 From: Andrew Simonson Date: Mon, 10 Oct 2022 17:21:48 -0400 Subject: [PATCH 4/4] Dev accessability improvements --- src/app.py | 5 +++-- src/config.py | 5 +++-- src/init.py | 5 ++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/app.py b/src/app.py index 06090d0..e158460 100644 --- a/src/app.py +++ b/src/app.py @@ -4,7 +4,8 @@ @app.route('/') # @login_required -def get_in(): +def homepage(): return flask.render_template('home.html') - +if __name__ == '__main__': + app.run() diff --git a/src/config.py b/src/config.py index 621477d..92a124c 100644 --- a/src/config.py +++ b/src/config.py @@ -10,11 +10,12 @@ # Flask config IP = env.get('IP', '0.0.0.0') PORT = env.get('PORT', 8080) -SERVER_NAME = env.get('SERVER_NAME', 'devcade.csh.rit.edu') +SERVER_NAME = env.get('SERVER_NAME', '127.0.0.1:5000') PREFERRED_URL_SCHEME = env.get('PREFERRED_URL_SCHEME', 'https') -SQLALCHEMY_DATABASE_URI = env.get('SQLALCHEMY_DATABASE_URI', "Probably-some-postgres-bs") +SQLALCHEMY_DATABASE_URI = env.get('SQLALCHEMY_DATABASE_URI', "sqlite:///users.sqlite3") SQLALCHEMY_TRACK_MODIFICATIONS = 'False' + # OpenID Connect SSO config CSH OIDC_ISSUER = env.get('OIDC_ISSUER', 'https://sso.csh.rit.edu/auth/realms/csh') OIDC_CLIENT_ID = env.get('OIDC_CLIENT_ID', 'devcade') diff --git a/src/init.py b/src/init.py index 3c575c8..c13646b 100644 --- a/src/init.py +++ b/src/init.py @@ -8,7 +8,10 @@ app = flask.Flask(__name__) -app.config.from_pyfile(os.path.join(os.getcwd(), "config.py")) +try: + app.config.from_pyfile(os.path.join(os.getcwd(), "config.py")) +except: + app.config.from_pyfile("config.py") # time setup for the server side time eastern = pytz.timezone('America/New_York')