95 lines
3.0 KiB
Python
95 lines
3.0 KiB
Python
import os
|
|
import time
|
|
from datetime import datetime, date
|
|
from flask import Flask, render_template, request, redirect, url_for
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
|
|
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 = SQLAlchemy(app)
|
|
|
|
from auth import auth as auth_blueprint
|
|
app.register_blueprint(auth_blueprint)
|
|
|
|
class Period(db.Model):
|
|
period = db.Column(db.Integer, primary_key=True)
|
|
periodTime = db.Column(db.Integer)
|
|
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}">'
|
|
|
|
|
|
@app.route('/')
|
|
def index():
|
|
return redirect('/events')
|
|
|
|
@app.route('/events')
|
|
def events():
|
|
events = Event.query.all()
|
|
return render_template('events.html', events=events, datetime=datetime, date=date)
|
|
|
|
@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/new', methods=('GET', 'POST'))
|
|
def newTask():
|
|
if request.method == 'POST':
|
|
task = Task(title=request.form['title'],
|
|
description=request.form['description'],
|
|
created_timestamp=int(time.time()))
|
|
db.session.add(task)
|
|
db.session.commit()
|
|
return redirect(f'/task/{task.id}')
|
|
return render_template('newtask.html')
|
|
|
|
@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/<int:task_id>/edit', methods=('GET', 'POST'))
|
|
def editTask(task_id):
|
|
task = Task.query.get_or_404(task_id)
|
|
if request.method == 'POST':
|
|
task.title = request.form['title']
|
|
task.description = request.form['description']
|
|
db.session.commit()
|
|
return render_template('edittask.html', str=str, task=task, datetime=datetime, date=date)
|
|
@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') |