Passed
Push — main ( 8785b1...fdb7a5 )
by Alexis
01:04
created

endpoints.users.Users.create()   A

Complexity

Conditions 3

Size

Total Lines 15
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 14
nop 5
dl 0
loc 15
rs 9.7
c 0
b 0
f 0
1
from .base import Resource, UserRoles
2
3
4
# =======================================================
5
# Users
6
# =======================================================
7
class Users(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="user")
13
14
    def get(self,
15
            user_id:     bool,
16
            max_tickets: False or int = 5  # False = all tickets
17
            ):
18
        return self._get("/users/{user_id}".format(user_id=user_id), max_tickets=max_tickets)
19
20
    def create(self,
21
               email:    str,
22
               name:     str,
23
               role:     UserRoles = None,
24
               team_ids: list      = None):
25
        user = {
26
            "email": email,
27
            "name": name,
28
            "type": "user"
29
        }
30
        if role is not None:
31
            user["role"] = role.value[1]
32
        if team_ids is not None:
33
            user["team_ids"] = ",".join(team_ids)
34
        return self._post("/users", data={"user": user})
35
36
    def update(self,
37
               user_id:    int,
38
               email:      str       = None,
39
               first_name: str       = None,
40
               last_name:  str       = None,
41
               role:       UserRoles = None,
42
               team_ids:   list      = None):
43
        user = {
44
            "type": "user"
45
        }
46
47
        if email is not None:
48
            user["email"] = email
49
        if first_name is not None:
50
            user["first_name"] = first_name
51
        if last_name is not None:
52
            user["last_name"] = last_name
53
        if role is not None:
54
            user["role"] = role.value[1]
55
        if team_ids is not None:
56
            user["team_ids"] = ",".join(team_ids)
57
58
        if len(user.keys()) == 1:
59
            return  # No update called
60
61
        return self._post("/users/{user_id}".format(user_id=user_id), data={"user": user})
62