@@ -70,40 +70,170 @@ def _single(self, url, **params):
7070 response = requests .get (url , params = params , headers = headers )
7171 response .raise_for_status ()
7272 data = response .json ()
73- yield data
73+ return data
74+
75+
76+ # Accounts
7477
7578 def get_accounts (self ):
7679 """
7780 Retrieve existing accounts as a dictionary.
7881 """
7982 return { x ["key" ]: x for x in self ._list ("/accounts" ) }
8083
84+
85+ # Account - Categories
86+
8187 def get_account_categories (self ):
8288 """
8389 Retrieve existing account categories as a dictionary.
8490 """
8591 return { x ["key" ]: x for x in self ._list ("/account-categories" ) }
8692
93+
94+ # Account - Category - Types
95+
8796 def get_account_category_types (self ):
97+
8898 """
8999 Retrieve all periods for a given date range as a list.
90100 """
91101 return self ._list ("/account-category-types" )
92102
93- def get_periods (self , date_from , date_to ):
103+ # Account - Links
104+
105+ ## TBD
106+
107+
108+ # Customers
109+
110+ ## TBD
111+
112+
113+ # Plans
114+
115+ ## TBD
116+
117+
118+ # Programs
119+
120+ ## TBD
121+
122+
123+ # Roles
124+
125+ ## TBD
126+
127+
128+ # Teams
129+
130+ def get_teams (self , teamId = None ):
131+ """
132+ Returns ```teams```.
133+ """
134+
135+ url = f"/teams"
136+ if (teamId ):
137+ url += f"/{ teamId } "
138+
139+ return self ._single (url )
140+
141+ def get_team_members (self , teamId ):
142+ """
143+ Returns members for particular ```team```.
144+ """
145+
146+ url = f"/teams/{ teamId } /members"
147+ return self ._single (url )
148+
149+ # Team - Links
150+
151+ ## TBD
152+
153+
154+ # Team - Memberships
155+
156+ def get_team_memberships (self , membershipId ):
157+ """
158+ Returns members for particular ```team membershipId```.
159+ """
160+
161+ url = f"/team-memberships/{ membershipId } "
162+ return self ._single (url )
163+
164+ def get_account_team_membership (self , teamId , accountId ):
165+ """
166+ Returns the active team membership of a specific ```accountId``` in a specific ```teamId```.
167+ """
168+
169+ url = f"/teams/{ teamId } /members/{ accountId } "
170+ return self ._list (url )
171+
172+ def get_account_team_memberships (self , teamId , accountId ):
173+ """
174+ Returns all team memberships of a specific ```accountId``` in a specific ```teamId```.
175+ """
176+
177+ url = f"/teams/{ teamId } /members/{ accountId } /memberships"
178+ return self ._list (url )
179+
180+ # Periods
181+
182+ def get_periods (self , dateFrom , dateTo ):
94183 """
95184 Retrieve periods as a list.
96185 """
97186 params = {
98- "from" : self ._resolve_date (date_from ).isoformat (),
99- "to" : self ._resolve_date (date_to ).isoformat ()
187+ "from" : self ._resolve_date (dateFrom ).isoformat (),
188+ "to" : self ._resolve_date (dateTo ).isoformat ()
100189 }
101190
102- return self ._list ("/periods" , ** params )
191+ return self ._single ("/periods" , ** params )
192+
193+ # Timesheet Approvals
194+
195+ def get_timesheet_approvals_waiting (self ):
196+ url = f"/timesheet-approvals/waiting"
197+ params = { "limit" : self .MAX_RESULTS }
198+ return self ._list (url , ** params )
199+
200+ def get_timesheet_approvals (self , dateFrom = None , dateTo = None , userId = None , teamId = None ):
201+ params = {}
202+ if dateFrom :
203+ params ["from" ] = self ._resolve_date (dateFrom ).isoformat ()
204+ if dateTo :
205+ params ["to" ] = self ._resolve_date (dateTo ).isoformat ()
206+
207+ url = f"/timesheet-approvals"
208+ if userId :
209+ url += f"/user/{ userId } "
210+ elif teamId :
211+ url += f"/team/{ teamId } "
212+ return self ._single (url , ** params )
213+
214+ # User Schedule
215+
216+ def get_user_schedule (self , dateFrom , dateTo , userId = None ):
217+ """
218+ Returns user schedule inside ```dateFrom``` and ```dateTo```,
219+ for particular ```userId```.
220+ """
221+ params = {
222+ "from" : self ._resolve_date (dateFrom ).isoformat (),
223+ "to" : self ._resolve_date (dateTo ).isoformat (),
224+ "limit" : self .MAX_RESULTS
225+ }
226+ url = "/user-schedule"
227+ if userId :
228+ url += f"/{ userId } "
229+ return self ._list (url , ** params )
230+
231+
232+ # Work Attributes
103233
104234 def get_work_attributes (self ):
105235 """
106- Returns worklog attributes inside ```date_from ``` and ```date_to ```,
236+ Returns worklog attributes inside ```dateFrom ``` and ```dateTo ```,
107237 for particular ```user```, adding work attributes if ```add_work_attributes```.
108238 """
109239 return { x ["key" ]: x for x in self ._list ("/work-attributes" ) }
@@ -130,78 +260,47 @@ def add_worklog_attributes(self, worklogs):
130260
131261 yield worklog
132262
133- def get_all_worklogs (self , date_from , date_to ):
134- date_from = self ._resolve_date (date_from ).isoformat ()
135- date_to = self ._resolve_date (date_to ).isoformat ()
136- url = f"/worklogs"
137- params = { "from" : date_from , "to" : date_to , "limit" : self .MAX_RESULTS }
138- return self ._list (url , ** params )
139-
140- def get_user_worklogs (self , date_from , date_to , userid ):
141- """
142- Returns worklogs inside ```date_from``` and ```date_to```,
143- for particular ```user```.
144- """
145-
146- date_from = self ._resolve_date (date_from ).isoformat ()
147- date_to = self ._resolve_date (date_to ).isoformat ()
148- url = f"/worklogs/user/{ userid } "
149- params = { "from" : date_from , "to" : date_to , "limit" : self .MAX_RESULTS }
150- return self ._list (url , ** params )
263+ # Workload Schemes
151264
152- def get_team_worklogs (self , date_from , date_to , teamid ):
153- """
154- Returns worklogs inside ```date_from``` and ```date_to```,
155- for particular ```team```.
156- """
265+ ## TBD
157266
158- date_from = self ._resolve_date (date_from ).isoformat ()
159- date_to = self ._resolve_date (date_to ).isoformat ()
160- url = f"/worklogs/team/{ teamid } "
161- params = { "from" : date_from , "to" : date_to , "limit" : self .MAX_RESULTS }
162- return self ._list (url , ** params )
267+ # Holiday Schemes
163268
164- def get_team_members (self , teamid ):
165- """
166- Returns members for particular ```team```.
167- """
168-
169- url = f"/teams/{ teamid } /members"
269+ def get_holiday_schemes (self , holidaySchemeId = None ):
270+ url = f"/holiday-schemes"
271+ if holidaySchemeId :
272+ url += f"/{ holidaySchemeId } /holidays"
170273 return self ._list (url )
171274
172- def get_team_memberships (self , membershipid ):
173- """
174- Returns members for particular ```team membership id```.
175- """
176-
177- url = f"/team-memberships/{ membershipid } "
178- return self ._single (url )
275+ # Worklogs
179276
180- def get_account_team_membership (self , teamid , accountid ):
277+ def get_worklogs (self , dateFrom , dateTo , worklogId = None , jiraWorklogId = None , jiraFilterId = None , accountKey = None , projectKey = None , teamId = None , accountId = None , issue = None ):
181278 """
182- Returns the active team membership of a specific ```accountid``` in a specific ```teamid```.
279+ Returns worklogs inside ```dateFrom``` and ```dateTo```,
280+ for particular parameter: ```worklogId```, ```jiraWorklogId```, ```jiraFilterId```, ```accountKey```, ```projectKey```, ```teamId```, ```accountId```, ```issue```.
183281 """
184282
185- url = f"/teams/{ teamid } /members/{ accountid } "
186- return self ._single (url )
187-
188- def get_account_team_memberships (self , teamid , accountid ):
189- """
190- Returns all team memberships of a specific ```accountid``` in a specific ```teamid```.
191- """
192-
193- url = f"/teams/{ teamid } /members/{ accountid } /memberships"
194- return self ._list (url )
283+ params = {
284+ "from" : self ._resolve_date (dateFrom ).isoformat (),
285+ "to" : self ._resolve_date (dateTo ).isoformat (),
286+ "limit" : self .MAX_RESULTS
287+ }
288+ url = f"/worklogs"
289+ if worklogId :
290+ url += f"/{ worklogId } "
291+ elif jiraWorklogId :
292+ url += f"/jira/{ jiraWorklogId } "
293+ elif jiraFilterId :
294+ url += f"/jira/filter/{ jiraFilterId } "
295+ elif accountKey :
296+ url += f"/account/{ accountKey } "
297+ elif projectKey :
298+ url += f"/project/{ projectKey } "
299+ elif teamId :
300+ url += f"/team/{ teamId } "
301+ elif accountId :
302+ url += f"/user/{ accountId } "
303+ elif issue :
304+ url += f"/issue/{ issue } "
195305
196- def get_user_schedule (self , date_from , date_to , user = None ):
197- """
198- Returns user schedule inside ```date_from``` and ```date_to```,
199- for particular ```user```.
200- """
201- date_from = self ._resolve_date (date_from ).isoformat ()
202- date_to = self ._resolve_date (date_to ).isoformat ()
203- url = "/user-schedule"
204- if user is not None :
205- url += "/{}" .format (user )
206- params = { "from" : date_from , "to" : date_to , "limit" : self .MAX_RESULTS }
207306 return self ._list (url , ** params )
0 commit comments