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
|
import time
|
||||||
from datetime import datetime, date
|
from datetime import datetime, date
|
||||||
from flask import Flask, render_template, redirect
|
from flask import Flask, render_template, redirect
|
||||||
from flask_sqlalchemy import SQLAlchemy
|
from db import (db, Period, Task, Event)
|
||||||
from flask_wtf import FlaskForm
|
from forms import (TaskForm, EventForm, PeriodForm)
|
||||||
from wtforms import (StringField, DateField, TimeField, TextAreaField, IntegerField, BooleanField,
|
|
||||||
RadioField)
|
|
||||||
from wtforms.validators import InputRequired, Length
|
|
||||||
from wtforms_sqlalchemy.orm import QuerySelectField
|
|
||||||
from create_events import createEvents
|
from create_events import createEvents
|
||||||
|
|
||||||
basedir = os.path.abspath(os.path.dirname(__file__))
|
basedir = os.path.abspath(os.path.dirname(__file__))
|
||||||
@@ -17,9 +13,9 @@ app.config['SECRET_KEY'] = 'HwG55rpe83jcaglifXm8NuF4WEeXyJV4'
|
|||||||
app.config['SQLALCHEMY_DATABASE_URI'] =\
|
app.config['SQLALCHEMY_DATABASE_URI'] =\
|
||||||
'sqlite:///' + os.path.join(basedir, 'database.db')
|
'sqlite:///' + os.path.join(basedir, 'database.db')
|
||||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||||
|
db.init_app(app)
|
||||||
|
|
||||||
|
# db = SQLAlchemy(app)
|
||||||
db = SQLAlchemy(app)
|
|
||||||
|
|
||||||
from auth import auth as auth_blueprint
|
from auth import auth as auth_blueprint
|
||||||
app.register_blueprint(auth_blueprint)
|
app.register_blueprint(auth_blueprint)
|
||||||
@@ -27,52 +23,6 @@ app.register_blueprint(auth_blueprint)
|
|||||||
currDay = datetime.now()
|
currDay = datetime.now()
|
||||||
currDay = currDay.strftime('%m-%d-%Y')
|
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('/')
|
@app.route('/')
|
||||||
def index():
|
def index():
|
||||||
return redirect('/events')
|
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