diff --git a/app.py b/app.py index 46fca25..6685808 100644 --- a/app.py +++ b/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') diff --git a/static/scripts.js b/static/scripts.js index 2c74e67..a8fa4e3 100644 --- a/static/scripts.js +++ b/static/scripts.js @@ -1,12 +1,3 @@ -function updateAlerts() { - var text = document.querySelector('#alert_text'); - var email = document.querySelector('#alert_email'); - alert(text.checked); - alert(email.checked); - - fetch('/updateAlerts') -} - function updateFeed() { - return null; + fetch('/updateFeed') } \ No newline at end of file diff --git a/templates/base.html b/templates/base.html index ade8a07..7f09348 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,8 +1,10 @@ +