Switched from sqlite to mysql database. Moved feeding frequency to the settings table. Got the alert checkboxes working correctly. Started to add update feed method and button to site.
This commit is contained in:
75
app.py
75
app.py
@@ -1,8 +1,9 @@
|
||||
from flask import Flask, render_template, request, flash, redirect
|
||||
import datetime
|
||||
from sqlalchemy import create_engine, Column, Integer, String
|
||||
from sqlalchemy import create_engine, Column, Integer, String, Date
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
import pymysql
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config['SECRET_KEY'] = 'fa6166b0218186fb852429060105aca18e0f979240be8ebf'
|
||||
@@ -14,31 +15,31 @@ class Dates(Base):
|
||||
__tablename__ = 'Dates'
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
dateTypeID = Column(Integer)
|
||||
dateValue = Column(String)
|
||||
dateValue = Column(Date)
|
||||
|
||||
|
||||
class DatesMetadata(Base):
|
||||
__tablename__ = 'DatesMetadata'
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
dateTypeID = Column(Integer)
|
||||
DateTypeName = Column(String)
|
||||
DateTypeName = Column(String(50))
|
||||
|
||||
|
||||
class Settings(Base):
|
||||
__tablename__ = 'Settings'
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
settingType = Column(Integer)
|
||||
settingValue = Column(String)
|
||||
settingValue = Column(String(50))
|
||||
|
||||
|
||||
class SettingsMetadata(Base):
|
||||
__tablename__ = 'SettingsMetadata'
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
settingTypeID = Column(Integer)
|
||||
settingTypeName = Column(String)
|
||||
settingTypeName = Column(String(50))
|
||||
|
||||
|
||||
engine = create_engine('sqlite:///static/db.db')
|
||||
engine = create_engine('mysql+pymysql://hydro:pRnCWH/M)dujdifi@db.dandembinski.com:3306/Hydro')
|
||||
Dates.__table__.create(bind=engine, checkfirst=True)
|
||||
Settings.__table__.create(bind=engine, checkfirst=True)
|
||||
DatesMetadata.__table__.create(bind=engine, checkfirst=True)
|
||||
@@ -63,58 +64,92 @@ def index():
|
||||
# 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)
|
||||
dates['freq'] = int(session.query(Settings).filter_by(settingType=3).first().settingValue)
|
||||
|
||||
alerts = {'text': False, 'email': True}
|
||||
alerts = {'text': False, 'email': False}
|
||||
|
||||
# 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':
|
||||
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'])
|
||||
|
||||
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']})
|
||||
|
||||
# grab text message alert box. Set 'True' if checked or null if unchecked
|
||||
if request.form.get('AlertText'):
|
||||
alerts['text'] = 'True'
|
||||
else:
|
||||
alerts['text'] = None
|
||||
# grab email message alert box. Set 'True' if checked or null if unchecked
|
||||
if request.form.get('AlertEmail'):
|
||||
alerts['email'] = 'True'
|
||||
else:
|
||||
alerts['email'] = None
|
||||
|
||||
session.query(Settings).filter_by(settingType=1).update({Settings.settingValue: alerts['text']})
|
||||
session.query(Settings).filter_by(settingType=2).update({Settings.settingValue: alerts['email']})
|
||||
|
||||
session.commit()
|
||||
return render_template("index.html", plant=dates, alerts=alerts)
|
||||
# return render_template("index.html", plant=dates, alerts=alerts)
|
||||
return redirect('index.html')
|
||||
# If regular page load, grab all the dates from the db and render the template
|
||||
else:
|
||||
# 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'))
|
||||
|
||||
alerts['text'] = session.query(Settings).filter_by(settingType=1).first().settingValue
|
||||
alerts['email'] = session.query(Settings).filter_by(settingType=2).first().settingValue
|
||||
|
||||
return render_template("index.html", plant=dates, alerts=alerts)
|
||||
|
||||
|
||||
@app.route('/updateFeed')
|
||||
def updateFeed():
|
||||
session = Session()
|
||||
|
||||
dates = {'plant': '', 'last': '', 'next': '', 'freq': ''}
|
||||
dates['freq'] = int(session.query(Settings).filter_by(settingType=3).first().settingValue)
|
||||
dates['last'] = datetime.date.today()
|
||||
dates['next'] = dates['last'] + datetime.timedelta(days=dates['freq'])
|
||||
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()
|
||||
session.close()
|
||||
return redirect('/index.html')
|
||||
|
||||
|
||||
@app.route('/install.html')
|
||||
def install():
|
||||
session = Session()
|
||||
|
||||
populateDate = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d')
|
||||
populateDate = datetime.date.today()
|
||||
|
||||
# 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
|
||||
# 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'))
|
||||
session.add(DatesMetadata(dateTypeID=2, DateTypeName='Last Feeding Date'))
|
||||
session.add(DatesMetadata(dateTypeID=3, DateTypeName='Next Feeding Date'))
|
||||
|
||||
# Populate Settings
|
||||
session.add(Settings(settingType=1, settingValue='False'))
|
||||
session.add(Settings(settingType=2, settingValue='False'))
|
||||
session.add(Settings(settingType=3, settingValue='14'))
|
||||
|
||||
# Populate SettingsMetadata
|
||||
session.add(SettingsMetadata(settingTypeID=1, settingTypeName='Text'))
|
||||
session.add(SettingsMetadata(settingTypeID=2, settingTypeName='Email'))
|
||||
session.add(SettingsMetadata(settingTypeID=3, settingTypeName='Feeding Frequency'))
|
||||
|
||||
session.commit()
|
||||
|
||||
return redirect('index.html')
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user