convert forms to wtfforms

This commit is contained in:
2022-11-14 20:21:14 -05:00
parent 1eb56c6c99
commit ee3bc9c2e4
4 changed files with 33 additions and 22 deletions

20
app.py
View File

@@ -1,5 +1,6 @@
import os import os
import time import time
from forms import TaskForm
from datetime import datetime, date from datetime import datetime, date
from flask import Flask, render_template, request, redirect, url_for from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
@@ -65,14 +66,15 @@ def tasks():
@app.route('/task/new', methods=('GET', 'POST')) @app.route('/task/new', methods=('GET', 'POST'))
def newTask(): def newTask():
if request.method == 'POST': form = TaskForm()
task = Task(title=request.form['title'], if form.validate_on_submit():
description=request.form['description'], task = Task(title=form.title.data,
description=form.description.data,
created_timestamp=int(time.time())) created_timestamp=int(time.time()))
db.session.add(task) db.session.add(task)
db.session.commit() db.session.commit()
return redirect(f'/task/{task.id}') return redirect(f'/task/{task.id}')
return render_template('newtask.html') return render_template('newtask.html', form=form)
@app.route('/task/<int:task_id>/') @app.route('/task/<int:task_id>/')
def task(task_id): def task(task_id):
@@ -81,12 +83,14 @@ def task(task_id):
@app.route('/task/<int:task_id>/edit', methods=('GET', 'POST')) @app.route('/task/<int:task_id>/edit', methods=('GET', 'POST'))
def editTask(task_id): def editTask(task_id):
form = TaskForm()
task = Task.query.get_or_404(task_id) task = Task.query.get_or_404(task_id)
if request.method == 'POST': if form.validate_on_submit():
task.title = request.form['title'] task.title=form.title.data
task.description = request.form['description'] task.description=form.description.data
db.session.commit() db.session.commit()
return render_template('edittask.html', str=str, task=task, datetime=datetime, date=date) return redirect(f'/task/{task_id}')
return render_template('edittask.html', task=task, form=form)
@app.post('/task/<int:task_id>/delete') @app.post('/task/<int:task_id>/delete')
def delete_task(task_id): def delete_task(task_id):
task = Task.query.get_or_404(task_id) task = Task.query.get_or_404(task_id)

11
forms.py Normal file
View File

@@ -0,0 +1,11 @@
from flask_wtf import FlaskForm
from wtforms import (StringField, TextAreaField, IntegerField, BooleanField,
RadioField)
from wtforms.validators import InputRequired, Length
from datetime import datetime, date
class TaskForm(FlaskForm):
title = StringField('Title', validators=[InputRequired(),
Length(min=5, max=100)])
description = TextAreaField('Description', validators=[InputRequired(),
Length(max=200)])

View File

@@ -3,18 +3,16 @@
{% block content %} {% block content %}
<span><h1>{% block title %} Edit Task {% endblock %}</h1></span> <span><h1>{% block title %} Edit Task {% endblock %}</h1></span>
<form method="post"> <form method="post">
{{ form.csrf_token }}
<p> <p>
<label for="title">Title:</label><br> {{ form.title.label }}
<input type="text" id="title" name="title"><br> {{ form.title(size=20) }}
</p> </p>
<p> <p>
<label for="description">Description</label><br> {{ form.description.label }}
<textarea id="description"
name="description"
cols="25"
rows="5"> </textarea>
</p> </p>
{{ form.description(rows=5, cols=25) }}
<p> <p>
<button class="btn btn-primary" type="submit">Edit Task</button> <button class="btn btn-primary" type="submit">Edit Task</button>
</p> </p>

View File

@@ -3,18 +3,16 @@
{% block content %} {% block content %}
<span><h1>{% block title %} Create New Task {% endblock %}</h1></span> <span><h1>{% block title %} Create New Task {% endblock %}</h1></span>
<form method="post"> <form method="post">
{{ form.csrf_token }}
<p> <p>
<label for="title">Title:</label><br> {{ form.title.label }}
<input type="text" id="title" name="title"><br> {{ form.title(size=20) }}
</p> </p>
<p> <p>
<label for="description">Description</label><br> {{ form.description.label }}
<textarea id="description"
name="description"
cols="25"
rows="5"> </textarea>
</p> </p>
{{ form.description(rows=5, cols=25) }}
<p> <p>
<button class="btn btn-primary" type="submit">Add Task</button> <button class="btn btn-primary" type="submit">Add Task</button>
</p> </p>