garbage.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. from tool.type_ import *
  2. from tool.time_ import HGSTime, hgs_time_t
  3. from tool.location import HGSLocation, hgs_location_t
  4. class GarbageBagNotUse(Exception):
  5. pass
  6. class GarbageType:
  7. GarbageTypeStrList: List = ["", "recyclable", "kitchen", "hazardous", "other"]
  8. recyclable: enum = 1
  9. kitchen: enum = 2
  10. hazardous: enum = 3
  11. other: enum = 4
  12. class GarbageBag:
  13. def __init__(self, gid: gid_t):
  14. self._gid: gid_t = gid
  15. self._have_use: bool = False
  16. self._have_check: bool = False
  17. self._type: Union[enum, None] = None
  18. self._use_time: Union[HGSTime, None] = None
  19. self._user: Union[uid_t, None] = None
  20. self._loc: Union[HGSLocation, None] = None
  21. self._check = False
  22. self._checker: Union[uid_t, None] = None
  23. def __repr__(self):
  24. tmp = GarbageType.GarbageTypeStrList
  25. if not self._have_use:
  26. return f"GarbageBag: {self._gid} NOT USE"
  27. elif not self._have_check:
  28. return (f"GarbageBag: {self._gid} "
  29. f"Type: {tmp[self._type]} "
  30. f"Time: {self._use_time.get_time()} "
  31. f"User: {self._user} "
  32. f"Location {self._loc.get_location()} "
  33. f"NOT CHECK")
  34. return (f"GarbageBag: {self._gid} "
  35. f"Type: {tmp[self._type]} "
  36. f"Time: {self._use_time.get_time()} "
  37. f"User: {self._user} "
  38. f"Location {self._loc.get_location()} "
  39. f"Check: {self._check}"
  40. f"Checker: {self._checker}")
  41. def get_info(self) -> dict[str: str]:
  42. return {
  43. "gid": str(self._gid),
  44. "type": str(self._type),
  45. "use_time": (self._use_time is None) if "" else str(self._use_time.get_time()),
  46. "user": str(self._user),
  47. "loc": (self._loc is None) if "" else str(self._loc.get_location()),
  48. "check": self._check if '1' else '0',
  49. "checker": str(self._checker),
  50. }
  51. def is_use(self) -> bool:
  52. return self._have_use
  53. def is_check(self) -> Tuple[bool, bool]:
  54. if not self._have_check:
  55. return False, False
  56. else:
  57. return True, self._check
  58. def get_gid(self):
  59. return self._gid
  60. def get_user(self) -> uid_t:
  61. if not self._have_use:
  62. raise GarbageBagNotUse
  63. return self._user
  64. def get_type(self):
  65. if not self._have_use:
  66. raise GarbageBagNotUse
  67. return self._type
  68. def config_use(self, garbage_type: enum, use_time: hgs_time_t, user: uid_t, location: hgs_location_t):
  69. assert not self._have_use
  70. self._have_use = True
  71. if not isinstance(use_time, HGSTime):
  72. use_time = HGSTime(use_time)
  73. if not isinstance(location, HGSLocation):
  74. location = HGSLocation(location)
  75. self._type: enum = garbage_type
  76. self._use_time: HGSTime = use_time
  77. self._user: uid_t = user
  78. self._loc: HGSLocation = location
  79. def config_check(self, use_right: bool, check_uid: uid_t):
  80. assert self._have_use
  81. assert not self._have_check
  82. self._have_check = True
  83. self._check = use_right
  84. self._checker = check_uid