1
|
|
|
from .base import Resource, UserRoles |
2
|
|
|
|
3
|
|
|
|
4
|
|
|
# ======================================================= |
5
|
|
|
# Customer Groups |
6
|
|
|
# ======================================================= |
7
|
|
|
class CustomerGroups(Resource): |
8
|
|
|
def fetch(self, |
9
|
|
|
with_invited: bool = False, |
10
|
|
|
with_roles: list = (UserRoles.ADMIN, UserRoles.AGENT, UserRoles.COLLABORATOR)): |
11
|
|
|
roles = ",".join([role.value[0] for role in with_roles]) |
12
|
|
|
return self._get("/users", with_invited=with_invited, with_roles=roles, type="customer_group") |
13
|
|
|
|
14
|
|
|
def create(self, |
15
|
|
|
name: str, |
16
|
|
|
role: UserRoles = None, |
17
|
|
|
team_ids: list = None, |
18
|
|
|
can_members_access_group_tickets: bool = None, |
19
|
|
|
email_domains: list = None): |
20
|
|
|
customer_group = { |
21
|
|
|
"name": name, |
22
|
|
|
"type": "customer_group" |
23
|
|
|
} |
24
|
|
|
if role is not None: |
25
|
|
|
customer_group["role"] = role.value[1] |
26
|
|
|
if team_ids is not None: |
27
|
|
|
customer_group["team_ids"] = ",".join(team_ids) |
28
|
|
|
if can_members_access_group_tickets is not None: |
29
|
|
|
customer_group["can_members_access_group_tickets"] = can_members_access_group_tickets |
30
|
|
|
if email_domains is not None: |
31
|
|
|
customer_group["email_domains"] = ",".join(email_domains) |
32
|
|
|
return self._post("/users", data={"user": customer_group}) |
33
|
|
|
|
34
|
|
|
def update(self, |
35
|
|
|
group_id: int, |
36
|
|
|
first_name: str = None, |
37
|
|
|
last_name: str = None, |
38
|
|
|
role: UserRoles = None, |
39
|
|
|
team_ids: list = None, |
40
|
|
|
can_members_access_group_tickets: bool = None, |
41
|
|
|
email_domains: list = None): |
42
|
|
|
customer_group = { |
43
|
|
|
"type": "customer_group" |
44
|
|
|
} |
45
|
|
|
|
46
|
|
|
if first_name is not None: |
47
|
|
|
customer_group["first_name"] = first_name |
48
|
|
|
if last_name is not None: |
49
|
|
|
customer_group["last_name"] = last_name |
50
|
|
|
if role is not None: |
51
|
|
|
customer_group["role"] = role.value[1] |
52
|
|
|
if team_ids is not None: |
53
|
|
|
customer_group["team_ids"] = ",".join(team_ids) |
54
|
|
|
if can_members_access_group_tickets is not None: |
55
|
|
|
customer_group["can_members_access_group_tickets"] = can_members_access_group_tickets |
56
|
|
|
if email_domains is not None: |
57
|
|
|
customer_group["email_domains"] = ",".join(email_domains) |
58
|
|
|
|
59
|
|
|
if len(customer_group.keys()) == 1: |
60
|
|
|
return # No update called |
61
|
|
|
|
62
|
|
|
return self._post("/users/{user_id}".format(user_id=group_id), data={"user": customer_group}) |
63
|
|
|
|
64
|
|
|
def fetchMembers(self, |
65
|
|
|
group_id: int): |
66
|
|
|
return self._get("/users/{group_id}/members".format(group_id=group_id)) |
67
|
|
|
|
68
|
|
|
def addMember(self, |
69
|
|
|
group_id: int, |
70
|
|
|
member_id: int): |
71
|
|
|
member = { |
72
|
|
|
"id": member_id |
73
|
|
|
} |
74
|
|
|
return self._post("/users/{group_id}/members".format(group_id=group_id), data={"member": member}) |
75
|
|
|
|