user.py 7.0 KB

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