From 1d973194e7b9e9b45577cb3ec7b3d77dcbf048cd Mon Sep 17 00:00:00 2001 From: John Date: Sun, 10 Mar 2024 19:12:35 -0700 Subject: [PATCH 1/8] fixed request python --- __pycache__/app.cpython-39.pyc | Bin 919 -> 743 bytes app.py | 24 ++++++++---------------- templates/index.html | 6 +++--- 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/__pycache__/app.cpython-39.pyc b/__pycache__/app.cpython-39.pyc index 36b7715ea0d23940a398411ad27d7a3b41f862e1..e972012081149307458df80c326ae233073e6a49 100644 GIT binary patch delta 245 zcmbQv{+yLBk(ZZ?0SG2(zDvExxRI}jv7SvoCqF$i?-sMWYsf8@0RP|+O~za7xv3=? z`6$S~-r^`NPA$qy%uO}D#Zi!0TwI=Clv2g4P@|y9Qp5^Uzy@)_ zEta(WqTE}|>8T}}%tgFFnIb+QG5Ic&mL%9GOk9jSU|1v!6xZaw#Z;6!S)JLOQFwAZ GvjqS!VmRRd delta 422 zcmXw#%}N6?6or#a=BKq&3qspvTnsYW+Kr%#QmBIHrW-d}kuo;vkF=ALNhuC9^dY)% zJADH2MSOs~fcO?>ioJ01LGC@docx#{b~$j}BGC0+_+@S5t1RHU-kPx4jJMihFlU`s zdl5v@iVNCN#+XTk7d(R@Bpn1R30d6eTD_6mDT^NF&1( zC18tEoM3UD;LN0k?wBE_I5pSQOw1afRt+SErmYEUAhifhty?i=A&uR;JPVN%CRl^S_A$AaClQG&?|do9J{p-uz9sS? z${2)vrJP8Lk(|z%LV_uC9?0QDnPb713*S~a{~6`%-NMZ`x+5<1oMd$OLTTq2@Ygps ul>Opx#)5E=`!*NolvK0>AO{w431O&(>QGemoqr$>H8v}B39Fk=boB>e8gWqo diff --git a/app.py b/app.py index 9a0edec..8c64b18 100644 --- a/app.py +++ b/app.py @@ -11,19 +11,11 @@ def home(): return render_template('index.html') -@app.route("/hello//", ) -def hello_there(name,password): - now = datetime.now() - formatted_now = now.strftime("%A, %d %B, %Y at %X") - - # Filter the name argument to letters only using regular expressions. URL arguments - # can contain arbitrary text, so we restrict to safe characters only. - match_object = re.match("[a-zA-Z]+", name) - - if match_object: - clean_name = match_object.group(0) - else: - clean_name = "Friend" - - content = "Hello there, " + clean_name + "! It's " + formatted_now + "your password is" + password - return content \ No newline at end of file +@app.route('/login', methods = ["GET","POST"]) +def hello_there(): + if request.method == "POST": + username = request.form.get("username") + password = request.form.get("password") +# todo; once the password is collected, we need to check +# it against all of the other passwords in the database + return \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index fcbf6f0..c89770d 100644 --- a/templates/index.html +++ b/templates/index.html @@ -14,12 +14,12 @@

This is a Login Page

title = "goes to Google"> Click this link --> -
+
-
+

-
+

From 153b4eed5c6240ca7497d225ea2c3a277f71c514 Mon Sep 17 00:00:00 2001 From: John Date: Wed, 13 Mar 2024 15:13:44 -0700 Subject: [PATCH 2/8] testbranch --- ScheduleManagerBD.sql | 64 +++++++++++++++++++++++++++++++++++++++++++ templates/index.html | 10 ++++--- templates/page.html | 4 +++ templates/style.css | 43 +++++++++++++++++++++++++++++ 4 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 ScheduleManagerBD.sql create mode 100644 templates/page.html create mode 100644 templates/style.css diff --git a/ScheduleManagerBD.sql b/ScheduleManagerBD.sql new file mode 100644 index 0000000..aa1ba7f --- /dev/null +++ b/ScheduleManagerBD.sql @@ -0,0 +1,64 @@ +DROP DATABASE IF EXISTS `MeetingScheduler` ; +CREATE DATABASE `MeetingScheduler` ; +USE `MeetingScheduler` ; + +SET NAMES utf8 ; +SET character_set_client = utf8mb4 ; + + +CREATE TABLE `rooms` ( +`room_num` int(4) NOT NULL, +`capacity` int(11) NOT NULL, +PRIMARY KEY (`room_num`) +) ENGINE=InnoDB; + +INSERT INTO `rooms` VALUES (100,30); + +CREATE TABLE `meetings` ( +`meeting_id` int(11) NOT NULL, +`time_id` int(11) NOT NULL, +`room_num` int(4) NOT NULL, +`desc` varchar(100) NULL, +PRIMARY KEY (`meeting_id`), +KEY `fk_room_num` (`room_num`), +CONSTRAINT `fk_room_numx` FOREIGN KEY (`room_num`) REFERENCES `rooms` (`room_num`) +) ENGINE=InnoDB; + +INSERT INTO `meetings` VALUES (1,1,100, 'This is a test'); + +CREATE TABLE `meeting_times` ( +`meeting_time_id` int(11) NOT NULL, +`meeting_id` int(11) NOT NULL, +`date_time_start` datetime NOT NULL, +`date_time_end` datetime NOT NULL, +PRIMARY KEY (`meeting_time_id`), +KEY `fk_meeting_idx` (`meeting_id`), +CONSTRAINT `fk_meeting_idx` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`meeting_id`) +) ENGINE=InnoDB; + +INSERT INTO `meeting_times` VALUES (1,1,'2000-01-01 22:00:00', '2000-01-01 23:00:00'); + +CREATE TABLE `people` ( +`people_id` int(11) NOT NULL, +`name` varchar(50) NOT NULL, +`isManager` bool DEFAULT 0, +`meeting_id` int(11) DEFAULT NULL, +`password` varchar(50) NOT NULL, +PRIMARY KEY (`people_id`), +KEY `fk_meeting_idxs` (`meeting_id`), +CONSTRAINT `fk_meeting_idxs` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`meeting_id`) +) ENGINE=InnoDB; + +INSERT INTO `people` VALUES (1,'default',1,1,'password'); + +CREATE TABLE `work_times` ( +`work_time_id` int(11) NOT NULL, +`people_id` int(11) NOT NULL, +`date_time_start` datetime NOT NULL, +`date_time_end` datetime NOT NULL, +PRIMARY KEY (`work_time_id`), +KEY `fk_people_idx` (`people_id`), +CONSTRAINT `fk_people_idx` FOREIGN KEY (`people_id`) REFERENCES `people` (`people_id`) +) ENGINE=InnoDB; + +INSERT INTO `work_times` VALUES (1,1,'2000-01-01 22:00:00', '2000-01-01 23:00:00'); diff --git a/templates/index.html b/templates/index.html index c89770d..f937829 100644 --- a/templates/index.html +++ b/templates/index.html @@ -2,8 +2,10 @@ - + Login + +

This is a Login Page

@@ -14,12 +16,12 @@

This is a Login Page

title = "goes to Google"> Click this link --> - +
-
+

-
+

diff --git a/templates/page.html b/templates/page.html new file mode 100644 index 0000000..e0a0b22 --- /dev/null +++ b/templates/page.html @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/templates/style.css b/templates/style.css new file mode 100644 index 0000000..217eb34 --- /dev/null +++ b/templates/style.css @@ -0,0 +1,43 @@ +head{ + + +} + +body{ + background-image: url(https://wallpaper.dog/large/20395458.jpg); + background-repeat: no-repeat; + background-attachment: fixed; + background-position: center; + background-size: cover; + + + /*background: linear-gradient(skyblue, rgb(132, 83, 155)); + background-repeat: no-repeat; + background-attachment: fixed; + margin-top: 300px; + margin-left: auto; + margin-right: auto; + text-align: center;*/ +} + +h1{ + font-family: "impact"; +} + +p{ + font-family: "consolas"; + opacity: 1 +} + +#box{ + margin-top: 300px; + margin-left: auto; + margin-right: auto; + text-align: center; + border: 5px solid; + border-style: outset; + width: 500px; + height: 300px; + background-color: rgb(255, 255, 255,.3); + +} \ No newline at end of file From 51d6d3e7476a26b9267991d400cbf2156797de73 Mon Sep 17 00:00:00 2001 From: John Date: Wed, 13 Mar 2024 15:14:22 -0700 Subject: [PATCH 3/8] test again --- APIkeys.py | 1 + __pycache__/APIkeys.cpython-39.pyc | Bin 0 -> 227 bytes __pycache__/app.cpython-39.pyc | Bin 743 -> 4507 bytes app.py | 14 ++- requirements.txt | 10 ++ test_app.py | 173 +++++++++++++++++++++++++++++ vol_app.db | Bin 0 -> 12288 bytes 7 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 APIkeys.py create mode 100644 __pycache__/APIkeys.cpython-39.pyc create mode 100644 requirements.txt create mode 100644 test_app.py create mode 100644 vol_app.db diff --git a/APIkeys.py b/APIkeys.py new file mode 100644 index 0000000..eb049f3 --- /dev/null +++ b/APIkeys.py @@ -0,0 +1 @@ +polygonAPIkey = 'acbdefghhijklmnopqrstuvwxyz' diff --git a/__pycache__/APIkeys.cpython-39.pyc b/__pycache__/APIkeys.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15acac941a5f4d319ad2a9a17ba1e6427c52d7b0 GIT binary patch literal 227 zcmYe~<>g`kf&iIMsro?rF^Gc<7=auIATH(r5-AK(3@MDk44O<)(uv7QDXD4c85x;b z**Up+`2~eV#U-U>v@#i>Qb zF6tP9d8sZ%nPsUlF8Rr&xv6<2#W5kN6(vde`Ps!W!39N`dFcv921X_^&b|Sz r3WmmpU+Y|=$FKd7k*b03 zheQ97KkPS*e^X=c=b~{LCH*@y3}FZs8WH0xGPxO9+=^^&Gvb?JDRQ`@X)7#8E_XF; zhZSB$e<`d*bzavzC#*yxd?ae{Ml{Mtqb6@gV|+~amBaC9AK#~GH=Ky}^Zi3PlY9zt z>~NaT=>G%!fc`(o56Xj`LxaP*J|d59vu(y_C6mWC8J`ms&3{YIit4sGWyrbCaZ$Ty zNJq}0|Ach)|4F%D?nC?Sj}1{5BhL&mB2RQqZCbnqPD6}>Gb&GZ-T~*dJiTe~cjal( z6k}VApOJHe`EBEG)69@324}YoW_*pE+Jc=uWu$T;g&(??;D$&b#SJ=?23PD0P`cIU-1pQ62de(jSRx9)q_uiU+I^~&N6 z@7`CRw&`4ZztXUgJ_aET&V<2D!MG*uP6@>krm(h5ULLkxv`t}eS-djjRM9SBL~YLq zYS)D$%Ku>B87oYj(WZj13+ zR|S!;);&77nY-~?7#3Pviv#Gt#nc$KP3m=&%+^%gw)Y&4Xlq!~;~+94V|`=O9GGNL zebAoOH&NSt3w22ti^g+yyXEAibge6uYGP9EdR`C*ndjwB7PN7Dc{$C5C*$U3hn0 zO=7V*l$64Y!5YlLuh$&vb$;gvZN!}2k7yI+8cIq*OF$zXV-i|unYVlOi^JKoC)B0q zOrH!IKY)Si@NRVk6sbtbuJXK7Xr(06cx~~bvo%HoV?UD6W!3YdM688G*FEpinjaQD ze8ej(U^vhe%ZfIqYN&EE5UNfst>+Pu&_ zNcmb2+1QRCay(&Ty44$hZTkEznfWbSoxtEcI3zFKe4m9_3;gAmm`@yNJRSD$w__W zme)wYc~qIvVdRb*MrIA{zOl_VSXLT1eWaWXGb{JaO~#DOg=r%2Y-!!x?o|VXz+UqX;lixEg?jx_1r=X&ZncbFbldcHw@OJyi{LIZi}_3o10yc zS11JCRItyyM6Q=9+HT9rT}aS#^7;aak!i)SM{*X?qQGr!u z_?fP$J^-&*I!pV_?K@vA-hE9^WE5oYT2CPyiu5Gd4C%=nSkM<-^}6xRzn~*qn0=&S z(o^rRS*hbdQ~5q# zvT1BI`c=rdx-r_D>^BB)_eW_Cs8aW{5t=Zs+A9)ulb;;G|8^1)1mt1+Cl?{(7&9taSd& z!iQ%T&T0C>nS~2y&cEL(>FC6(Lw5_{C2kf(GVS^?FRiE~@^Ujv@``3=e$;& zMA0!hGX}79!6sm>IxPj4uZ|);sS6mvYgs~mDM=VY4tx4bFLW=4ezYw7OW$Dle^HFy z5nqViATWP1Oxk{!UII}J%xy#g$!lSd7W4M6p{s0%y}ccUNWR`KzmGUIMZRv9}Zqy;5$*-Q0p+@=`lY zQUuBLL9mkXvP!~`AS*JjP&Y_g<;K&t>}G(w>Le}knO*`Qnqn)v%WF#RidCPWlh@Kj zW!_^y1ghraw24BIfLWOzgeiBIm0zgH4cbXem`hR8rX96;6(Cq;Yl!cuj{WK*TJ{fm zS)2pP&C3+{LFYA89zuEIK4u_)Fuj@3r)sIAi)PD#NT=uIaM6X_^i* zi{Jm8GPuln>DpDZ!KyE-wvD#^vSBsQo?yqVx&<1wO&RQ^`O+!5H1}txR0m?Jvjetm zHUTzEi1ig1;A%2X0NcrDc-xoMQHQ{5pnejO6@*(L&jB3En`*i4-T ztrn;{M-{;dMei9zhu;wWTdH26KAo29WLi5A;5i1Q4l3vbyHqQnTJPnh6?*h3+L%TF z+HJIC-qc+lUR{3i(o-~@j}>gZRd$|ys!V)(o(%`)X6p0CtM+`NqQd$rw9YQVEzm6i zTV5`ne5tl`ULL*!)hPOM2k}(+sdnSM6a&Jnt1tDW;zf8NHY zX%_?xUkNnyE-(A31iOHceBCQkMRNiW?>gbcNdai>7G8W8eH zN)T_NtKw#sXliu`hzO09RI&z#B@CnuLTi4{RlS0%?#1GjaET&kN?tt;YpOHYFFQ1( hT(n$s0`@u$dvh(<8Xp_C9aaU}I%UI}>nO_&_J7n=W|IH_ literal 743 zcmY*Xy^a$x5cbb*cC$$U38ZV&Zb6O~t~y#8 zp5U(JacJFA(eMCQG2SZ(wmkkkW6#Vt)^ChL`YCm>$Sv4~gp|ARRgs&OyRV@XpeGjOxfh}T zhKC+56Qi)0_m%h0`rBlIPA)ogD~ptBPwxlO5pI>Zeb;-Qy)~dsw#>zBk)4%rq8Fba zJ5ke(gwmR91Q+&$QY(`U*LqRT+TADJXIbyf;Iw`8^r!;3KOShcgsIK)^}4hE;)1!7 zQ1==6)CkiaZ)=Bznk`DlU!RU#FgP2Ikb5M-&Xq9#k>YsWuZmO`fh9{S=!)qMB6iIM zyP=m}>oG@6cSHmSWJeFkCEGEiANF+vU%GgM49i@Ci`Tg^pOqF{-rlv-K!@I5yGy_Y z=SoY*XJAvVTWHbuyg8bx(qbw8l}-C9yT%-fLQU)(H290A`dTcZ&1&k0s7o7;Y0$m~ zEr)t*(=h`ZqNWa3ksOdQA3xlpT(g{oSWgT0_t*Q&_zu~cGHzzh7s#Q4}TZL&u! K<}poz2lOuzeya}v diff --git a/app.py b/app.py index 8c64b18..9c546d4 100644 --- a/app.py +++ b/app.py @@ -1,11 +1,22 @@ import re from datetime import datetime - +from sqlalchemy import SQLAlchemy from flask import Flask, render_template, request app = Flask(__name__) +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///students.db' +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False +db = SQLAlchemy(app) + +class employee(db.Model): + name = db.Column(db.String(100), nullable=False) + age = db.Column(db.Integer, nullable=False) + worktimes = db.Column(db.time, nullable=False) + +engine = create_engine("sqlite+pysqlite:///:memory:", echo=True) +engine.connect @app.route("/") def home(): return render_template('index.html') @@ -16,6 +27,7 @@ def hello_there(): if request.method == "POST": username = request.form.get("username") password = request.form.get("password") + # todo; once the password is collected, we need to check # it against all of the other passwords in the database return \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d2a8358 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,10 @@ +#py -m pip install -r requirements.txt (do this to install all realavent python files) +pandas +polygon-api-client +numpy +sqlalchemy +flask +Flask-SQLAlchemy +requests +flask-marshmallow +marshmallow-sqlalchemy \ No newline at end of file diff --git a/test_app.py b/test_app.py new file mode 100644 index 0000000..ef0c77e --- /dev/null +++ b/test_app.py @@ -0,0 +1,173 @@ +from flask import Flask, render_template, request, jsonify +from flask_sqlalchemy import SQLAlchemy +from flask_marshmallow import Marshmallow +import sqlalchemy as sa +from sqlalchemy.orm import sessionmaker +from sqlalchemy import Table, Column, Integer, String, Float +from APIkeys import polygonAPIkey +from polygon import RESTClient +import pandas as pd +import numpy as np +import sqlite3 +import os + +basedir = os.path.abspath(os.path.dirname(__file__)) + +# Create flask app instance +vol_app = Flask(__name__) +vol_app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///' + os.path.join(basedir, 'vol_app.db') + +db = SQLAlchemy(vol_app) +ma = Marshmallow(vol_app) + +# Create client and authenticate w/ API key // rate limit 5 requests per min +client = RESTClient(polygonAPIkey) # api_key is used + +# Declare model +class VolData(db.Model): + __tablename__ = 'vol_table' + id = db.Column(db.Integer, primary_key=True) + ticker = db.Column(db.String, nullable=True, unique=True) + std_dev = db.Column(db.Float, nullable=True) + image_url = db.Column(db.String, nullable=True) + + def __init__(self, ticker, std_dev, image_url) -> None: + super(VolData, self).__init__() + self.ticker = ticker + self.std_dev = std_dev + self.image_url = image_url + + def __repr__(self) -> str: + return '' % self.ticker + +# Schema +class VolDataSchema(ma.Schema): + class Meta: + fields = ('id', 'ticker', 'std_dev', 'image_url') + +single_vol_data_schema = VolDataSchema() +multiple_vol_data_schema = VolDataSchema(many=True) + +# Create tables/db file +with vol_app.app_context(): + db.create_all() + + +# Main url +@vol_app.route('/', methods=['GET']) +def create_main(): + + all_data = VolData.query.all() + all_data_ser = multiple_vol_data_schema.dump(all_data) + all_data_df = pd.DataFrame(all_data_ser) + + print(all_data_df) + + return render_template('index.html', volatility_data=all_data_df) + + +# Add vol data entry to database +@vol_app.route('/data', methods=['POST']) +def add_vol_data(): + stock_tickers = request.json['tickers'] + + # Empty dataframe to store log returns + std_devs_data = pd.DataFrame() + + for i in stock_tickers: + print('processing ' + i) + + try: + # Request daily bars + data_request = client.get_aggs(ticker = i, + multiplier = 1, + timespan = 'day', + from_ = '2022-09-01', + to = '2023-03-25') + + # List of polygon agg objects to DataFrame + price_data = pd.DataFrame(data_request) + + # Create Date column + price_data['Date'] = price_data['timestamp'].apply( + lambda x: pd.to_datetime(x*1000000)) + + + price_data = price_data.set_index('Date') + + price_data['log_returns'] = np.log(price_data.close) - np.log( + price_data.close.shift(1)) + + # Rolling stdDev window + rolling_std_dev_window = 20 + + # Rolling stdDev log returns + price_data['std_devs'] = price_data['log_returns'].rolling( + center=False, window = rolling_std_dev_window).std() + + std_devs_data[i] = price_data.std_devs + + except Exception as e: + print(str(e) + 'error on ticker ' + i) + continue + + # Trim data + std_devs_data = std_devs_data[rolling_std_dev_window:] + + # Rename index before transpose + std_devs_data.index = std_devs_data.index.rename('idx') + + # Transpose data + sorted_data = std_devs_data[-1:].T + + # Reset index + sorted_data.reset_index(inplace=True) + + # Rename column + sorted_data = sorted_data.rename( + columns={sorted_data.columns[0]: "tickers", + sorted_data.columns[1]: "std_devs"}) + + # Sort data + sorted_data = sorted_data.sort_values(by=['std_devs'], + ascending=False, + ignore_index=True) + + # Add urls to dataframe + for j in sorted_data['tickers']: + iconUrl = client.get_ticker_details(ticker=j).branding.icon_url + iconUrl = iconUrl + '?apiKey=' + polygonAPIkey + sorted_data.loc[sorted_data['tickers'] == j, 'image_urls'] = iconUrl + + # print(sorted_data) + + entry_list = [] + + for k in sorted_data.itertuples(index=False): + new_entry = VolData(k.tickers, + k.std_devs, + k.image_urls) + entry_list.append(new_entry) + + with vol_app.app_context(): + Session = sessionmaker(bind=db.engine) + session = Session() + + for l in entry_list: + try: + session.add(l) + session.commit() + except: + print('Unable to add ' + l.ticker + ' to db.') + continue + # Commit the changes to the database + session.close() + + return sorted_data.to_dict('records') + + +@vol_app.route('/data', methods=['GET']) +def get_vol_data(): + all_data = VolData.query.all() + all_data_ser = multiple_vol_data_schema.dump(all_data) + return jsonify(all_data_ser) \ No newline at end of file diff --git a/vol_app.db b/vol_app.db new file mode 100644 index 0000000000000000000000000000000000000000..9f088e1b8fe597006ac515ef179904e0437d4530 GIT binary patch literal 12288 zcmeI#&rgFe6bJBj8g(QKyDU5Mj*zIy;y)lRRZ(OPL9vTpIJ|C|4lN9oLn zo_6!Fd|%QZuPuarIK7*(pR0@>%W9e^I$~YMIXfm|jPbf{)om3z-(Ds4sPlEf+2P$q z$NXX~v&YPy`MK@^>_Y$o5P$##AOHafKmY;|fB*#kP2l~2@AfT=e>f_+FS12h$iI`; zFcfYiC~{AHLCrqdMmtZ*3nFnQLJCF^1+nk%lhIcB!*f>Ats4%{-B7R0R4UVKL8t!6 zjr2l3O`bA2uZrKNu0!w24JULdCS>QSqYuV`H;x6_Kksx5XVBW|3yZV-CC%PuuSH$a z%Ve&~WiFe~lY?fe>-s(I+0k8BcL)eT00Izz00bZa0SG_<0uX=z1U6N`&=*7fzp1|$ a_ksWfAOHafKmY;|fB*y_009Ur1-=28gH1~S literal 0 HcmV?d00001 From 6a28df4319359853951170d316a77122266e17e7 Mon Sep 17 00:00:00 2001 From: John Date: Wed, 13 Mar 2024 16:08:53 -0700 Subject: [PATCH 4/8] Started on new SQllite data structure --- __pycache__/app.cpython-39.pyc | Bin 4507 -> 2551 bytes app.py | 47 +++++++++++++++++++++++++++------ 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/__pycache__/app.cpython-39.pyc b/__pycache__/app.cpython-39.pyc index 0a08b3aba71bf63238bfad066c702668545c3900..097c7e733c0573a42c8b2ad7a7099e796a10b4ef 100644 GIT binary patch literal 2551 zcmai0OK%%T4BpwdRBG!tp%eaN$` zG_;a+mU*dlGXm(k0U)$i7~e)iT@YAfHaRM)*{Pd5+CXZAcvq7;lLeMAi6h+C-M zaBogHsXbj;{odQ!S=-#$TwSSc?rc|^82;qv6uy_BWr|Cv;;KyR=uGPylt5`zs=ZNN z^PEnn2I#Dju49jFa%0&U%lY@@!h1f@?-Vtmtd_7(Dlw!G$i`dZ+Ho%o{YJ=YAmqC| zhSLJ7yA+OJmGj=l+a#?e8Kbfdww|HQE5Y%t4Y|4VqsP@4mA=w?z#Ds zAM*k#tj#!MEyjiBx0ujt>p#_mlV(28yk8T(2a&~8a<0AWrzz;@TZLbSC?$FKs81jZrxhGvwXk4y0yE0>+Zd~ zl7aW_U7mDUGpqaE?qc_VTksP_SZM)>P3GV!$w%&7jAR|m&m-9ZB&m9aV#lHy)j_t$ z2%X4h2#)qo5G=s=(SC{=fR-ujlb)+_oDLg22NZDOd3bY-mro(V@cA^7G7#6<8nr5v zozJ1dsA8R6Z9S$!3*t=VpF)FsaW85BAZ98-bIo0rbVGJl^AUFi{ayuf308`6*y93~ zh}2(Pq6IMi-x3ko_%_ucWkVS9=#BCnr<=PlU132o*i`&F{1U%`1S9=m3Ln7+t`yHA zrod4;7d!z47IYO>`Uj9q>63v%lq031_O$_w-9456egtC|k)I zntNk{rGw*BTEZFppk;Av2_uxwjD3Q~5BMyjWlMVnadphTb)*bn@JrstD5(M^oZaS_ zhO0deB0=sBuYoYMk=#Ur4Kn-|l`~+3=8o0~JE_9tHXE235KMaKdbC@3pqnY&LjH~Ec$5Ae`ufW$B_&~ zZzmC3gxwVLQdE8q=%Kk3CaoYA+N1TF(06yLHMq8{h-K}Brsrb7Cd4IU=l}yS0_4zM z4d9^Js5&4LXyi5ENv3y#E9to|* zvJpUd#`$d|Um`(IvT7CmOd&`h^dN?Bp3ZYFtC(-IFigCx%{apXjxlsd0iGhPE2L=f zuVAM#FI3KC6S<}5c=LO3UHhYd16%_OVMsN{s*Z5OxaI7CJEz+f&{^^Gpf&1KV=JL7 z9Hk&f1`Y#JY%mCtdE>tjvU_kO^)e;_mZ3}}an=v^!_oElH6Fh7Qy{iXVotS*gOBPE STP@pVtE}t9DS%clk^cbM97_}c literal 4507 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 diff --git a/app.py b/app.py index 9c546d4..1c1a54d 100644 --- a/app.py +++ b/app.py @@ -1,22 +1,48 @@ import re from datetime import datetime -from sqlalchemy import SQLAlchemy +from flask_sqlalchemy import SQLAlchemy from flask import Flask, render_template, request app = Flask(__name__) -app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///students.db' +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///employee.db' +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///rooms.db' +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///meetings.db' + app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) class employee(db.Model): - name = db.Column(db.String(100), nullable=False) - age = db.Column(db.Integer, nullable=False) - worktimes = db.Column(db.time, nullable=False) + name = db.Column(db.String(100), nullable = False) + employee_id = db.Column(db.String(100), primary_key = True) + age = db.Column(db.Integer, nullable = False) + start_work = db.Column(db.TEXT, nullable = False) + end_work = db.Column(db.TEXT, nullable = False) + Password = db.Column(db.String(100),nullable = True) + +class meetings(db.Model): + Meeting_id = db.Column(db.Integer, primary_key = True) + Start = db.Column(db.TEXT, nullable = False) + End = db.Column(db.TEXT, nullable = False) + Room_number = db.Column(db.Integer, nullable = False) + People = db.Column(db.string, nullable = True) +class rooms(db.Model): + Room_number = db.Column(db.integer, primary_key = True) + meetings = db.Column(db.string,nullable = True) -engine = create_engine("sqlite+pysqlite:///:memory:", echo=True) +@app.before_request +def create_and_populate_db(): + db.create_all() + + if employee.query.count() == 0: + employee = [ + employee(name='Jim', id = '1', age=26, start_work = datetime.time(8,30,0,0), end_work= datetime.time(18,30,0,0), password = 123), + employee(name='Jane', id = '2', age=53, start_work = datetime.time(7,30,0,0),end_work= datetime.time(18,30,0,0), password = 456), + employee(name='John', id = '3', age=34, start_work = datetime.time(8,0,0,0), end_work= datetime.time(18,30,0,0),password = 789) + ] + db.session.bulk_save_objects(employee) + db.session.commit() -engine.connect @app.route("/") def home(): return render_template('index.html') @@ -27,7 +53,12 @@ def hello_there(): if request.method == "POST": username = request.form.get("username") password = request.form.get("password") + for i in employee.query.count(): + info = employee.query.get(i) + if (info.username() == username) and (info.password() == password): + return render_template('placeholder.html') + # todo; once the password is collected, we need to check # it against all of the other passwords in the database - return \ No newline at end of file + return render_template('index.html') \ No newline at end of file From e62244986d6f15219fadc451d5a41bc277956c19 Mon Sep 17 00:00:00 2001 From: John Date: Sat, 16 Mar 2024 13:57:37 -0700 Subject: [PATCH 5/8] got the database files to work correctly --- __pycache__/app.cpython-39.pyc | Bin 2551 -> 3525 bytes app.py | 78 +++++++++++++++++++++------------ instance/data.db | Bin 0 -> 20480 bytes templates/index.html | 10 ++--- 4 files changed, 55 insertions(+), 33 deletions(-) create mode 100644 instance/data.db diff --git a/__pycache__/app.cpython-39.pyc b/__pycache__/app.cpython-39.pyc index 097c7e733c0573a42c8b2ad7a7099e796a10b4ef..ffc76300150cf724763c1d343b43b0d349b88549 100644 GIT binary patch literal 3525 zcmai0TW=f372a9yE|*J+qVDqDZQRss8!57Tb=}m8E{WV&RxAZY7b+GcXH1dW3q89` zEmz8m{AwUSK>~^b`3rsQQ-8y}=83NX+6MzE`kf)EThw+Jd-lwkv$JQ;eCJXd8SxBU z?|l1DF*<4(U(?|1Wnu6LPx>zqZg3VFKE2J5MW$~u;&WjxvV2SPR%l0#??ib&AGy98 z75qZv`5rTbBZ`O2FL7Ix+9TX~Xz;w|+=qs+LCp7YFdE@yjLL)gaY#ma1(M1@GJ!QG`4}I6ZD7SIQ97FD6UU5C@+mEu!TdCz<}-Y@ zY4R&?On#ML(=)T8$gl63@*8Me;WzlrHw-&sn@06k4|_M(t4vv0D-w8no1cEN7&dl9 zv{$v2y&BfiT{S92%!Ldx5p}{^CRARE7hREN%9Vn*q-bO+-<4tTJdv-)(idSX6A$L+ z=Xouw&GEWFLyLa0^zq7*KLpE*TZt$Q@}U)uI(Ka zkBws-;DzzXg*9m1GI!v%ymHAC$(|5B4ntPIV!j)9!?0El#TEv|j%-CWxfkq;z4hv- za)ThQMIs247X(qlyCLzVAb8QOg@YNB*OjxBgxx4s&SoZCaZ_0|r;5X$1ud@fYjGx; zLaJP?DU_YPfPjZf{~car5@Q_wW65d+Eu>%I$^w3!1_E zy$zYP0f6mVr!&{tlLh>ugeN89vPs+(ee0R;9H$UfUQ0%P9<1v>B{Td$hR)8Fb-P=%pC(`rsxsR*CT z+xSp^kI0FO*eCDWpBt(W&-;#8YtFj2XUM*kTCV5ai zTZy?UK1-4)h`Ui881^<=ja`HcK&+e%k#s_Fsi*E>m1}rXO6e}()Q6QM`G5D;PcZxc zyan%3T)P8^SrXRuw>;Q!;eYQ~-o;O36-2oMkENGx;m1(IpY}wv~g_XXu);MW3a|f`b?HuLzktSgc@cME$L{L^|%%b#qRZfhEXq1?!mkM9N>+fP!oo5WwWhL`nhWlH~E-^{R_Lj|`J5q>FvlBTbL*YH7 z(rd22^;)Q^FXwi$D1;3*W-mjIvUZY4+{0{2J2FhU3i`^K50hpqR=JN>wv@H;baM;U z8$p}xBs@K51O4^{R)2>}aez4LUGqyO|3=U{vXC)Mfa|Y-4WPws0Kx&J05uIRcgRx{ zqrnAe@eyd1hcn<$wMGY8fEFLuYY}KKt~Ehg8e9%#r~$Z$FKEzvd{SFi^;&kn8RQ~M09kqw<`=**%;8rpU3L}$9M(=-pvtZ$jA zVSj3w(H=QMOLfc+a_}YbH^5s%Umn<5dB`79z>J=bmW@9?I6!#9=HkA?r)CgR2l@Sc zyRx6tC-MdOv3;x0XXE_lAu|zbo5q*y#TOXg(&)LpEd2Gt5jRI`AINmj$1sn3F#z@(UurB=RdF4~YDl$U`E(0a1=FehWPc`yOGkhoCfiR3WOi z`~hB)qD20X$Xy~o0_l-8Jp!U~yXZW0YvXnX&B?0@I?IOGNkTN5Iwa%@RI3w`ilcJ+ zz}8_dKY&F3mI(b^=K}eNxJ4o#5~0+ia!rxx5}_K=*X+O z{Uq?1q*OTMr$nBCpfMaYdsMa*YbmQ0W5Lsst~-U|jtIjf$aaJj@KUAci5eOTULpAtc2TRWj2n2Fv}{o^zjWf9Z{_n2LZ*j%|*T2tX@^76v{-9xoci+s9e1tYvr9S&Woxmt!1vP%`A||ym6Qy0MMMAC=}-!cpSPO*d}=>Qxag-+ z?Lh52U8YpIF0f+}4ElbZ>)^RhW0nW&Z&gBoo>I literal 2551 zcmai0OK%%T4BpwdRBG!tp%eaN$` zG_;a+mU*dlGXm(k0U)$i7~e)iT@YAfHaRM)*{Pd5+CXZAcvq7;lLeMAi6h+C-M zaBogHsXbj;{odQ!S=-#$TwSSc?rc|^82;qv6uy_BWr|Cv;;KyR=uGPylt5`zs=ZNN z^PEnn2I#Dju49jFa%0&U%lY@@!h1f@?-Vtmtd_7(Dlw!G$i`dZ+Ho%o{YJ=YAmqC| zhSLJ7yA+OJmGj=l+a#?e8Kbfdww|HQE5Y%t4Y|4VqsP@4mA=w?z#Ds zAM*k#tj#!MEyjiBx0ujt>p#_mlV(28yk8T(2a&~8a<0AWrzz;@TZLbSC?$FKs81jZrxhGvwXk4y0yE0>+Zd~ zl7aW_U7mDUGpqaE?qc_VTksP_SZM)>P3GV!$w%&7jAR|m&m-9ZB&m9aV#lHy)j_t$ z2%X4h2#)qo5G=s=(SC{=fR-ujlb)+_oDLg22NZDOd3bY-mro(V@cA^7G7#6<8nr5v zozJ1dsA8R6Z9S$!3*t=VpF)FsaW85BAZ98-bIo0rbVGJl^AUFi{ayuf308`6*y93~ zh}2(Pq6IMi-x3ko_%_ucWkVS9=#BCnr<=PlU132o*i`&F{1U%`1S9=m3Ln7+t`yHA zrod4;7d!z47IYO>`Uj9q>63v%lq031_O$_w-9456egtC|k)I zntNk{rGw*BTEZFppk;Av2_uxwjD3Q~5BMyjWlMVnadphTb)*bn@JrstD5(M^oZaS_ zhO0deB0=sBuYoYMk=#Ur4Kn-|l`~+3=8o0~JE_9tHXE235KMaKdbC@3pqnY&LjH~Ec$5Ae`ufW$B_&~ zZzmC3gxwVLQdE8q=%Kk3CaoYA+N1TF(06yLHMq8{h-K}Brsrb7Cd4IU=l}yS0_4zM z4d9^Js5&4LXyi5ENv3y#E9to|* zvJpUd#`$d|Um`(IvT7CmOd&`h^dN?Bp3ZYFtC(-IFigCx%{apXjxlsd0iGhPE2L=f zuVAM#FI3KC6S<}5c=LO3UHhYd16%_OVMsN{s*Z5OxaI7CJEz+f&{^^Gpf&1KV=JL7 z9Hk&f1`Y#JY%mCtdE>tjvU_kO^)e;_mZ3}}an=v^!_oElH6Fh7Qy{iXVotS*gOBPE STP@pVtE}t9DS%clk^cbM97_}c diff --git a/app.py b/app.py index 1c1a54d..6ce7299 100644 --- a/app.py +++ b/app.py @@ -1,12 +1,10 @@ import re -from datetime import datetime -from flask_sqlalchemy import SQLAlchemy -from flask import Flask, render_template, request +from datetime import time +from flask_sqlalchemy import SQLAlchemy +from flask import Flask, render_template, request, redirect, url_for app = Flask(__name__) -app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///employee.db' -app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///rooms.db' -app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///meetings.db' +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) @@ -15,35 +13,41 @@ class employee(db.Model): name = db.Column(db.String(100), nullable = False) employee_id = db.Column(db.String(100), primary_key = True) age = db.Column(db.Integer, nullable = False) - start_work = db.Column(db.TEXT, nullable = False) - end_work = db.Column(db.TEXT, nullable = False) + start_work = db.Column(db.types.Time()) + end_work = db.Column(db.types.Time()) Password = db.Column(db.String(100),nullable = True) -class meetings(db.Model): +class group(): + group_name = "" + employees = [] + def __init__ (self,group_name,employees): + self.group_name = group_name + self.employees = employees + +class meeting(db.Model): Meeting_id = db.Column(db.Integer, primary_key = True) - Start = db.Column(db.TEXT, nullable = False) - End = db.Column(db.TEXT, nullable = False) + Start = db.Column(db.types.Time(), nullable = False) + End = db.Column(db.types.Time(), nullable = False) Room_number = db.Column(db.Integer, nullable = False) - People = db.Column(db.string, nullable = True) + People = db.Column(db.PickleType, nullable = False) -class rooms(db.Model): - Room_number = db.Column(db.integer, primary_key = True) - meetings = db.Column(db.string,nullable = True) +class room(db.Model): + Room_number = db.Column(db.Integer, primary_key = True) + meetings = db.Column(db.PickleType, nullable = True) @app.before_request def create_and_populate_db(): db.create_all() - - if employee.query.count() == 0: - employee = [ - employee(name='Jim', id = '1', age=26, start_work = datetime.time(8,30,0,0), end_work= datetime.time(18,30,0,0), password = 123), - employee(name='Jane', id = '2', age=53, start_work = datetime.time(7,30,0,0),end_work= datetime.time(18,30,0,0), password = 456), - employee(name='John', id = '3', age=34, start_work = datetime.time(8,0,0,0), end_work= datetime.time(18,30,0,0),password = 789) + if employee.query.count == 0: + employees = [ + employee(name='Jim', id = '1', age=26, start_work = time(8,30,0,0), end_work= time(18,30,0,0), Password = 123), + employee(name='Jane', id = '2', age=53, start_work = time(7,30,0,0),end_work= time(18,30,0,0), Password = 456), + employee(name='John', id = '3', age=34, start_work = time(8,0,0,0), end_work= time(18,30,0,0),Password = 789) ] - db.session.bulk_save_objects(employee) + db.session.bulk_save_objects(employees) db.session.commit() -@app.route("/") +@app.route("/") def home(): return render_template('index.html') @@ -51,14 +55,34 @@ def home(): @app.route('/login', methods = ["GET","POST"]) def hello_there(): if request.method == "POST": + if (employee.query.count() == 0): + employees = [ + employee(name='Jim', employee_id = '1', age=26, start_work = time(8,30,0,0), end_work= time(18,30,0,0), Password = 123), + employee(name='Jane', employee_id = '2', age=53, start_work = time(7,30,0,0),end_work= time(18,30,0,0), Password = 456), + employee(name='John', employee_id = '3', age=34, start_work = time(8,0,0,0), end_work= time(18,30,0,0),Password = 789) + ] + db.session.bulk_save_objects(employees) + db.session.commit() + group1 = group("group1", [employee.query.get(1),employee.query.get(2),employee.query.get(3)]) + if (meeting.query.count() == 0): + meetings = [ + meeting(Meeting_id = 1,Start = time(8,30,0,0) , End = time(11,30,0,0) ,Room_number = 1, People = group1), + meeting(Meeting_id = 2,Start = time(11,50,0,0) , End = time(12,30,0,0) ,Room_number = 2, People = group1) + ] + db.session.bulk_save_objects(meetings) + db.session.commit() username = request.form.get("username") password = request.form.get("password") - for i in employee.query.count(): - info = employee.query.get(i) - if (info.username() == username) and (info.password() == password): + employee_num = employee.query.count() + print(employee.query.count()) + for i in range(employee.query.count()): + info = employee.query.get(i+1) + if (info.name == username) and (info.Password == password): return render_template('placeholder.html') # todo; once the password is collected, we need to check # it against all of the other passwords in the database - return render_template('index.html') \ No newline at end of file + return render_template('index.html') +if __name__ == '__main__': + app.run(debug=True) \ No newline at end of file diff --git a/instance/data.db b/instance/data.db new file mode 100644 index 0000000000000000000000000000000000000000..83c10857ff513c3f02b1f6d3ae2ecfe464bc7acb GIT binary patch literal 20480 zcmeI3&u<$=6vubH{t>%1Tarc=sS+&<5;3918xs<8KqQt0Nt`sb4W$xjwT_3(D&Adp zy%tTSAfk$J8L5X3e*k|3e*VW1Eh>4WeOWUlmF{fk)hALi|CRL8 z&+3o)KcImH2_OL^fCP{L5PH)mMWb9Ujx8B`Lj0FIS%>7p4eARt=9iv-q_wtoYhsIt+Zi|L z`&PdXF2HJ3#JTMp5dzV^ok$m|^Ri^S9df^auM6MwrZot>ux~!~HR6`|mY)*GEf0^P z-jmdy)bF9ff&`EN5%G#mS(m+>Q?mf+IqPR zzfw6Y#@c#iq`SKIUMUg#TP|5%DX)$>O!&XE^6pJJGc%muc8ocgessPGcVoGdgP0Wc zS4sU-{T(VSNB{{S0VIF~kN^@u0!RP}AOR$R1dzagpFm1c<%%NS%Za3-W({%wpUD0o zUHt`KSdah`Kmter2_OL^fCT=X1kPSdWTd4fnWYV5eP!gn$XFh`?n!)|`tG;HFb1Yr zy&h+&L*Ez6boHrtJf~M!`k)J`uO_ECrXF~XV+R50 zL=&HIHcjsLY#%IE5cqa`5Rg89#F=tLj>Qn!;NS4QZ#lc#^{kHR^#a>-`@G1qVZUbu z6k?&dy)$mHjAOZwr0a9GFdP$ZvTr@4N6&}PXY zJ!RW=IJ**)f(&6!=U5I9L`lD#O?7}$U<=mCuzJj^>8S;=L!iC^4srG`1O~TrV2Bfh zIlWm;Pmj1N5CGqq8?-4TJBz)fd3r5s&CoTWj?SKNT6o0iD+18+5D=X&(uJ4=eU-i* zj){YzZ?NPx+%$4pr0>%=#iE&Ki&BFraL34LWkL;I-C4Or$?kb2mA|b7?ns4_=1@tP zu{ - + Login - -

This is a Login Page

@@ -16,12 +14,12 @@

This is a Login Page

title = "goes to Google"> Click this link --> - +
-
+

-
+

From 05ce7e1e39ecc4b546ecfbf599e3c461dbb44c4a Mon Sep 17 00:00:00 2001 From: ALeBD Date: Sat, 16 Mar 2024 20:20:46 -0700 Subject: [PATCH 6/8] input.html --- .vscode/settings.json | 3 ++ templates/input.html | 77 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 templates/input.html diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6f3a291 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} \ No newline at end of file diff --git a/templates/input.html b/templates/input.html new file mode 100644 index 0000000..bbdd09a --- /dev/null +++ b/templates/input.html @@ -0,0 +1,77 @@ + + + + + + + Enter Meeting/People + + + + +
+ +

Enter Meeting

+ +
+ + +
+
+ + +
+
+ + +
+

Meeting Time:

+
+
+ + +
+
+ + +
+
+ + + {% endif %} + +

Add Person

+
+
+ + +
+
+ + +
+

Work Time:

+
+
+ + +
+
+ + +
+
+ +
+ {% endif %} +
+ \ No newline at end of file From 51b2e13a86768d13217d8a704017f4643dd4a7fb Mon Sep 17 00:00:00 2001 From: ALeBD Date: Sat, 16 Mar 2024 20:21:38 -0700 Subject: [PATCH 7/8] MeetingPeopleInput --- __pycache__/app.cpython-312.pyc | Bin 0 -> 7173 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 __pycache__/app.cpython-312.pyc diff --git a/__pycache__/app.cpython-312.pyc b/__pycache__/app.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7d114aed25f1fd296ea17e7436e62cc2ae7182a GIT binary patch literal 7173 zcmb_heN0=|6~FKK`TJo$96n5%gb>ok{eb18ElJa41V{oc0obE+q7zu|DywSQvcdH&wh^W zn51fZC64dMIp^MY?zz8n?&Y(xG7EuX>;6V8FDK;R*wBhTTiN&zL&z)ZM^6&%B`5{fH2SYo#Nh3(pW42dx@#`#zp*?OIf!pZ)S2)~xTb1%0Ay*@D% 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 S)5NJSxY~6c;p)|U#s2};PE)J^ literal 0 HcmV?d00001 From 9ea1dc98f9a5640f8335b985c300edc53c25aeb1 Mon Sep 17 00:00:00 2001 From: John Date: Sun, 17 Mar 2024 07:37:37 -0700 Subject: [PATCH 8/8] working on data input --- __pycache__/app.cpython-39.pyc | Bin 3525 -> 3876 bytes app.py | 39 +++++++++++++++++++++------------ instance/data.db | Bin 20480 -> 24576 bytes templates/input.html | 12 ++++++---- 4 files changed, 33 insertions(+), 18 deletions(-) diff --git a/__pycache__/app.cpython-39.pyc b/__pycache__/app.cpython-39.pyc index ffc76300150cf724763c1d343b43b0d349b88549..2b79179cb953af37649910a41522b3db91d6380f 100644 GIT binary patch delta 1360 zcmY*Y&2Jk;6yF)|m)C38ahy2uN8)@muA7hm5}|yxL~W@QK@n<6kuS#X8yp+FPR1J! zkwcK&Yf#gXH~@!O?U4hhXO0|@;K0@5AIOOt2M`kPO`0a`YJU6P@BL=y&CGj0=blU@ zYVo*d;PdF8zr;_;!$h9Xv%{q?Y>{YP=tmB}U)aB8zzC!s7?A4oN?Q1>F&KsP1EbF> z9B=PqTMl8S4UysrLmmkSO$bP(4m@-;Jz&}cDW`kEf8QuMq1R^-SW7{E0(5qgjgEwI4> z4!m!oJ$7niBnIOL7HTq@pLnjBe6GoyXc~Nvg?7t1a(irmRiN$Yz(C7r`A2cc4%i+? zdz73UI+2i{q_StKJ#YF$OZ)Mj1?h}|al2=?lD(5OH_#sGMRdv=VG8nn#_`v8jE8J{ z1Mpie+?F?S%My2N>_*p{?c$Bv=gqGA)4TfduDf0fMDa#P$X7_SN^uaMeX?`#Gb zm4T425&Js98wkhrx8oQ>*^<-5771nubiLA@9&`0oY-ay&uNiFZgv*;@`?K<>q>CQf zZ4qvEKt^f8n*?tW(1l65TX~h>8o}EH)DRV0*X~P0^OKHj43I9EX)SKs*Ay4=9fZepb^MA!@(SkjpO zebS$QC|6xe<7k}Ll1znEEZFG!>?6<4{x(X=5xsT!KHBOBH~Vt5U26u_wg`4ULQ40T z!97#nLytO1hpTtXY-oX~?=;GJ^}F9)rHA^MPRdM~3CCn!3|TYDyc~|G$NmE)%Nc_J delta 1086 zcmX|=%WD%s9LM)J*;kUynx=U)&7)7NY3r+CeN?Rv6crS-J=H^q&X_j#p_46wq!o$i zsn9ZqUOY75A0T)WdZ-}iLGUK*e~_!72SM@o+t%)|pZ)IqzBBXNncu!Ge#*I(SS+I9 zHSp)BIB;OY&9h(H#^@?*vW<5`)557Gc?VCt)S57p63$kdcea2hc`E41U_8y!Jj1)H zjAz#v@8-E6(j}ri|A@&S=*aQ{FRlS-9Hz8V&--b3!PG1B^*}GKEBgrfeH2jncDX#a zIOmni8Fkz`=JrxF@C~3+J9@SwiK1>IY|ydE;`^OY3bKRPlcNxQlMQi5VvBw9K7qBgCs;45KIW_|r;Wl{Jr);@{hwng|1n4H?SIrORi z@GuOiTj4BRQPuD<_^md>qp>lXk0CTBuc>e0qXiqagZCA@>mP9fPpbikM{FJB2bGJw zdCrp_tA)0rJk^3dmEKpG7F0t`wgR4m9=)Y;77V@UIXvYV+~gK#oHcdSUH>&tH2{yp zKuUGUP#g$RWZZ zLQn<6>Ymg0;930feC2_dU7F`Y9-Z|T=H*oy(*&sHU_D|DGHu` rA+GMOK?;8UAqsw>K0Z1MFv*mp$*cL~xnU|bximM|@isXvau5IjW3w@{ delta 61 zcmZoTz}T>Wae}lUD+2=q2*UvLL>*&MRtCLrFJAs13@p5L4172FkMsWGt=lXpz{R_{ Ij

Enter Meeting

+
@@ -47,17 +49,19 @@

Meeting Time:

- {% endif %} - + +

Add Person

+

Work Time:

@@ -72,6 +76,6 @@

Work Time:

- {% endif %} - + + \ No newline at end of file