api_w.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. from .tool.func import *
  2. def api_w(name = 'Test', tool = '', rev = ''):
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. if flask.request.method == 'POST':
  6. if tool == '' or tool == 'preview':
  7. # data_in 말고 data_use_type이랑 data_use_num 추가 예정
  8. data_org = flask.request.form.get('data', '')
  9. data_pas = render_set(
  10. doc_name = name,
  11. doc_data = data_org,
  12. data_type = 'api_view'
  13. )
  14. return flask.jsonify({
  15. "data" : data_pas[0],
  16. "js_data" : data_pas[1]
  17. })
  18. elif tool == 'include':
  19. name_org = flask.request.form.get('name_org', '')
  20. name_org = name if name_org == '' else name_org
  21. include_data = flask.request.form.get('name_include', '')
  22. try:
  23. include_list = json.loads(flask.request.form.get('include_list', ''))
  24. except:
  25. include_list = []
  26. curs.execute(db_change("select data from data where title = ?"), [name])
  27. sql_data = curs.fetchall()
  28. if not sql_data:
  29. return flask.jsonify({})
  30. else:
  31. json_data = sql_data[0][0]
  32. get_all_change_1 = []
  33. find_replace_moment = re.findall(r'(@([^=@]+)=([^=@]+)@|@([^=@]+)@)', json_data)
  34. for i in find_replace_moment:
  35. if i[1] != '':
  36. get_all_change_1 += [[i[1], i[2]]]
  37. json_data = json_data.replace(i[0], '@' + i[1] + '@', 1)
  38. else:
  39. json_data = json_data.replace(i[0], '@' + i[3] + '@', 1)
  40. get_all_change_2 = include_list + get_all_change_1
  41. for i in get_all_change_2:
  42. json_data = json_data.replace('@' + i[0] + '@', i[1])
  43. data_pas = render_set(
  44. doc_name = name_org,
  45. doc_data = json_data,
  46. data_type = 'api_view',
  47. data_in = include_data
  48. )
  49. return flask.jsonify({
  50. "data" : data_pas[0],
  51. "js_data" : data_pas[1]
  52. })
  53. elif tool == 'exist':
  54. try:
  55. title_list = json.loads(flask.request.form.get('title_list', ''))
  56. title_list = list(set(title_list))
  57. except:
  58. title_list = [name]
  59. data_exist = {}
  60. for i in title_list:
  61. curs.execute(db_change("select title from data where title = ?"), [i])
  62. if curs.fetchall():
  63. data_exist[i] = '1'
  64. return flask.jsonify(data_exist)
  65. return flask.jsonify({})
  66. else:
  67. if tool == '' or tool == 'view':
  68. if acl_check(name, 'render') != 1:
  69. if number_check(rev) == '':
  70. curs.execute(db_change("select data from data where title = ?"), [name])
  71. else:
  72. curs.execute(db_change("select data from history where title = ? and id = ?"), [name, rev])
  73. sql_data = curs.fetchall()
  74. if sql_data:
  75. data_pas = render_set(
  76. doc_name = name,
  77. doc_data = sql_data[0][0],
  78. data_type = 'api_view'
  79. )
  80. return flask.jsonify({
  81. "data" : data_pas[0],
  82. "js_data" : data_pas[1]
  83. })
  84. return flask.jsonify({})