-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathserver.py
More file actions
95 lines (74 loc) · 2.05 KB
/
server.py
File metadata and controls
95 lines (74 loc) · 2.05 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
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
import os
import json
import MySQLdb
from flask import Flask
from flask import render_template,request,redirect,url_for,flash,send_from_directory
from core import Manager,TARGET_PATH
from db import DButils
from ziputils import zip_dir
from config import *
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html")
@app.route("/help")
def help():
return render_template("help.html")
@app.route("/gen", methods=['GET', 'POST'])
def gen():
content = request.form['config']
pdef = json.loads(content)
pdef['project']['group'] = 'qdingweb-pro'
#pdef['dbinfo']['host'] = db_host
#pdef['dbinfo']['port'] = db_port
#pdef['dbinfo']['username'] = db_user
#pdef['dbinfo']['password'] = db_passwd
manager = Manager()
manager.set_pdef(pdef)
manager.create_zip()
zip_dir(manager.project.targetfolder,os.path.join(manager.project.targetfolder,manager.project.folder_name+".zip"))
try:
db = DButils()
sql = "insert into codeg.gen_log(pdef_content,filename,uuid) values (%s,%s,%s)"
db.execute(sql,(content.encode("utf-8"),manager.project.folder_name,manager.project.uuid_name))
finally:
db.close_db()
return redirect("/list")
@app.route("/list", methods=['GET', 'POST'])
def list():
field_dict = {}
projects = []
try:
db = DButils()
sql = "select * from codeg.gen_log order by create_at desc limit 20"
results = db.fetchmany(sql)
for r in results:
projects.append(
{
"id":r[0],
"create_at":r[1],
"config":r[2],
"name":r[3]
}
)
finally:
db.close_db()
return render_template("list.html",projects = projects)
@app.route("/download/<path:id>")
def downloader(id):
dirname = ""
filename = ""
try:
db = DButils()
sql = "select * from codeg.gen_log where id = " + id
r = db.fetchone(sql)
dirname = os.path.join("target",r[4])
filename = r[3] +".zip"
finally:
db.close_db()
print dirname,filename
return send_from_directory(dirname,filename,as_attachment=True)
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=5001)