forked from codyjarvis/HarvTrack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHarvTrack.py
More file actions
151 lines (115 loc) · 4.14 KB
/
HarvTrack.py
File metadata and controls
151 lines (115 loc) · 4.14 KB
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
import sqlite3
from flask import Flask, request, session, g, redirect, url_for, \
abort, render_template, flash
from contextlib import closing
app = Flask(__name__)
# change to env var?
app.config.from_pyfile("./config.py")
def init_db():
"""Initiate a new db. Run first time."""
with closing(connect_db()) as db:
with app.open_resource('schema.sql', mode='r') as f:
db.cursor().executescript(f.read())
db.commit()
def connect_db():
"""Connects to DB"""
return sqlite3.connect(app.config['DATABASE'])
# open db connection
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = connect_db()
return db
# close db connection
@app.teardown_request
def teardown_request(exception):
db = getattr(g, 'db', None)
if db is not None:
db.close()
@app.route("/")
def view_activity():
entries = get_entries_view()
observers = get_observers()
activities = get_activities()
return render_template('activity.html', entries=entries, observers=observers, activities=activities)
def get_observers():
db = get_db()
users = db.execute("select id, username from users")
users_dict = [dict(observerid=row[0], observername=row[1]) for row in users.fetchall()]
return users_dict
def get_entries_view():
db = get_db()
logged_entries = db.execute("select * from activity_view order by date desc, time")
entries = [dict(observer=row[0], activity=row[1], notes=row[2], date=row[3], time=row[4], length=row[5]) for row
in logged_entries.fetchall()]
return entries
def get_activities():
db = get_db()
acts = db.execute("select id, activitytype from activitytype")
acts_dict = [dict(activityid=row[0], activityname=row[1]) for row in acts.fetchall()]
return acts_dict
@app.route("/log_activity", methods=['POST'])
def log_activity():
db = get_db()
notes = request.form.get('notes', None)
length = request.form.get('length', None)
observer = request.form.get('observer', None)
activity = request.form.get('activity', None)
if observer == "":
pass
elif activity == "":
pass
else:
db.execute("insert into activity (entryDatetime, inputUser, activityType, ActivityDescription, activityLengthSec)"
" values(strftime('%s', 'now'),?,?,?,?)", [observer, activity, notes, length])
db.commit()
flash("Entry Successful")
return redirect(url_for('view_activity'))
@app.route("/admin")
def admin_page():
del_entries = get_entries_del()
return render_template('admin.html', del_entries=del_entries)
def get_entries_del():
db = get_db()
logged_entries = db.execute("select id, activitydescription from activity order by entrydatetime desc Limit 5")
entries = [dict(id=row[0], activitydescription=row[1]) for row
in logged_entries.fetchall()]
return entries
@app.route("/add_activity", methods=['POST'])
# add to the activity table
def add_activity():
db = get_db()
activityType = request.form.get('activityType', None)
if activityType == "":
flash("Please input an activity.")
else:
db.execute("insert into activityType (activityType) values(?)", [activityType])
db.commit()
flash("Activity added")
return redirect(url_for('admin_page'))
@app.route("/add_user", methods=['POST'])
# add new user
def add_user():
db = get_db()
username = request.form.get('username', None)
if username == "":
flash("Please input a username.")
else:
db.execute("insert into users (username) values(?)", [username])
db.commit()
flash("User added")
return redirect(url_for('admin_page'))
@app.route("/remove_logged_activity", methods=['POST'])
# remove entry
def delete_acts():
db = get_db()
activityid = request.form.get('activityid', None)
if activityid == "":
flash("Please input a username.")
else:
db.execute("delete from activity where id = ?", [activityid])
db.commit()
flash("Entry Removed")
return redirect(url_for('admin_page'))
if __name__ == "__main__":
app.run(host="0.0.0.0")