diff --git a/app.py b/app.py index 922d2b1..15644ff 100644 --- a/app.py +++ b/app.py @@ -1,5 +1,6 @@ import os import time +from forms import TaskForm from datetime import datetime, date from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy @@ -65,14 +66,15 @@ def tasks(): @app.route('/task/new', methods=('GET', 'POST')) def newTask(): - if request.method == 'POST': - task = Task(title=request.form['title'], - description=request.form['description'], + form = TaskForm() + if form.validate_on_submit(): + task = Task(title=form.title.data, + description=form.description.data, created_timestamp=int(time.time())) db.session.add(task) db.session.commit() return redirect(f'/task/{task.id}') - return render_template('newtask.html') + return render_template('newtask.html', form=form) @app.route('/task//') def task(task_id): @@ -81,12 +83,14 @@ def task(task_id): @app.route('/task//edit', methods=('GET', 'POST')) def editTask(task_id): + form = TaskForm() task = Task.query.get_or_404(task_id) - if request.method == 'POST': - task.title = request.form['title'] - task.description = request.form['description'] + if form.validate_on_submit(): + task.title=form.title.data + task.description=form.description.data 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//delete') def delete_task(task_id): task = Task.query.get_or_404(task_id) diff --git a/forms.py b/forms.py new file mode 100644 index 0000000..7628546 --- /dev/null +++ b/forms.py @@ -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)]) \ No newline at end of file diff --git a/templates/edittask.html b/templates/edittask.html index 967c1a5..4393860 100644 --- a/templates/edittask.html +++ b/templates/edittask.html @@ -3,18 +3,16 @@ {% block content %}

{% block title %} Edit Task {% endblock %}

+ {{ form.csrf_token }}

-
-
+ {{ form.title.label }} + {{ form.title(size=20) }}

-
- + {{ form.description.label }}

+ {{ form.description(rows=5, cols=25) }}

diff --git a/templates/newtask.html b/templates/newtask.html index df52158..538ab6a 100644 --- a/templates/newtask.html +++ b/templates/newtask.html @@ -3,18 +3,16 @@ {% block content %}

{% block title %} Create New Task {% endblock %}

+ {{ form.csrf_token }}

-
-
+ {{ form.title.label }} + {{ form.title(size=20) }}

-
- + {{ form.description.label }}

+ {{ form.description(rows=5, cols=25) }}