-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtaskflow.py
142 lines (120 loc) · 4.61 KB
/
taskflow.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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
from flask import Flask
from flask import render_template, request, send_from_directory, session
from runner import TaskRunner
from utils import *
import time, os, sys
import logging
app = Flask(__name__)
app.secret_key = os.urandom(24)
runner = TaskRunner()
runner.load_tasks()
# disable default log
log = logging.getLogger('werkzeug')
log.disabled = True
logging.getLogger().setLevel(logging.INFO)
# global
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
if password == get_password():
session['username'] = username
session['password'] = password
return 'success'
else:
return 'incorrect'
return render_template('login.html')
@app.route('/')
def dashboard():
if 'username' not in session: return render_template('login.html')
return render_template('index.html', records=runner.task_queue, status=runner.is_alldone)
@app.route('/get_tasks', methods=['GET'])
def get_tasks():
if 'username' in session:
return render_template('dashboard.html', records=runner.task_queue, status=runner.is_alldone)
else:
return '<div class="spinner-grow text-primary" role="status"><span class="sr-only"></span></div>'
# for task
@app.route('/get_task', methods=['POST'])
def get_task():
if 'username' not in session: return render_template('login.html')
name, cmd, timeout = runner.get(request.form['index'])
return {'name': name, 'cmd': cmd, 'timeout': timeout}
@app.route('/delete_task', methods=['POST'])
def delete_task():
if 'username' not in session: return render_template('login.html')
index = int(request.form['index'])
runner.delete(index)
return 'delete'
@app.route('/order_up', methods=['POST'])
def order_up():
if 'username' not in session: return render_template('login.html')
runner.order_up(request.form['index'])
return 'order_up'
@app.route('/order_down', methods=['POST'])
def order_down():
if 'username' not in session: return render_template('login.html')
runner.order_down(request.form['index'])
return 'order_down'
@app.route('/add_task', methods=['POST'])
def add_task():
if 'username' not in session: return render_template('login.html')
runner.add(request.form['name'], request.form['cmd'], request.form['timeout'])
return 'add'
@app.route('/edit_task', methods=['POST'])
def edit_task():
if 'username' not in session: return render_template('login.html')
runner.edit(request.form['index'], request.form['name'], request.form['cmd'], request.form['timeout'])
return 'edit'
@app.route('/get_log', methods=['POST'])
def get_log():
if 'username' not in session: return render_template('login.html')
return runner.get_log(request.form['index'])
# for main
@app.route('/global_start', methods=['GET'])
def global_start():
if 'username' not in session: return render_template('login.html')
if runner.is_alldone:
runner.reset_status()
runner.run()
return 'start'
@app.route('/global_stop', methods=['GET'])
def global_stop():
if 'username' not in session: return render_template('login.html')
runner.stop()
return 'stop'
@app.route('/backup', methods=['POST'])
def backup():
if 'username' not in session: return render_template('login.html')
if request.form['use_time'] == '0':
filename = request.form['filename']
else:
filename = time.strftime("%Y%m%d-%H%M%S", time.localtime())
runner.save_tasks(filename=filename + '.txt')
return 'backup'
@app.route('/get_lists', methods=['GET'])
def get_lists():
if 'username' not in session: return render_template('login.html')
path, lists = get_tasklists()
return dict(path=path, files=lists)
@app.route('/load_list', methods=['POST'])
def load_list():
if 'username' not in session: return render_template('login.html')
runner.load_tasks(filename=request.form['filename'])
return 'load'
@app.route('/delete_list', methods=['POST'])
def delete_list():
if 'username' not in session: return render_template('login.html')
delete_tasklist(filename=request.form['filename'])
return 'delete tasklist'
@app.route("/download/<filename>")
def download(filename):
if 'username' not in session: return render_template('login.html')
return send_from_directory('tasklists', filename, as_attachment=True)
if __name__ == '__main__':
server_host = '0.0.0.0'
server_port = 5000
app.logger.warning('Server running at ' + server_host + ":" + str(server_port))
app.debug = True
app.run(host=server_host, port=server_port)