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

users.Users.fetch()   A

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

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