team.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #-*- coding:utf-8 -*-
  2. import json
  3. from rrd import corelib
  4. from rrd import config
  5. from rrd.model.user import User
  6. from rrd.utils.logger import logging
  7. log = logging.getLogger(__file__)
  8. class Team(object):
  9. def __init__(self, id, name, resume, creator, creator_name, users=[]):
  10. self.id = id
  11. self.name = name
  12. self.resume = resume
  13. self.creator = creator #creator id
  14. self.creator_name = creator_name
  15. self.users = users
  16. def __repr__(self):
  17. return "<Team id=%s, name=%s>" % (self.id, self.name)
  18. __str__ = __repr__
  19. def dict(self):
  20. return {
  21. 'id': self.id,
  22. 'name': self.name,
  23. 'resume': self.resume,
  24. 'creator': self.creator,
  25. 'creator_name': self.creator_name,
  26. "users": [u.dict() for u in self.users],
  27. }
  28. @classmethod
  29. def get_team_users(cls, team_id):
  30. h = {"Content-type": "application/json"}
  31. r = corelib.auth_requests("GET", "%s/team/t/%s" \
  32. %(config.API_ADDR, team_id), headers=h)
  33. log.debug("%s:%s" %(r.status_code, r.text))
  34. if r.status_code != 200:
  35. raise Exception("%s %s" %(r.status_code, r.text))
  36. return r.json()
  37. @classmethod
  38. def get_team_users_by_name(cls, team_name):
  39. h = {"Content-type": "application/json"}
  40. r = corelib.auth_requests("GET", "%s/team/name/%s" \
  41. %(config.API_ADDR, team_name), headers=h)
  42. log.debug("%s:%s" %(r.status_code, r.text))
  43. if r.status_code != 200:
  44. raise Exception("%s %s" %(r.status_code, r.text))
  45. return r.json()
  46. @classmethod
  47. def get_teams(cls, query_term, limit=20, page=1):
  48. if not query_term:
  49. query_term = "."
  50. d = {
  51. "q": query_term,
  52. "limit": limit,
  53. "page": page,
  54. }
  55. h = {"Content-type": "application/json"}
  56. r = corelib.auth_requests("GET", "%s/team" \
  57. %(config.API_ADDR,), params=d, headers=h)
  58. log.debug("%s:%s" %(r.status_code, r.text))
  59. if r.status_code != 200:
  60. raise Exception("%s %s" %(r.status_code, r.text))
  61. teams = []
  62. for j in r.json():
  63. users = [User(x["id"], x["name"], x["cnname"], x["email"], x["phone"], x["im"], x["qq"], x["role"]) for x in j['users']]
  64. t = Team(j["team"]["id"], j["team"]["name"], j["team"]["resume"], j["team"]["creator"], j['creator_name'], users)
  65. teams.append(t)
  66. return teams
  67. @classmethod
  68. def create_team(cls, name, resume, user_ids=[]):
  69. h = {"Content-type": "application/json"}
  70. d = {
  71. "team_name": name, "resume": resume, "users": user_ids,
  72. }
  73. r = corelib.auth_requests("POST", "%s/team" %(config.API_ADDR,), \
  74. data=json.dumps(d), headers=h)
  75. log.debug("%s:%s" %(r.status_code, r.text))
  76. if r.status_code != 200:
  77. raise Exception("%s %s" %(r.status_code, r.text))
  78. return r.text
  79. @classmethod
  80. def update_team(cls, team_id, resume, user_ids=[]):
  81. h = {"Content-type": "application/json"}
  82. d = {
  83. "team_id": team_id, "resume": resume, "users": user_ids,
  84. }
  85. r = corelib.auth_requests("PUT", "%s/team" %(config.API_ADDR,), \
  86. data=json.dumps(d), headers=h)
  87. log.debug("%s:%s" %(r.status_code, r.text))
  88. if r.status_code != 200:
  89. raise Exception("%s %s" %(r.status_code, r.text))
  90. return r.text
  91. @classmethod
  92. def delete_team(cls, team_id):
  93. h = {"Content-type": "application/json"}
  94. r = corelib.auth_requests("DELETE", "%s/team/%s" \
  95. %(config.API_ADDR, team_id), headers=h)
  96. log.debug("%s:%s" %(r.status_code, r.text))
  97. if r.status_code != 200:
  98. raise Exception("%s %s" %(r.status_code, r.text))
  99. return r.text