endpoints.tickets.Tickets.unarchive()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 2
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
from .base import Resource, BasicOptions, AssignedUserOptions, AssignedTeamOptions, SortByOptions
2
3
4
# =======================================================
5
# Tickets
6
# =======================================================
7
class Tickets(Resource):
8
    def fetch(self,
9
              per_page:         int                        = 100,
10
              page:             int                        = 1,
11
              archived:         BasicOptions               = None,  # Default = BasicOptions.FALSE,
12
              spam:             bool                       = None,  # Default = False,
13
              trash:            bool                       = None,  # Default = False,
14
              replies:          bool                       = None,
15
              max_replies:      int                        = None,
16
              assigned_user:    int or AssignedUserOptions = None,
17
              assigned_team:    int or AssignedTeamOptions = None,
18
              starred:          bool                       = None,
19
              label:            str                        = None,
20
              since:            str                        = None,
21
              until:            str                        = None,
22
              sort_by:          SortByOptions              = None,  # Default = SortByOptions.LAST_ACTIVITY,
23
              requester_emails: str                        = None,
24
              total_only:       bool                       = None   # Default = False
25
              ):
26
        return self._get("/tickets",
27
                         per_page=per_page,
28
                         page=page,
29
                         archived=archived,
30
                         spam=spam,
31
                         trash=trash,
32
                         replies=replies,
33
                         max_replies=max_replies,
34
                         assigned_user=assigned_user,
35
                         assigned_team=assigned_team,
36
                         starred=starred,
37
                         label=label,
38
                         since=since,
39
                         until=until,
40
                         sort_by=sort_by,
41
                         requester_emails=requester_emails,
42
                         total_only=total_only)
43
44
    def search(self,
45
               query:    str,
46
               per_page: int  = 100,
47
               page:     int  = 1,
48
               spam:     bool = False,
49
               trash:    bool = False):
50
        return self._get("/tickets/search",
51
                         query=query,
52
                         per_page=per_page,
53
                         page=page,
54
                         spam=spam,
55
                         trash=trash)
56
57
    def create(self,
58
               subject:          str,
59
               requester_name:   str,
60
               requester_email:  str,
61
               content:          str,
62
               cc:               str  = None,
63
               bcc:              str  = None,
64
               notify_requester: bool = False,
65
               attachment_ids:   list = None,
66
               content_as_html:  bool = False):
67
        ticket = {
68
            "subject": subject,
69
            "requester_name": requester_name,
70
            "requester_email": requester_email,
71
            "content": {
72
                "html" if content_as_html else "text": content,
73
            },
74
            "notify_requester": notify_requester
75
        }
76
77
        if cc is not None:
78
            ticket["cc"] = cc
79
        if bcc is not None:
80
            ticket["bcc"] = bcc
81
        if attachment_ids is not None:
82
            ticket["content"]["attachment_ids"] = ",".join(attachment_ids)
83
84
        return self._post("/tickets", data={"ticket": ticket})
85
86
    def get(self,
87
            ticket_id: int):
88
        return self._get("/tickets/{ticket_id}".format(ticket_id=ticket_id))
89
90
    def delete(self,
91
               ticket_id: int):
92
        return self._delete("/tickets/{ticket_id}".format(ticket_id=ticket_id))
93
94
    def archive(self,
95
                ticket_id: int):
96
        return self._post("/tickets/{ticket_id}/archive".format(ticket_id=ticket_id))
97
98
    def unarchive(self,
99
                  ticket_id: int):
100
        return self._delete("/tickets/{ticket_id}/archive".format(ticket_id=ticket_id))
101
102
    def markAsAnswered(self,
103
                       ticket_id: int):
104
        return self._post("/tickets/{ticket_id}/answered".format(ticket_id=ticket_id))
105
106
    def markAsUnanswered(self,
107
                         ticket_id: int):
108
        return self._delete("/tickets/{ticket_id}/answered".format(ticket_id=ticket_id))
109
110
    def assignUser(self,
111
                   ticket_id: int,
112
                   user_id: int):
113
        user_assignment = {
114
            "user_id": user_id
115
        }
116
        return self._post("/tickets/{ticket_id}/user_assignment".format(ticket_id=ticket_id),
117
                          data={"user_assignment": user_assignment})
118
119
    def unassignUser(self,
120
                     ticket_id: int):
121
        return self._delete("/tickets/{ticket_id}/user_assignment".format(ticket_id=ticket_id))
122
123
    def assignTeam(self,
124
                   ticket_id: int,
125
                   team_id: int):
126
        team_assignment = {
127
            "team_id": team_id
128
        }
129
        return self._post("/tickets/{ticket_id}/team_assignment".format(ticket_id=ticket_id),
130
                          data={"team_assignment": team_assignment})
131
132
    def unassignTeam(self,
133
                     ticket_id: int):
134
        return self._delete("/tickets/{ticket_id}/team_assignment".format(ticket_id=ticket_id))
135
136
    def star(self,
137
             ticket_id: int):
138
        return self._post("/tickets/{ticket_id}/star".format(ticket_id=ticket_id))
139
140
    def unstar(self,
141
               ticket_id: int):
142
        return self._delete("/tickets/{ticket_id}/star".format(ticket_id=ticket_id))
143
144
    def markAsSpam(self,
145
                   ticket_id: int):
146
        return self._post("/tickets/{ticket_id}/spam".format(ticket_id=ticket_id))
147
148
    def unspam(self,
149
               ticket_id: int):
150
        return self._delete("/tickets/{ticket_id}/spam".format(ticket_id=ticket_id))
151
152
    def markAsTrash(self,
153
                    ticket_id: int):
154
        return self._post("/tickets/{ticket_id}/trash".format(ticket_id=ticket_id))
155
156
    def untrash(self,
157
                ticket_id: int):
158
        return self._delete("/tickets/{ticket_id}/trash".format(ticket_id=ticket_id))
159