130 lines
4.3 KiB
Python
130 lines
4.3 KiB
Python
import os
|
|
from flask import Flask, render_template, redirect
|
|
from flask_migrate import Migrate
|
|
from misc import datetime, date, time, currDay
|
|
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__))
|
|
|
|
app = Flask(__name__)
|
|
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)
|
|
|
|
# init migration
|
|
migrate = Migrate()
|
|
migrate.init_app(app, db)
|
|
|
|
|
|
from auth import auth as auth_blueprint
|
|
app.register_blueprint(auth_blueprint)
|
|
|
|
@app.route('/')
|
|
def index():
|
|
createEvents(db, currDay, Period, Event)
|
|
return redirect('/events')
|
|
|
|
# Periods routes
|
|
@app.route('/periods')
|
|
def periods():
|
|
periods = Period.query.all()
|
|
return render_template('periods.html', periods=periods, datetime=datetime)
|
|
|
|
@app.route('/period/new', methods=('GET', 'POST'))
|
|
def newPeriod():
|
|
form = PeriodForm()
|
|
if form.validate_on_submit():
|
|
period = Period(periodTime=form.periodTime.data,
|
|
weekendSchedule=form.weekendSchedule.data
|
|
)
|
|
db.session.add(period)
|
|
db.session.commit()
|
|
createEvents(db, currDay, Period, Event)
|
|
return redirect(f'/period/edit/{period.period}')
|
|
return render_template('newPeriod.html', form=form)
|
|
|
|
|
|
@app.route('/period/edit/<int:periodNum>', methods=('GET', 'POST'))
|
|
def editPeriod(periodNum):
|
|
period = Period.query.get_or_404(periodNum)
|
|
form = PeriodForm(obj=period)
|
|
if form.validate_on_submit():
|
|
period.periodTime = form.periodTime.data
|
|
period.weekendSchedule = form.weekendSchedule.data
|
|
db.session.commit()
|
|
return redirect(f'/period/edit/{periodNum}')
|
|
return render_template('editPeriod.html', period=period, form=form, datetime=datetime)
|
|
|
|
@app.post('/period/delete/<int:periodNum>')
|
|
def delete_period(periodNum):
|
|
period = Period.query.get_or_404(periodNum)
|
|
db.session.delete(period)
|
|
db.session.commit()
|
|
return redirect('/periods')
|
|
|
|
|
|
# Events routes
|
|
@app.route('/events')
|
|
def events():
|
|
events = Event.query.all()
|
|
periods = Period.query.all()
|
|
createEvents(db, currDay, Period, Event)
|
|
|
|
return render_template('events.html', events=events, periods=periods, datetime=datetime, date=date)
|
|
|
|
@app.route('/event/edit/<int:event_id>/', methods=('GET', 'POST'))
|
|
def editEvent(event_id):
|
|
event = Event.query.get_or_404(event_id)
|
|
form = EventForm(obj=event)
|
|
if form.validate_on_submit():
|
|
if hasattr(form.selectedTask.data, 'id'):
|
|
event.task_id = form.selectedTask.data.id
|
|
else:
|
|
event.task_id = None
|
|
db.session.commit()
|
|
return redirect('/events')
|
|
return render_template('editEvent.html', event=event, form=form, datetime=datetime)
|
|
|
|
# Tasks routes
|
|
@app.route('/tasks')
|
|
def tasks():
|
|
tasks = Task.query.all()
|
|
return render_template('tasks.html', str=str, tasks=tasks, datetime=datetime, date=date)
|
|
|
|
@app.route('/task/<int:task_id>/')
|
|
def task(task_id):
|
|
task = Task.query.get_or_404(task_id)
|
|
return render_template('task.html', str=str, task=task, datetime=datetime, date=date)
|
|
|
|
@app.route('/task/new', methods=('GET', 'POST'))
|
|
def newTask():
|
|
form = TaskForm()
|
|
if form.validate_on_submit():
|
|
task = Task(title=form.title.data,
|
|
description=form.description.data,
|
|
created_timestamp=int(time.time()))
|
|
db.session.add(task)
|
|
db.session.commit()
|
|
return redirect(f'/task/{task.id}')
|
|
return render_template('newtask.html', form=form)
|
|
|
|
@app.route('/task/<int:task_id>/edit', methods=('GET', 'POST'))
|
|
def editTask(task_id):
|
|
task = Task.query.get_or_404(task_id)
|
|
form = TaskForm(obj=task)
|
|
if form.validate_on_submit():
|
|
task.title=form.title.data
|
|
task.description=form.description.data
|
|
db.session.commit()
|
|
return redirect(f'/task/{task_id}')
|
|
return render_template('edittask.html', task=task, form=form)
|
|
@app.post('/task/<int:task_id>/delete')
|
|
def delete_task(task_id):
|
|
task = Task.query.get_or_404(task_id)
|
|
db.session.delete(task)
|
|
db.session.commit()
|
|
return redirect('/tasks') |