Can save dates to database. Checks if tables are populated and populates them with default values if they're empty.
This commit is contained in:
72
app.py
72
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)
|
||||
|
||||
Reference in New Issue
Block a user