acl.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. from .tool.func import *
  2. def acl_2(conn, name):
  3. curs = conn.cursor()
  4. check_ok = ''
  5. if flask.request.method == 'POST':
  6. check_data = 'acl (' + name + ')'
  7. else:
  8. check_data = None
  9. user_data = re.search('^user:(.+)$', name)
  10. if user_data:
  11. if check_data and custom()[2] == 0:
  12. return redirect('/login')
  13. if user_data.groups()[0] != ip_check():
  14. if admin_check(5, check_data) != 1:
  15. if check_data:
  16. return re_error('/error/3')
  17. else:
  18. check_ok = 'disabled'
  19. else:
  20. if admin_check(5, check_data) != 1:
  21. if check_data:
  22. return re_error('/error/3')
  23. else:
  24. check_ok = 'disabled'
  25. if flask.request.method == 'POST':
  26. if flask.request.form.get('dec', '') != flask.request.form.get('view', ''):
  27. dec = flask.request.form.get('view', '')
  28. view = flask.request.form.get('view', '')
  29. else:
  30. dec = flask.request.form.get('dec', '')
  31. view = flask.request.form.get('view', '')
  32. curs.execute("select title from acl where title = ?", [name])
  33. if curs.fetchall():
  34. curs.execute("update acl set dec = ? where title = ?", [dec, name])
  35. curs.execute("update acl set dis = ? where title = ?", [flask.request.form.get('dis', ''), name])
  36. curs.execute("update acl set why = ? where title = ?", [flask.request.form.get('why', ''), name])
  37. curs.execute("update acl set view = ? where title = ?", [view, name])
  38. else:
  39. curs.execute("insert into acl (title, dec, dis, why, view) values (?, ?, ?, ?, ?)", [name, dec, flask.request.form.get('dis', ''), flask.request.form.get('why', ''), view])
  40. curs.execute("select title from acl where title = ? and dec = '' and dis = ''", [name])
  41. if curs.fetchall():
  42. curs.execute("delete from acl where title = ?", [name])
  43. conn.commit()
  44. return redirect('/acl/' + url_pas(name))
  45. else:
  46. data = '' + load_lang('document_acl') + '<br><br><select name="dec" ' + check_ok + '>'
  47. if re.search('^user:', name):
  48. acl_list = [['', load_lang('normal')], ['user', load_lang('member')], ['all', load_lang('all')]]
  49. else:
  50. acl_list = [['', load_lang('normal')], ['user', load_lang('member')], ['admin', load_lang('admin')]]
  51. curs.execute("select dec from acl where title = ?", [name])
  52. acl_data = curs.fetchall()
  53. for data_list in acl_list:
  54. if acl_data and acl_data[0][0] == data_list[0]:
  55. check = 'selected="selected"'
  56. else:
  57. check = ''
  58. data += '<option value="' + data_list[0] + '" ' + check + '>' + data_list[1] + '</option>'
  59. data += '</select>'
  60. if not re.search('^user:', name):
  61. data += '<hr class=\"main_hr\">' + load_lang('discussion_acl') + '<br><br><select name="dis" ' + check_ok + '>'
  62. curs.execute("select dis, why, view from acl where title = ?", [name])
  63. acl_data = curs.fetchall()
  64. for data_list in acl_list:
  65. if acl_data and acl_data[0][0] == data_list[0]:
  66. check = 'selected="selected"'
  67. else:
  68. check = ''
  69. data += '<option value="' + data_list[0] + '" ' + check + '>' + data_list[1] + '</option>'
  70. data += '</select>'
  71. data += '<hr class=\"main_hr\">' + load_lang('view_acl') + '<br><br><select name="view" ' + check_ok + '>'
  72. for data_list in acl_list:
  73. if acl_data and acl_data[0][2] == data_list[0]:
  74. check = 'selected="selected"'
  75. else:
  76. check = ''
  77. data += '<option value="' + data_list[0] + '" ' + check + '>' + data_list[1] + '</option>'
  78. data += '</select>'
  79. if check_ok == '':
  80. if acl_data:
  81. data += '<hr class=\"main_hr\"><input value="' + html.escape(acl_data[0][1]) + '" placeholder="' + load_lang('why') + '" name="why" type="text" ' + check_ok + '>'
  82. else:
  83. data += '<hr class=\"main_hr\"><input placeholder="' + load_lang('why') + '" name="why" type="text" ' + check_ok + '>'
  84. return easy_minify(flask.render_template(skin_check(),
  85. imp = [name, wiki_set(), custom(), other2([' (' + load_lang('acl') + ')', 0])],
  86. data = '''
  87. <form method="post">
  88. ''' + data + '''
  89. <hr class=\"main_hr\">
  90. <button type="submit" ''' + check_ok + '''>''' + load_lang('save') + '''</button>
  91. </form>
  92. ''',
  93. menu = [['w/' + url_pas(name), load_lang('document')], ['manager', load_lang('admin')]]
  94. ))