This repository has been archived by the owner on Apr 13, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
views.py
120 lines (96 loc) · 3.42 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
from forms import AddTaskForm, RegisterForm, LoginForm
from functools import wraps
from flask import Flask, request, flash, redirect, render_template, session, url_for, g
from flask.ext.sqlalchemy import SQLAlchemy
import models
# config
app = Flask(__name__)
app.config.from_object('_config')
db = SQLAlchemy(app)
# helper functions
def login_required(route):
@wraps(route)
def wrap(*args, **kwargs):
if 'logged_in' in session:
return route(*args, **kwargs)
else:
flash('Login Required')
return redirect(url_for('login'))
return wrap
# route handlers
@app.route('/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
if request.form['username'] != app.config['USERNAME'] or \
request.form['password'] != app.config['PASSWORD']:
error = 'Invalid Credentials'
return render_template('login.html', error=error)
else:
session['logged_in'] = True
flash('Welcome!')
return redirect(url_for('tasks'))
return render_template('login.html')
@app.route('/logout')
def logout():
session.pop('logged_in', None)
flash('Goodbye')
return redirect(url_for('login'))
@app.route('/tasks/')
@login_required
def tasks():
open_tasks = db.session.query(models.Task).filter_by(status='1').order_by(models.Task.due_date.asc())
closed_tasks = db.session.query(models.Task).filter_by(status='0').order_by(models.Task.due_date.asc())
return render_template(
'tasks.html',
form=AddTaskForm(request.form),
open_tasks=open_tasks,
closed_tasks=closed_tasks
)
@app.route('/add/', methods=['POST'])
@login_required
def new_task():
form = AddTaskForm(request.form)
if request.method == 'POST':
if form.validate_on_submit(): # something to look into
new_task = models.Task(
form.name.data,
form.due_date.data,
form.priority.data,
'1'
)
db.session.add(new_task)
db.session.commit()
flash('New Entry Added Successfully')
return redirect(url_for('tasks'))
@app.route('/complete/<int:task_id>')
@login_required
def complete(task_id):
new_id = task_id
db.session.query(models.Task).filter_by(task_id=new_id).update({"status": "0"})
db.session.commit()
flash(str(task_id) + " has been added successfully")
return redirect(url_for('tasks'))
@app.route('/delete/<int:task_id>')
@login_required
def delete_entry(task_id):
new_id = task_id
db.session.query(models.Task).filter_by(task_id=new_id).delete()
db.session.commit()
flash(str(task_id) + " has been deleted successfully")
return redirect(url_for('tasks'))
# TODO:: Need to investigate why this is not receiving a POST when submitting from register.html
@app.route('/register/', methods=['GET', 'POST'])
def register():
error = None
form = RegisterForm(request.form)
if request.method == 'POST':
print("Testing")
if form.validate_on_submit():
new_user = User(form.name.data, form.email.data, form.password.data)
db.session.add(new_user)
db.session.commit()
flash('Thanks for registering. Please login.')
return redirect(url_for('login'))
return render_template('register.html', form=form, error=error)
if __name__ == '__main__':
app.run()