From 6af3828c700db965e1f85fe5a22afd2c4b8c6d3c Mon Sep 17 00:00:00 2001 From: William Peebles Date: Thu, 17 Nov 2022 22:57:03 -0500 Subject: [PATCH] split db and forms classes into their own files --- app.py | 58 ++++---------------------------------------------------- db.py | 33 ++++++++++++++++++++++++++++++++ forms.py | 22 +++++++++++++++++++++ 3 files changed, 59 insertions(+), 54 deletions(-) create mode 100644 db.py create mode 100644 forms.py diff --git a/app.py b/app.py index 87951a0..0e80b5c 100644 --- a/app.py +++ b/app.py @@ -2,12 +2,8 @@ import os import time from datetime import datetime, date from flask import Flask, render_template, redirect -from flask_sqlalchemy import SQLAlchemy -from flask_wtf import FlaskForm -from wtforms import (StringField, DateField, TimeField, TextAreaField, IntegerField, BooleanField, - RadioField) -from wtforms.validators import InputRequired, Length -from wtforms_sqlalchemy.orm import QuerySelectField +from db import (db, Period, Task, Event) +from forms import (TaskForm, EventForm, PeriodForm) from create_events import createEvents basedir = os.path.abspath(os.path.dirname(__file__)) @@ -17,9 +13,9 @@ app.config['SECRET_KEY'] = 'HwG55rpe83jcaglifXm8NuF4WEeXyJV4' app.config['SQLALCHEMY_DATABASE_URI'] =\ 'sqlite:///' + os.path.join(basedir, 'database.db') app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False +db.init_app(app) - -db = SQLAlchemy(app) +# db = SQLAlchemy(app) from auth import auth as auth_blueprint app.register_blueprint(auth_blueprint) @@ -27,52 +23,6 @@ app.register_blueprint(auth_blueprint) currDay = datetime.now() currDay = currDay.strftime('%m-%d-%Y') -class Period(db.Model): - period = db.Column(db.Integer, primary_key=True) - periodTime = db.Column(db.Time) - weekendSchedule = db.Column(db.Boolean) - - def __repr__(self): - return f'' - -class Task(db.Model): - id = db.Column(db.Integer, primary_key=True) - title = db.Column(db.String(100)) - description = db.Column(db.Text) - is_completed = db.Column(db.Boolean) - created_timestamp = db.Column(db.Integer) - due_timestamp = db.Column(db.Integer) - - def __repr__(self): - return f'' - -class Event(db.Model): - id = db.Column(db.Integer, primary_key=True) - scheduled_date = db.Column(db.String(100)) - period = db.relationship(Period, backref='events') - tasks = db.relationship(Task, backref='events') - period_num = db.Column(db.Integer, db.ForeignKey('period.period')) - task_id = db.Column(db.Integer, db.ForeignKey('task.id')) - - def __repr__(self): - return f'' - -def get_tasks(): - return Task.query -class TaskForm(FlaskForm): - title = StringField('Title', validators=[InputRequired(), - Length(min=5, max=100)]) - description = TextAreaField('Description', validators=[InputRequired(), - Length(max=200)]) -class EventForm(FlaskForm): - # eventDate = DateField('Date', validators=[InputRequired()], format='m-%d-%Y') - # period_num = IntegerField(validators=[InputRequired()]) - selectedTask = QuerySelectField(label='New Task', query_factory=get_tasks, get_label='title', allow_blank=True, blank_text='(no task)') - -class PeriodForm(FlaskForm): - weekendSchedule = BooleanField(label='Include on Weekends?', false_values=None) - periodTime = TimeField('Time', format="%H:%M") - @app.route('/') def index(): return redirect('/events') diff --git a/db.py b/db.py new file mode 100644 index 0000000..17d2f09 --- /dev/null +++ b/db.py @@ -0,0 +1,33 @@ +from flask_sqlalchemy import SQLAlchemy + +db = SQLAlchemy() + +class Period(db.Model): + period = db.Column(db.Integer, primary_key=True) + periodTime = db.Column(db.Time) + weekendSchedule = db.Column(db.Boolean) + + def __repr__(self): + return f'' + +class Task(db.Model): + id = db.Column(db.Integer, primary_key=True) + title = db.Column(db.String(100)) + description = db.Column(db.Text) + is_completed = db.Column(db.Boolean) + created_timestamp = db.Column(db.Integer) + due_timestamp = db.Column(db.Integer) + + def __repr__(self): + return f'' + +class Event(db.Model): + id = db.Column(db.Integer, primary_key=True) + scheduled_date = db.Column(db.String(100)) + period = db.relationship(Period, backref='events') + tasks = db.relationship(Task, backref='events') + period_num = db.Column(db.Integer, db.ForeignKey('period.period')) + task_id = db.Column(db.Integer, db.ForeignKey('task.id')) + + def __repr__(self): + return f'' \ No newline at end of file diff --git a/forms.py b/forms.py new file mode 100644 index 0000000..1a264a6 --- /dev/null +++ b/forms.py @@ -0,0 +1,22 @@ +from db import Task +from flask_wtf import FlaskForm +from wtforms import (StringField, DateField, TimeField, TextAreaField, IntegerField, BooleanField, + RadioField) +from wtforms.validators import InputRequired, Length +from wtforms_sqlalchemy.orm import QuerySelectField + +def get_tasks(): + return Task.query +class TaskForm(FlaskForm): + title = StringField('Title', validators=[InputRequired(), + Length(min=5, max=100)]) + description = TextAreaField('Description', validators=[InputRequired(), + Length(max=200)]) +class EventForm(FlaskForm): + # eventDate = DateField('Date', validators=[InputRequired()], format='m-%d-%Y') + # period_num = IntegerField(validators=[InputRequired()]) + selectedTask = QuerySelectField(label='New Task', query_factory=get_tasks, get_label='title', allow_blank=True, blank_text='(no task)') + +class PeriodForm(FlaskForm): + weekendSchedule = BooleanField(label='Include on Weekends?', false_values=None) + periodTime = TimeField('Time', format="%H:%M") \ No newline at end of file