user.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. #-*- coding:utf-8 -*-
  2. import json
  3. from flask import request, g, abort, render_template
  4. from rrd import app
  5. from rrd.view.utils import require_login, require_login_json
  6. from rrd.model.user import User
  7. @app.route("/user/about/<int:user_id>", methods=["GET",])
  8. @require_login()
  9. def user_info(user_id):
  10. if request.method == "GET":
  11. user = User.get_by_id(user_id)
  12. return render_template("user/about.html", **locals())
  13. @app.route("/user/profile", methods=["GET", "POST"])
  14. @require_login()
  15. def user_profile():
  16. if request.method == "GET":
  17. current_user = g.user
  18. return render_template("user/profile.html", **locals())
  19. if request.method == "POST":
  20. ret = {"msg":""}
  21. cnname = request.form.get("cnname", "")
  22. email = request.form.get("email", "")
  23. im = request.form.get("im", "")
  24. phone = request.form.get("phone", "")
  25. qq = request.form.get("qq", "")
  26. d = {
  27. "cnname": cnname,
  28. "email": email,
  29. "im": im,
  30. "phone": phone,
  31. "qq": qq,
  32. }
  33. try:
  34. User.update_user_profile(d)
  35. except Exception as e:
  36. ret['msg'] = str(e)
  37. return json.dumps(ret)
  38. @app.route("/user/chpwd", methods=["POST", ])
  39. @require_login_json()
  40. def user_change_passwd():
  41. if request.method == "POST":
  42. ret = {"msg": ""}
  43. old_password = request.form.get("old_password", "")
  44. new_password = request.form.get("new_password", "")
  45. repeat_password = request.form.get("repeat_password", "")
  46. if not (old_password and new_password and repeat_password):
  47. ret["msg"] = "some form item missing"
  48. return json.dumps(ret)
  49. if new_password != repeat_password:
  50. ret["msg"] = "repeat and new password not equal"
  51. return json.dumps(ret)
  52. try:
  53. User.change_user_passwd(old_password, new_password)
  54. except Exception as e:
  55. ret['msg'] = str(e)
  56. return json.dumps(ret)
  57. @app.route("/user/list", methods=["GET",])
  58. @require_login()
  59. def user_list():
  60. if request.method == "GET":
  61. query_term = request.args.get("query", "")
  62. limit = g.limit or 20
  63. page = g.page or 1
  64. users = User.get_users(query_term, limit, page)
  65. return render_template("user/list.html", **locals())
  66. @app.route("/user/query", methods=["GET",])
  67. @require_login_json()
  68. def user_query():
  69. if request.method == "GET":
  70. query_term = request.args.get("query", "")
  71. limit = g.limit or 20
  72. page = g.page or 1
  73. ret = {"users":[], "msg":""}
  74. try:
  75. users = User.get_users(query_term, limit, page)
  76. ret['users'] = [u.dict() for u in users]
  77. except Exception as e:
  78. ret['msg'] = str(e)
  79. logger.error(str(e))
  80. return json.dumps(ret)
  81. #anyone can create a new user
  82. @app.route("/user/create", methods=["GET", "POST"])
  83. @require_login()
  84. def user_create():
  85. if request.method == "GET":
  86. return render_template("user/create.html", **locals())
  87. if request.method == "POST":
  88. ret = {"msg":""}
  89. name = request.form.get("name", "")
  90. cnname = request.form.get("cnname", "")
  91. password = request.form.get("password", "")
  92. email = request.form.get("email", "")
  93. phone = request.form.get("phone", "")
  94. im = request.form.get("im", "")
  95. qq = request.form.get("qq", "")
  96. if not name or not cnname or not password or not email:
  97. ret["msg"] = "not all form item entered"
  98. return json.dumps(ret)
  99. try:
  100. User.create_user(name, cnname, password, email, phone, im, qq)
  101. except Exception as e:
  102. ret['msg'] = str(e)
  103. return json.dumps(ret)
  104. ##admin
  105. @app.route("/admin/user/<int:user_id>/edit", methods=["GET", "POST"])
  106. @require_login()
  107. def admin_user_edit(user_id):
  108. if request.method == "GET":
  109. if not (g.user.is_admin() or g.user.is_root()):
  110. abort(403, "no such privilege")
  111. user = User.get_by_id(user_id)
  112. if not user:
  113. abort(404, "no such user where id=%s" % user_id)
  114. return render_template("user/edit.html", **locals())
  115. if request.method == "POST":
  116. ret = {"msg":""}
  117. if not (g.user.is_admin() or g.user.is_root()):
  118. ret["msg"] = "no such privilege"
  119. return json.dumps(ret)
  120. user_id = request.form.get("id", "")
  121. cnname = request.form.get("cnname", "")
  122. email = request.form.get("email", "")
  123. phone = request.form.get("phone", "")
  124. im = request.form.get("im", "")
  125. qq = request.form.get("qq", "")
  126. d = {
  127. "user_id": user_id, "cnname": cnname, "email": email, "phone": phone, "im": im, "qq": qq,
  128. }
  129. try:
  130. User.admin_update_user_profile(d)
  131. except Exception as e:
  132. ret['msg'] = str(e)
  133. return json.dumps(ret)
  134. @app.route("/admin/user/<int:user_id>/chpwd", methods=["POST", ])
  135. @require_login_json()
  136. def admin_user_change_password(user_id):
  137. if request.method == "POST":
  138. ret = {"msg": ""}
  139. if not (g.user.is_admin or g.user.is_root()):
  140. ret["msg"] = "you do not have permissions"
  141. return json.dumps(ret)
  142. password = request.form.get("password")
  143. if not password:
  144. ret["msg"] = "no password entered"
  145. return json.dumps(ret)
  146. try:
  147. User.admin_change_user_passwd(user_id, password)
  148. except Exception as e:
  149. ret['msg'] = str(e)
  150. return json.dumps(ret)
  151. @app.route("/admin/user/<int:user_id>/role", methods=["POST", ])
  152. @require_login_json()
  153. def admin_user_change_role(user_id):
  154. if request.method == "POST":
  155. ret = {"msg": ""}
  156. if not (g.user.is_admin or g.user.is_root()):
  157. ret["msg"] = "you do not have permissions"
  158. return json.dumps(ret)
  159. role = str(request.form.get("role", ""))
  160. if not role or role not in ['1', '0']:
  161. ret["msg"] = "invalid role"
  162. return json.dumps(ret)
  163. admin = "yes" if role == '1' else "no"
  164. try:
  165. User.admin_change_user_role(user_id, admin)
  166. except Exception as e:
  167. ret['msg'] = str(e)
  168. return json.dumps(ret)
  169. @app.route("/admin/user/<int:user_id>/delete", methods=["POST", ])
  170. @require_login_json()
  171. def admin_user_delete(user_id):
  172. if request.method == "POST":
  173. ret = {"msg": ""}
  174. if not (g.user.is_admin or g.user.is_root()):
  175. ret["msg"] = "you do not have permissions"
  176. return json.dumps(ret)
  177. try:
  178. User.admin_delete_user(user_id)
  179. except Exception as e:
  180. ret['msg'] = str(e)
  181. return json.dumps(ret)