diff --git a/app.py b/app.py index a9c98b9..9da0d8a 100644 --- a/app.py +++ b/app.py @@ -4,7 +4,7 @@ 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, TextAreaField, IntegerField, BooleanField, +from wtforms import (StringField, DateField, TimeField, TextAreaField, IntegerField, BooleanField, RadioField) from wtforms.validators import InputRequired, Length from wtforms_sqlalchemy.orm import QuerySelectField @@ -65,6 +65,10 @@ class EventForm(FlaskForm): # 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') @@ -76,6 +80,43 @@ def events(): return render_template('events.html', events=events, periods=periods, datetime=datetime, date=date) +@app.route('/periods') +def periods(): + periods = Period.query.all() + return render_template('periods.html', periods=periods, datetime=datetime) + +@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 = str(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') + +@app.route('/period/new', methods=('GET', 'POST')) +def newPeriod(): + form = PeriodForm() + if form.validate_on_submit(): + period = Period(periodTime=str(form.periodTime.data), + weekendSchedule=form.weekendSchedule.data + ) + print(period.periodTime) + print(period.weekendSchedule) + db.session.add(period) + db.session.commit() + return redirect(f'/period/edit/{period.period}') + return render_template('newPeriod.html', form=form) + @app.route('/event/edit//', methods=('GET', 'POST')) def editEvent(event_id): event = Event.query.get_or_404(event_id) @@ -88,6 +129,7 @@ def editEvent(event_id): db.session.commit() return redirect('/events') return render_template('editEvent.html', event=event, form=form, datetime=datetime) + @app.route('/tasks') def tasks(): tasks = Task.query.all() diff --git a/templates/base.html b/templates/base.html index 9a8cfb8..b6fb1cb 100644 --- a/templates/base.html +++ b/templates/base.html @@ -24,6 +24,9 @@ + diff --git a/templates/editPeriod.html b/templates/editPeriod.html new file mode 100644 index 0000000..044839f --- /dev/null +++ b/templates/editPeriod.html @@ -0,0 +1,29 @@ +{% extends 'base.html' %} + +{% block content %} +

{% block title %} Edit Period {% endblock %}

+

+ Period {{ period.period }} +

+ +
+ {{ form.csrf_token }} +

+ {{ form.periodTime.label }} + {{ form.periodTime(value=period.periodTime) }} +

+

+ {{ form.weekendSchedule.label }} + {{ form.weekendSchedule }} +

+

+ +

+
+
+ +
+{% endblock %} \ No newline at end of file diff --git a/templates/newPeriod.html b/templates/newPeriod.html new file mode 100644 index 0000000..c212b7e --- /dev/null +++ b/templates/newPeriod.html @@ -0,0 +1,20 @@ +{% extends 'base.html' %} + +{% block content %} +

{% block title %} New Period {% endblock %}

+ +
+ {{ form.csrf_token }} +

+ {{ form.periodTime.label }} + {{ form.periodTime }} +

+

+ {{ form.weekendSchedule.label }} + {{ form.weekendSchedule }} +

+

+ +

+
+{% endblock %} \ No newline at end of file diff --git a/templates/periods.html b/templates/periods.html new file mode 100644 index 0000000..8c1044a --- /dev/null +++ b/templates/periods.html @@ -0,0 +1,23 @@ +{% extends 'base.html' %} + +{% block content %} +

{% block title %} Periods {% endblock %}

New Period

+
+ {% for period in periods %} + {% set convertedTime = datetime.strptime(period.periodTime, "%H:%M:%S") %} +
+
+ +
+
Edit +
+
+

Period {{ period.period }}
Time: {{ convertedTime.strftime("%I:%M %p") }}

+
+
+ {% endfor %} +
+{% endblock %} \ No newline at end of file