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_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/<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'))
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()

View File

@@ -24,6 +24,9 @@
<li class="nav-item">
<a class="nav-link" href="/tasks">Tasks</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/periods">Periods</a>
</li>
</ul>
</div>
</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 %}