· 6 years ago · Jul 07, 2019, 09:06 PM
1from flask import Flask
2from flask import render_template
3from flask import request, session
4from flask import redirect, escape
5import vsearch
6
7from DBcm import UseDatabase
8from checker import check_logged_in
9
10
11app = Flask(__name__)
12app.secret_key = "Secret_key"
13app.config['dbconfig'] = { 'host': '127.0.0.1',
14 'user': 'vsearch',
15 'password': 'vsearchpasswd',
16 'database': 'vsearchlogDB' }
17
18
19@app.route('/login')
20def do_login() -> str:
21 session['logged_in'] = True
22 return 'You are now logged in.'
23
24
25@app.route('/logout')
26def do_logout() -> str:
27 session.pop('logged_in')
28 return 'You are now logged out.'
29
30
31def log_request(req: 'flask_request', res: str) -> None:
32 with UseDatabase(app.config['dbconfig']) as cursor:
33 _SQL = """insert into log
34 (phrase, letters, ip, browser_string, results)
35 values
36 (%s, %s, %s, %s, %s)"""
37 cursor.execute(_SQL, (req.form['phrase'],
38 req.form['letters'],
39 req.remote_addr,
40 req.user_agent.browser,
41 res))
42
43
44@app.route('/search4', methods=['POST'])
45def do_search() -> 'html':
46 phrase = request.form['phrase']
47 letters = request.form['letters']
48 title = 'Here are your results:'
49 results = str(vsearch.search4letters(phrase, letters))
50
51 log_request(request, results)
52 return render_template('results.html',
53 the_phrase = phrase,
54 the_letters = letters,
55 the_title = title,
56 the_results = results)
57
58
59@app.route('/')
60@app.route('/entry')
61def entry_page() -> 'html':
62 return render_template('entry.html', the_title='Welcome to search4letters on the web!')
63
64
65@app.route('/viewlog')
66@check_logged_in
67def view_the_log() -> str:
68 with UseDatabase(app.config['dbconfig']) as cursor:
69 _SQL = """select phrase, letters, ip, browser_string, results
70 from log"""
71 cursor.execute(_SQL)
72 contents = cursor.fetchall()
73
74 titles= ('Phrase', 'Letters', 'Remote_addr', 'User_agent', 'Results')
75 return render_template('viewlog.html',
76 the_title='View Log',
77 the_row_titles=titles,
78 the_data=contents)
79
80
81
82
83if __name__ == "__main__":
84 app.run(debug = True)