Passed
Branch test (567fee)
by Alexis
01:21
created

customer_groups   A

Complexity

Total Complexity 16

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 60
dl 0
loc 74
rs 10
c 0
b 0
f 0
wmc 16

5 Methods

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