add period templates, add period, edit period, delete period
This commit is contained in:
44
app.py
44
app.py
@@ -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()
|
||||||
|
@@ -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
29
templates/editPeriod.html
Normal 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
20
templates/newPeriod.html
Normal 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
23
templates/periods.html
Normal 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 %}
|
Reference in New Issue
Block a user