split db and forms classes into their own files
This commit is contained in:
58
app.py
58
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'<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
33
db.py
Normal 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
22
forms.py
Normal 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")
|
Reference in New Issue
Block a user