1
0

web_user.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from conf import Config
  2. from tool.login import create_uid
  3. from tool.type_ import *
  4. from core.user import User
  5. from . import views
  6. class WebUser:
  7. def __init__(self, name: uname_t, passwd: passwd_t = None, uid: uid_t = None):
  8. self._name = name
  9. if uid is None:
  10. self._uid = create_uid(name, passwd)
  11. else:
  12. self._uid = uid
  13. self.score = "0"
  14. self.reputation = "0"
  15. self.rubbish = "0"
  16. self.group = "普通成员"
  17. self.is_anonymous = False
  18. self.update_info()
  19. def update_info(self):
  20. user = views.website.get_user_by_id(self._uid)
  21. if user is None:
  22. return
  23. if user.is_manager():
  24. self.group = "管理员"
  25. self.score = "0"
  26. self.reputation = "0"
  27. self.rubbish = "0"
  28. else:
  29. self.group = "普通成员"
  30. res = user.get_info()
  31. self.score = res.get('score', '0')
  32. self.reputation = res.get('reputation', '0')
  33. self.rubbish = res.get('rubbish', '0')
  34. def is_manager(self):
  35. return self.group == "管理员"
  36. def get_qr_code(self):
  37. return self.order, self._uid
  38. @property
  39. def name(self):
  40. return self._name
  41. @property
  42. def uid(self):
  43. return self._uid[:Config.tk_show_uid_len]
  44. @property
  45. def is_active(self):
  46. return views.website.load_user_by_id(self._uid) is not None
  47. @property
  48. def is_authenticated(self):
  49. return views.website.load_user_by_id(self._uid) is not None
  50. @property
  51. def order(self) -> str:
  52. cur = views.website.db.search(columns=["OrderID"],
  53. table="orders",
  54. where=f"UserID = '{self._uid}' and status=0")
  55. if cur is None or cur.rowcount == 0:
  56. return "None"
  57. assert cur.rowcount == 1
  58. return str(cur.fetchone()[0])
  59. def get_order_goods_list(self):
  60. order = self.order
  61. if order is None:
  62. return []
  63. cur = views.website.db.search(columns=["Name", "Quantity"],
  64. table="order_goods_view",
  65. where=f"OrderID = '{order}'")
  66. if cur is None:
  67. return []
  68. res = []
  69. for i in range(cur.rowcount):
  70. re = cur.fetchone()
  71. res.append(f"#{i} {re[0]} x {re[1]}")
  72. return res
  73. def get_id(self):
  74. return self._uid
  75. def get_garbage_list(self):
  76. return views.website.get_user_garbage_list(self._uid, limit=20)
  77. def get_user(self) -> User:
  78. res = views.website.get_user_by_id(self._uid)
  79. return res