split db and forms classes into their own files

This commit is contained in:
2022-11-17 22:57:03 -05:00
parent e968e835f7
commit 6af3828c70
3 changed files with 59 additions and 54 deletions

58
app.py
View File

@@ -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'<Period "{self.period}">'
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'<Task "{self.title}">'
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'<Event "{self.id}">'
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')

33
db.py Normal file
View File

@@ -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'<Period "{self.period}">'
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'<Task "{self.title}">'
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'<Event "{self.id}">'

22
forms.py Normal file
View File

@@ -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")