api_w.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. data_in = ''
  14. )
  15. return flask.jsonify({
  16. "data" : data_pas[0],
  17. "js_data" : data_pas[1]
  18. })
  19. elif tool == 'include':
  20. name_org = flask.request.form.get('name_org', '')
  21. name_org = name if name_org == '' else name_org
  22. include_data = flask.request.form.get('name_include', '')
  23. try:
  24. include_list = json.loads(flask.request.form.get('include_list', ''))
  25. except:
  26. include_list = []
  27. curs.execute(db_change("select data from data where title = ?"), [name])
  28. sql_data = curs.fetchall()
  29. if not sql_data:
  30. return flask.jsonify({})
  31. else:
  32. json_data = sql_data[0][0]
  33. get_all_change_1 = []
  34. find_replace_moment = re.findall(r'(@([^=@]+)=([^=@]+)@|@([^=@]+)@)', json_data)
  35. for i in find_replace_moment:
  36. if i[1] != '':
  37. get_all_change_1 += [[i[1], i[2]]]
  38. json_data = json_data.replace(i[0], '@' + i[1] + '@', 1)
  39. else:
  40. json_data = json_data.replace(i[0], '@' + i[3] + '@', 1)
  41. get_all_change_2 = include_list + get_all_change_1
  42. for i in get_all_change_2:
  43. json_data = json_data.replace('@' + i[0] + '@', i[1])
  44. data_pas = render_set(
  45. doc_name = name_org,
  46. doc_data = json_data,
  47. data_type = 'api_view',
  48. data_in = include_data
  49. )
  50. return flask.jsonify({
  51. "data" : data_pas[0],
  52. "js_data" : data_pas[1]
  53. })
  54. elif tool == 'exist':
  55. try:
  56. title_list = json.loads(flask.request.form.get('title_list', ''))
  57. title_list = list(set(title_list))
  58. except:
  59. title_list = []
  60. data_exist = {}
  61. for i in title_list:
  62. curs.execute(db_change("select title from data where title = ?"), [i])
  63. if curs.fetchall():
  64. data_exist[i] = '1'
  65. return flask.jsonify(data_exist)
  66. return flask.jsonify({})
  67. else:
  68. if tool == '' or tool == 'view':
  69. if acl_check(name, 'render') != 1:
  70. if check_int(rev) == '':
  71. curs.execute(db_change("select data from data where title = ?"), [name])
  72. else:
  73. curs.execute(db_change("select data from history where title = ? and id = ?"), [name, rev])
  74. sql_data = curs.fetchall()
  75. if sql_data:
  76. data_pas = render_set(
  77. doc_name = name,
  78. doc_data = sql_data[0][0],
  79. data_type = 'api_view'
  80. )
  81. return flask.jsonify({
  82. "data" : data_pas[0],
  83. "js_data" : data_pas[1]
  84. })
  85. return flask.jsonify({})