give_admin.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from .tool.func import *
  2. def give_admin_2(name):
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. owner = admin_check()
  6. curs.execute(db_change("select data from user_set where id = ? and name = 'acl'"), [name])
  7. user_acl = curs.fetchall()
  8. if not user_acl:
  9. return re_error('/error/2')
  10. else:
  11. user_acl = user_acl[0][0]
  12. if owner != 1:
  13. curs.execute(db_change('select name from alist where name = ? and acl = "owner"'), [user_acl])
  14. if curs.fetchall():
  15. return re_error('/error/3')
  16. if ip_check() == name:
  17. return re_error('/error/3')
  18. if flask.request.method == 'POST':
  19. if admin_check(7, 'admin (' + name + ')') != 1:
  20. return re_error('/error/3')
  21. if flask.request.form.get('select', 'X') == 'X':
  22. select_data = 'user'
  23. else:
  24. select_data = flask.request.form.get('select', 'X')
  25. curs.execute(db_change('select name from alist where name = ? and acl = "owner"'), [select_data])
  26. if owner != 1 and curs.fetchall():
  27. return re_error('/error/3')
  28. curs.execute(db_change("update user_set set data = ? where id = ? and name = 'acl'"), [
  29. select_data,
  30. name
  31. ])
  32. conn.commit()
  33. return redirect('/admin/' + url_pas(name))
  34. else:
  35. if admin_check(7) != 1:
  36. return re_error('/error/3')
  37. div = '<option value="X">X</option>'
  38. curs.execute(db_change('select distinct name from alist order by name asc'))
  39. for data in curs.fetchall():
  40. if user_acl == data[0]:
  41. div = '<option value="' + data[0] + '">' + data[0] + '</option>' + div
  42. else:
  43. div += '<option value="' + data[0] + '">' + data[0] + '</option>'
  44. return easy_minify(flask.render_template(skin_check(),
  45. imp = [name, wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('authorize') + ')', 0])],
  46. data = '''
  47. <form method="post">
  48. <select name="select">''' + div + '''</select>
  49. <hr class="main_hr">
  50. <button type="submit">''' + load_lang('save') + '''</button>
  51. </form>
  52. ''',
  53. menu = [['manager', load_lang('return')]]
  54. ))