diff --git a/app.py b/app.py index 064197e..46fca25 100644 --- a/app.py +++ b/app.py @@ -1,6 +1,6 @@ from flask import Flask, render_template, request, flash, redirect import datetime -from sqlalchemy import create_engine, Column, Integer, String, DateTime +from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker @@ -28,7 +28,7 @@ class Settings(Base): __tablename__ = 'Settings' id = Column(Integer, primary_key=True, autoincrement=True) settingType = Column(Integer) - settingVale = Column(String) + settingValue = Column(String) class SettingsMetadata(Base): @@ -47,36 +47,76 @@ SettingsMetadata.__table__.create(bind=engine, checkfirst=True) Session = sessionmaker(bind=engine) - @app.route('/', methods=('GET', 'POST')) @app.route('/index.html', methods=('GET', 'POST')) def index(): session = Session() - plantdate = datetime.datetime(2022, 1,19) - last = datetime.datetime(2022, 1,19) - freq = 7 - next = last + datetime.timedelta(days=freq) + + installCheck = session.query(Dates).first() is None + if installCheck is True: + # session.close() + return redirect('install.html') + + # Init the dates dict + dates = {'plant': '', 'last': '', 'next': '', 'freq': ''} + alerts = {'text': '', 'email': ''} + # alerts = {'text': False, 'email': True} + + # Get the feeding frequency and set it to an int + dates['freq'] = int(session.query(Dates).filter_by(dateTypeID=4).first().dateValue) alerts = {'text': False, 'email': True} + # If clicked the update button for dates, grab the new values and save them to the db. Then render the template if request.method == 'POST': - plantdate = request.form['plantDate'] - last = request.form['lastDate'] - next = datetime.datetime.strptime(last,'%Y-%m-%d') + datetime.timedelta(days=freq) - - plant = {'plant': plantdate, 'last': last, 'next': next, 'freq': freq} - return render_template("index.html", plant=plant, alerts=alerts) + dates['plant'] = request.form['plantDate'] + dates['last'] = request.form['lastDate'] + dates['next'] = datetime.datetime.strptime(dates['last'],'%Y-%m-%d') + datetime.timedelta(days=dates['freq']) + session.query(Dates).filter_by(dateTypeID=1).update({Dates.dateValue: dates['plant']}) + session.query(Dates).filter_by(dateTypeID=2).update({Dates.dateValue: dates['last']}) + session.query(Dates).filter_by(dateTypeID=3).update({Dates.dateValue: dates['next']}) + session.commit() + return render_template("index.html", plant=dates, alerts=alerts) + # If regular page load, grab all the dates from the db and render the template else: - dates = {'plant': '', 'last': '', 'next':'', 'freq': ''} # result = session.query(Dates).filter_by(dateTypeID=1).first() dates['plant'] = session.query(Dates).filter_by(dateTypeID=1).first().dateValue dates['last'] = session.query(Dates).filter_by(dateTypeID=2).first().dateValue dates['next'] = session.query(Dates).filter_by(dateTypeID=3).first().dateValue - dates['freq'] = session.query(Dates).filter_by(dateTypeID=4).first().dateValue - print(datetime.datetime.strptime(dates['plant'], '%Y-%m-%d')) + # dates['freq'] = session.query(Dates).filter_by(dateTypeID=4).first().dateValue + # print(datetime.datetime.strptime(dates['plant'], '%Y-%m-%d')) return render_template("index.html", plant=dates, alerts=alerts) +@app.route('/install.html') +def install(): + session = Session() + + populateDate = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d') + # Populate Dates Table + session.add(Dates(dateTypeID=1, dateValue=populateDate)) + session.add(Dates(dateTypeID=2, dateValue=populateDate)) + session.add(Dates(dateTypeID=3, dateValue=populateDate)) + session.add(Dates(dateTypeID=4, dateValue='14')) + + #Populate DatesMetadata + session.add(DatesMetadata(dateTypeID=1, DateTypeName='Plant Date')) + session.add(DatesMetadata(dateTypeID=1, DateTypeName='Last Feeding Date')) + session.add(DatesMetadata(dateTypeID=1, DateTypeName='Next Feeding Date')) + session.add(DatesMetadata(dateTypeID=1, DateTypeName='Feeding Frequency')) + + # Populate Settings + session.add(Settings(settingType=1, settingValue='False')) + session.add(Settings(settingType=2, settingValue='False')) + + # Populate SettingsMetadata + session.add(SettingsMetadata(settingTypeID=1, settingTypeName='Text')) + session.add(SettingsMetadata(settingTypeID=2, settingTypeName='Email')) + + session.commit() + return redirect('index.html') + + if __name__ == '__main__': serve(app, host='0.0.0.0', port=8000)