vote_add.py 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from .tool.func import *
  2. def vote_add():
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. if acl_check(conn, '', 'vote') == 1:
  6. return re_error(conn, '/ban')
  7. if flask.request.method == 'POST':
  8. vote_data = flask.request.form.get('data', 'test\ntest_2')
  9. if vote_data.count('\n') < 1:
  10. return re_error(conn, '/ban')
  11. curs.execute(db_change('select id from vote where not type = "option" order by id + 0 desc limit 1'))
  12. id_data = curs.fetchall()
  13. id_data = str((int(id_data[0][0]) + 1) if id_data else 1)
  14. admin_check(conn, None, 'add vote ' + id_data)
  15. if flask.request.form.get('open_select', 'N') == 'Y':
  16. open_data = 'open'
  17. else:
  18. open_data = 'n_open'
  19. curs.execute(db_change("insert into vote (name, id, subject, data, user, type, acl) values (?, ?, ?, ?, '', ?, ?)"), [
  20. flask.request.form.get('name', 'test'),
  21. id_data,
  22. flask.request.form.get('subject', 'test'),
  23. flask.request.form.get('data', 'test'),
  24. open_data,
  25. flask.request.form.get('acl_select', '')
  26. ])
  27. curs.execute(db_change("insert into vote (name, id, subject, data, user, type, acl) values ('open_user', ?, '', ?, '', 'option', '')"), [
  28. id_data,
  29. ip_check()
  30. ])
  31. time_limitless = flask.request.form.get('limitless', '')
  32. if time_limitless == '':
  33. time_limit = flask.request.form.get('date', '')
  34. if re.search(r'^[0-9]{4}-[0-9]{2}-[0-9]{2}$', time_limit):
  35. curs.execute(db_change("insert into vote (name, id, subject, data, user, type, acl) values ('end_date', ?, '', ?, '', 'option', '')"), [
  36. id_data,
  37. time_limit
  38. ])
  39. return redirect(conn, '/vote')
  40. else:
  41. acl_data = '<select name="acl_select">'
  42. acl_list = get_acl_list()
  43. for data_list in acl_list:
  44. acl_data += '<option value="' + data_list + '">' + (data_list if data_list != '' else 'normal') + '</option>'
  45. acl_data += '</select>'
  46. return easy_minify(conn, flask.render_template(skin_check(conn),
  47. imp = [get_lang(conn, 'add_vote'), wiki_set(conn), wiki_custom(conn), wiki_css([0, 0])],
  48. data = '' + \
  49. '<form method="post">' + \
  50. '<input name="name" placeholder="' + get_lang(conn, 'name') + '">' + \
  51. '<hr class="main_hr">' + \
  52. '<textarea class="opennamu_textarea_100" name="subject" placeholder="' + get_lang(conn, 'explanation') + '"></textarea>' + \
  53. '<hr class="main_hr">' + \
  54. '<textarea class="opennamu_textarea_500" name="data" placeholder="' + get_lang(conn, '1_line_1_q') + '"></textarea>' + \
  55. '<hr class="main_hr">' + \
  56. '<input type="checkbox" value="Y" name="open_select"> ' + get_lang(conn, 'open_vote') + \
  57. '<h2>' + get_lang(conn, 'period') + '</h2>'
  58. '<input type="date" name="date" pattern="\\d{4}-\\d{2}-\\d{2}">' + \
  59. '<hr class="main_hr">' + \
  60. '<input type="checkbox" value="Y" name="limitless"> ' + get_lang(conn, 'limitless') + \
  61. '<h2>' + get_lang(conn, 'acl') + '</h2>' + \
  62. acl_data + ' <a href="/acl/TEST#exp">(' + get_lang(conn, 'explanation') + ')</a>' + \
  63. '<hr class="main_hr">' + \
  64. '<button type="submit">' + get_lang(conn, 'send') + '</buttom>' + \
  65. '</form>' + \
  66. '',
  67. menu = [['vote', get_lang(conn, 'return')]]
  68. ))