import os from flask import Flask, render_template, redirect 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) 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/', 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/') 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//', 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//') 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//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//delete') def delete_task(task_id): task = Task.query.get_or_404(task_id) db.session.delete(task) db.session.commit() return redirect('/tasks')