1717
1818from .rest_client import RestAPIClient
1919
20+
2021class Tempo (RestAPIClient ):
2122 """
2223 Basic Client for accessing Tempo Rest API as provided by api.tempo.io.
@@ -32,15 +33,16 @@ def _resolve_date(self, value):
3233 return value .date ()
3334 if isinstance (value , date ):
3435 return value
35-
36+
3637 parsed = datetime .strptime (value , r"%Y-%m-%d" ).date ()
3738
3839 return parsed
3940
4041 def get (self , path , data = None , flags = None , params = None , headers = None , not_json_response = None , trailing = None ):
4142 path_absolute = super ().url_joiner (self ._base_url , path )
42- resp = super ().get (path_absolute , data = data , flags = flags , params = params , headers = headers , not_json_response = not_json_response , trailing = trailing )
43-
43+ resp = super ().get (path_absolute , data = data , flags = flags , params = params , headers = headers ,
44+ not_json_response = not_json_response , trailing = trailing )
45+
4446 # single item returned
4547 if 'results' not in resp :
4648 return resp
@@ -52,7 +54,7 @@ def get(self, path, data=None, flags=None, params=None, headers=None, not_json_r
5254 while 'next' in resp .get ('metadata' ):
5355 resp = super ().get (resp .get ('metadata' ).get ('next' ))
5456 results .extend (resp ['results' ])
55-
57+
5658 return results
5759
5860# Accounts
@@ -63,34 +65,25 @@ def get_accounts(self):
6365 """
6466 return self .get ("/accounts" )
6567
66-
67- # Account - Categories
68-
68+ # Account - Categories
6969 def get_account_categories (self ):
7070 """
7171 Retrieves existing account categories.
7272 """
7373 return self .get ("/account-categories" )
7474
75-
76- # Account - Category - Types
77-
75+ # Account - Category - Types
7876 def get_account_category_types (self ):
79-
8077 """
8178 Retrieves all periods for a given date range as a list.
8279 """
8380 return self .get ("/account-category-types" )
8481
85- # Account - Links
86-
82+ # Account - Links
8783 ## TBD
8884
89-
90- # Customers
91-
85+ # Customers
9286 def get_customers (self , key = None ):
93-
9487 """
9588 Retrieves all customers or customer.
9689 :param key: Return customer for ```key```.
@@ -101,22 +94,18 @@ def get_customers(self, key=None):
10194 url += f"/{ key } "
10295 return self .get (url )
10396
104-
105- # Plans
106-
97+ # Plans
10798 def get_plans (self , dateFrom , dateTo , assigneeType = None , planItemType = None , updatedFrom = None , id = None , userId = None ):
108-
10999 """
110100 Retrieves plans or plan.
111- :param dateFrom:
101+ :param dateFrom:
112102 :param dateTo:
113103 :param assigneeType:
114104 :param planItemType:
115105 :param updatedFrom:
116106 :param id: Plan id
117107 :param userId: ```AccountId``` for user in Tempo
118108 """
119-
120109 params = {
121110 "from" : self ._resolve_date (dateFrom ).isoformat (),
122111 "to" : self ._resolve_date (dateTo ).isoformat (),
@@ -129,27 +118,21 @@ def get_plans(self, dateFrom, dateTo, assigneeType=None, planItemType=None, upda
129118 params ['planItemType' ] = planItemType
130119 if updatedFrom :
131120 params ['updatedFrom' ] = self ._resolve_date (updatedFrom ).isoformat ()
132-
121+
133122 url = "/plans"
134123 if id :
135124 url += f"/{ id } "
136125 elif userId :
137126 url += f"/plans/user/{ userId } "
138127 return self .get (url , params = params )
139128
140-
141- # Programs
142-
129+ # Programs
143130 ## TBD
144131
145-
146- # Roles
147-
132+ # Roles
148133 ## TBD
149134
150-
151- # Teams
152-
135+ # Teams
153136 def get_teams (self , teamId = None ):
154137 """
155138 Returns teams information.
@@ -171,13 +154,10 @@ def get_team_members(self, teamId):
171154 url = f"/teams/{ teamId } /members"
172155 return self .get (url )
173156
174- # Team - Links
175-
176- ## TBD
177-
178-
179- # Team - Memberships
157+ # Team - Links
158+ ## TBD
180159
160+ # Team - Memberships
181161 def get_team_memberships (self , membershipId ):
182162 """
183163 Returns members.
@@ -238,7 +218,6 @@ def get_timesheet_approvals(self, dateFrom=None, dateTo=None, userId=None, teamI
238218 :param userId:
239219 :param teamId:
240220 """
241-
242221 params = {}
243222 if dateFrom :
244223 params ["from" ] = self ._resolve_date (dateFrom ).isoformat ()
@@ -252,8 +231,7 @@ def get_timesheet_approvals(self, dateFrom=None, dateTo=None, userId=None, teamI
252231 url += f"/team/{ teamId } "
253232 return self .get (url , params = params )
254233
255- # User Schedule
256-
234+ # User Schedule
257235 def get_user_schedule (self , dateFrom , dateTo , userId = None ):
258236 """
259237 Returns user schedule.
@@ -271,19 +249,14 @@ def get_user_schedule(self, dateFrom, dateTo, userId=None):
271249 url += f"/{ userId } "
272250 return self .get (url , params = params )
273251
274-
275- # Work Attributes
276-
252+ # Work Attributes
277253 def get_work_attributes (self ):
278254 """
279255 Returns worklog attributes.
280256 """
281-
282257 return self .get ("/work-attributes" )
283258
284-
285- # Workload Schemes
286-
259+ # Workload Schemes
287260 def get_workload_schemes (self , id = None ):
288261 url = f"/workload-schemes"
289262 if id :
@@ -300,7 +273,8 @@ def get_holiday_schemes(self, holidaySchemeId=None):
300273
301274# Worklogs
302275
303- def get_worklogs (self , dateFrom , dateTo , updatedFrom = None , worklogId = None , jiraWorklogId = None , jiraFilterId = None , accountKey = None , projectKey = None , teamId = None , accountId = None , issueId = None ):
276+ def get_worklogs (self , dateFrom , dateTo , updatedFrom = None , worklogId = None , jiraWorklogId = None , jiraFilterId = None ,
277+ accountKey = None , projectKey = None , teamId = None , accountId = None , issueId = None ):
304278 """
305279 Returns worklogs for particular parameters.
306280 :param dateFrom:
0 commit comments