@@ -61,6 +61,10 @@ def post(self, path, data=None, params=None, headers=None, not_json_response=Non
6161 path_absolute = super ().url_joiner (self ._base_url , path )
6262 return super ().post (path_absolute , data = data , params = params , headers = headers , trailing = trailing )
6363
64+ def put (self , path , data = None , params = None , headers = None , not_json_response = None , trailing = None ):
65+ path_absolute = super ().url_joiner (self ._base_url , path )
66+ return super ().put (path_absolute , data = data , params = params , headers = headers , trailing = trailing )
67+
6468 def delete (self , path , data = None , params = None , headers = None , not_json_response = None , trailing = None ):
6569 path_absolute = super ().url_joiner (self ._base_url , path )
6670 return super ().delete (path_absolute , headers = headers , trailing = trailing )
@@ -183,16 +187,16 @@ def get_plans(self, dateFrom=None, dateTo=None, id=None, accountId=None, account
183187 return self .post (url , data = data )
184188 return
185189
186- def get_plan (self ,id ):
190+ def get_plan (self , id ):
187191 return self .get_plans (id = id )
188192
189- def get_plan_for_user (self ,accountId , plannedTimeBreakdown = None , dateFrom = None , dateTo = None , updatedFrom = None ):
193+ def get_plan_for_user (self , accountId , plannedTimeBreakdown = None , dateFrom = None , dateTo = None , updatedFrom = None ):
190194 return self .get_plans (accountId = accountId , plannedTimeBreakdown = plannedTimeBreakdown , dateFrom = dateFrom , dateTo = dateTo , updatedFrom = updatedFrom )
191195
192- def get_plan_for_resource (self ,genericResourceId , plannedTimeBreakdown = None , dateFrom = None , dateTo = None , updatedFrom = None ):
196+ def get_plan_for_resource (self , genericResourceId , plannedTimeBreakdown = None , dateFrom = None , dateTo = None , updatedFrom = None ):
193197 return self .get_plans (genericResourceId = genericResourceId , plannedTimeBreakdown = plannedTimeBreakdown , dateFrom = dateFrom , dateTo = dateTo , updatedFrom = updatedFrom )
194198
195- def search_plans (self ,dateFrom , dateTo , accountIds = None , assigneeTypes = None , genericResourceIds = None , planIds = None , planItemIds = None , planItemTypes = None , plannedTimeBreakdown = None , updatedFrom = None ):
199+ def search_plans (self , dateFrom , dateTo , accountIds = None , assigneeTypes = None , genericResourceIds = None , planIds = None , planItemIds = None , planItemTypes = None , plannedTimeBreakdown = None , updatedFrom = None ):
196200 return self .get_plans (dateFrom = dateFrom , dateTo = dateTo , accountIds = accountIds , assigneeTypes = assigneeTypes , genericResourceIds = genericResourceIds , planIds = planIds , planItemIds = planItemIds , planItemTypes = planItemTypes , plannedTimeBreakdown = plannedTimeBreakdown , updatedFrom = updatedFrom )
197201
198202 def create_plan (self , assigneeId , assigneeType , startDate , endDate , planItemId , planItemType , plannedSecondsPerDay , description = None , includeNonWorkingDays = None , planApprovalReviewerId = None , planApprovalStatus = None , recurrenceEndDate = None , rule = None ):
@@ -211,30 +215,37 @@ def create_plan(self, assigneeId, assigneeType, startDate, endDate, planItemId,
211215 :param recurrenceEndDate:
212216 :param rule:
213217 """
214- params = {
218+ data = {
215219 "assigneeId" : assigneeId ,
216- "assigneeType" : assigneeType ,
220+ "assigneeType" : assigneeType , # Enum: "USER" "GENERIC"
217221 "startDate" : self ._resolve_date (startDate ).isoformat (),
218222 "endDate" : self ._resolve_date (endDate ).isoformat (),
219223 "planItemId" : planItemId ,
220- "planItemType" : planItemType ,
224+ "planItemType" : planItemType , # Enum: "ISSUE" "PROJECT"
221225 "plannedSecondsPerDay" : plannedSecondsPerDay
222226 }
223227 if description :
224- params ['description' ] = description
228+ data ['description' ] = description
225229 if includeNonWorkingDays :
226- params ['includeNonWorkingDays' ] = includeNonWorkingDays
230+ data ['includeNonWorkingDays' ] = includeNonWorkingDays
227231 if planApprovalReviewerId :
228- params ['planApprovalReviewerId' ] = planApprovalReviewerId
229- if planApprovalStatus :
230- params ['accounplanApprovalStatustIds' ] = planApprovalStatus
232+ if not planApprovalStatus :
233+ data ['planApproval' ] = {
234+ "reviewerId" : planApprovalReviewerId ,
235+ "status" : "REQUESTED"
236+ }
237+ else :
238+ data ['planApproval' ] = {
239+ "reviewerId" : planApprovalReviewerId ,
240+ "status" : planApprovalStatus # Enum: "APPROVED" "REJECTED" "REQUESTED"
241+ }
231242 if recurrenceEndDate :
232- params ['recurrenceEndDate' ] = recurrenceEndDate
243+ data ['recurrenceEndDate' ] = recurrenceEndDate
233244 if rule :
234- params ['rule' ] = rule
245+ data ['rule' ] = rule # Enum: "NEVER" "WEEKLY" "BI_WEEKLY" "MONTHLY"
235246
236247 url = "/plans"
237- return self .post (url , params = params )
248+ return self .post (url , data = data )
238249
239250 def update_plan (self , id , assigneeId , assigneeType , startDate , endDate , planItemId , planItemType , plannedSecondsPerDay , description = None , includeNonWorkingDays = None , planApprovalReviewerId = None , planApprovalStatus = None , recurrenceEndDate = None , rule = None ):
240251 """
@@ -253,30 +264,37 @@ def update_plan(self, id, assigneeId, assigneeType, startDate, endDate, planItem
253264 :param recurrenceEndDate:
254265 :param rule:
255266 """
256- params = {
267+ data = {
257268 "assigneeId" : assigneeId ,
258- "assigneeType" : assigneeType ,
269+ "assigneeType" : assigneeType , # Enum: "USER" "GENERIC"
259270 "startDate" : self ._resolve_date (startDate ).isoformat (),
260271 "endDate" : self ._resolve_date (endDate ).isoformat (),
261272 "planItemId" : planItemId ,
262- "planItemType" : planItemType ,
273+ "planItemType" : planItemType , # Enum: "ISSUE" "PROJECT"
263274 "plannedSecondsPerDay" : plannedSecondsPerDay
264275 }
265276 if description :
266- params ['description' ] = description
277+ data ['description' ] = description
267278 if includeNonWorkingDays :
268- params ['includeNonWorkingDays' ] = includeNonWorkingDays
279+ data ['includeNonWorkingDays' ] = includeNonWorkingDays
269280 if planApprovalReviewerId :
270- params ['planApprovalReviewerId' ] = planApprovalReviewerId
271- if planApprovalStatus :
272- params ['accounplanApprovalStatustIds' ] = planApprovalStatus
281+ if not planApprovalStatus :
282+ data ['planApproval' ] = {
283+ "reviewerId" : planApprovalReviewerId ,
284+ "status" : "REQUESTED"
285+ }
286+ else :
287+ data ['planApproval' ] = {
288+ "reviewerId" : planApprovalReviewerId ,
289+ "status" : planApprovalStatus # Enum: "APPROVED" "REJECTED" "REQUESTED"
290+ }
273291 if recurrenceEndDate :
274- params ['recurrenceEndDate' ] = recurrenceEndDate
292+ data ['recurrenceEndDate' ] = recurrenceEndDate
275293 if rule :
276- params ['rule' ] = rule
294+ data ['rule' ] = rule # Enum: "NEVER" "WEEKLY" "BI_WEEKLY" "MONTHLY"
277295
278296 url = f"/plans/{ id } "
279- return self .put (url , params = params )
297+ return self .put (url , data = data )
280298
281299 def delete_plan (self , id ):
282300 url = f"/plans/{ id } "
0 commit comments