1414 MilestoneNotRequestedReleaseException , MilestoneNotCancelledException ,
1515 MilestoneRequestNotCreatedException , MilestoneRequestNotAcceptedException ,
1616 MilestoneRequestNotRejectedException , MilestoneRequestNotDeletedException ,
17+ MilestonesNotFoundException ,
1718 ReviewNotPostedException ,
1819 JobsNotFoundException
1920)
21+
22+ from freelancersdk .resources .projects .helpers import (
23+ create_get_projects_user_details_object
24+ )
2025from freelancersdk .resources .projects import (
2126 make_get_request , make_post_request , make_put_request ,
2227)
@@ -222,7 +227,53 @@ def get_bids(session, project_ids=[], bid_ids=[], limit=10, offset=0):
222227 return json_data ['result' ]
223228 else :
224229 raise BidsNotFoundException (
225- message = json_data ['message' ], error_code = json_data ['error_code' ])
230+ message = json_data ['message' ], error_code = json_data ['error_code' ]
231+ )
232+
233+
234+ def get_milestones (session , project_ids = [], milestone_ids = [], user_details = None , limit = 10 , offset = 0 ):
235+ """
236+ Get the list of milestones
237+ """
238+ get_milestones_data = {}
239+ if milestone_ids :
240+ get_milestones_data ['milestones[]' ] = milestone_ids
241+ if project_ids :
242+ get_milestones_data ['projects[]' ] = project_ids
243+ get_milestones_data ['limit' ] = limit
244+ get_milestones_data ['offset' ] = offset
245+
246+ # Add projections if they exist
247+ if user_details :
248+ get_milestones_data .update (user_details )
249+
250+ # GET /api/projects/0.1/milestones/
251+
252+ response = make_get_request (session , 'milestones' , params_data = get_milestones_data )
253+ json_data = response .json ()
254+ if response .status_code == 200 :
255+ return json_data ['result' ]
256+ else :
257+ raise MilestonesNotFoundException (
258+ message = json_data ['message' ], error_code = json_data ['error_code' ]
259+ )
260+
261+
262+ def get_milestone_by_id (session , milestone_id , user_details = None ):
263+ """
264+ Get a specific milestone
265+ """
266+ # GET /api/projects/0.1/milestones/{milestone_id}/
267+ endpoint = 'milestones/{}' .format (milestone_id )
268+
269+ response = make_get_request (session , endpoint , params_data = user_details )
270+ json_data = response .json ()
271+ if response .status_code == 200 :
272+ return json_data ['result' ]
273+ else :
274+ raise MilestonesNotFoundException (
275+ message = json_data ['message' ], error_code = json_data ['error_code' ]
276+ )
226277
227278
228279def award_project_bid (session , bid_id ):
@@ -244,8 +295,10 @@ def award_project_bid(session, bid_id):
244295 return json_data ['status' ]
245296 else :
246297 json_data = response .json ()
247- raise BidNotAwardedException (message = json_data ['message' ],
248- error_code = json_data ['error_code' ])
298+ raise BidNotAwardedException (
299+ message = json_data ['message' ],
300+ error_code = json_data ['error_code' ]
301+ )
249302
250303
251304def revoke_project_bid (session , bid_id ):
0 commit comments