add period templates, add period, edit period, delete period

This commit is contained in:
2022-11-17 11:34:41 -05:00
parent 3082ab7307
commit ce1e8ed68c
5 changed files with 118 additions and 1 deletions

44
app.py
View File

@@ -4,7 +4,7 @@ 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 flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm from flask_wtf import FlaskForm
from wtforms import (StringField, DateField, TextAreaField, IntegerField, BooleanField, from wtforms import (StringField, DateField, TimeField, TextAreaField, IntegerField, BooleanField,
RadioField) RadioField)
from wtforms.validators import InputRequired, Length from wtforms.validators import InputRequired, Length
from wtforms_sqlalchemy.orm import QuerySelectField from wtforms_sqlalchemy.orm import QuerySelectField
@@ -65,6 +65,10 @@ class EventForm(FlaskForm):
# period_num = IntegerField(validators=[InputRequired()]) # period_num = IntegerField(validators=[InputRequired()])
selectedTask = QuerySelectField(label='New Task', query_factory=get_tasks, get_label='title', allow_blank=True, blank_text='(no task)') 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')
@@ -76,6 +80,43 @@ def events():
return render_template('events.html', events=events, periods=periods, datetime=datetime, date=date) 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/<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 = 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/<int:periodNum>')
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/<int:event_id>/', methods=('GET', 'POST')) @app.route('/event/edit/<int:event_id>/', methods=('GET', 'POST'))
def editEvent(event_id): def editEvent(event_id):
event = Event.query.get_or_404(event_id) event = Event.query.get_or_404(event_id)
@@ -88,6 +129,7 @@ def editEvent(event_id):
db.session.commit() db.session.commit()
return redirect('/events') return redirect('/events')
return render_template('editEvent.html', event=event, form=form, datetime=datetime) return render_template('editEvent.html', event=event, form=form, datetime=datetime)
@app.route('/tasks') @app.route('/tasks')
def tasks(): def tasks():
tasks = Task.query.all() tasks = Task.query.all()

View File

@@ -24,6 +24,9 @@
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="/tasks">Tasks</a> <a class="nav-link" href="/tasks">Tasks</a>
</li> </li>
<li class="nav-item">
<a class="nav-link" href="/periods">Periods</a>
</li>
</ul> </ul>
</div> </div>
</nav> </nav>

29
templates/editPeriod.html Normal file
View File

@@ -0,0 +1,29 @@
{% extends 'base.html' %}
{% block content %}
<span><h1>{% block title %} Edit Period {% endblock %}</h1></span>
<p>
<b>Period {{ period.period }}</b>
</p>
<form method="post">
{{ form.csrf_token }}
<p>
{{ form.periodTime.label }}
{{ form.periodTime(value=period.periodTime) }}
</p>
<p>
{{ form.weekendSchedule.label }}
{{ form.weekendSchedule }}
</p>
<p>
<button class="btn btn-primary" type="submit">Submit</button>
</p>
</form>
<form method="post"
action="{{url_for('delete_period',
periodNum=period.period) }}">
<input class="btn btn-danger" type="submit" value="Delete Period"
onclick="return confirm('Are you sure you want to delete this period?')">
</form>
{% endblock %}

20
templates/newPeriod.html Normal file
View File

@@ -0,0 +1,20 @@
{% extends 'base.html' %}
{% block content %}
<span><h1>{% block title %} New Period {% endblock %}</h1></span>
<form method="post">
{{ form.csrf_token }}
<p>
{{ form.periodTime.label }}
{{ form.periodTime }}
</p>
<p>
{{ form.weekendSchedule.label }}
{{ form.weekendSchedule }}
</p>
<p>
<button class="btn btn-primary" type="submit">Submit</button>
</p>
</form>
{% endblock %}

23
templates/periods.html Normal file
View File

@@ -0,0 +1,23 @@
{% extends 'base.html' %}
{% block content %}
<span><h1>{% block title %} Periods {% endblock %}</h1></span> <a class="btn btn-primary" href="/period/new" role="button">New Period </a> <br> <br>
<div>
{% for period in periods %}
{% set convertedTime = datetime.strptime(period.periodTime, "%H:%M:%S") %}
<div class="float-right">
<form method="post"
action="{{url_for('delete_period',
periodNum=period.period) }}">
<input class="btn btn-danger" type="submit" value="Delete"
onclick="return confirm('Are you sure you want to delete this period?')">
</form></div>
<div class="float-right"><a type="button" class="btn btn-primary mr-1" href="/period/edit/{{ period.period }}">Edit</a>
</div>
<div>
<p><b>Period {{ period.period }}</b> <br> Time: {{ convertedTime.strftime("%I:%M %p") }} </p>
</div>
<hr>
{% endfor %}
</div>
{% endblock %}