Skip to content

Commit 3fd2987

Browse files
author
Yordy Gelvez
committed
new methods to deals, persons, activities, webhooks
1 parent f8c1e5e commit 3fd2987

File tree

1 file changed

+262
-3
lines changed

1 file changed

+262
-3
lines changed

pipedrive/client.py

Lines changed: 262 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,18 +147,277 @@ def set_token(self, token):
147147
if token:
148148
self.token = token
149149

150+
def get_recent_changes(self, **kwargs):
151+
"""
152+
This method Returns data about all recent changes occured after given timestamp. in kwarg must to send "since_timestamp" with this format: YYYY-MM-DD HH:MM:SS
153+
:param kwargs:
154+
:return:
155+
"""
156+
if kwargs is not None:
157+
url = "recents"
158+
return self._get(url, **kwargs)
159+
160+
# Deals section, see the api documentation: https://developers.pipedrive.com/docs/api/v1/#!/Deals
150161
def get_deals(self, **kwargs):
151-
url = "{0}/deals".format(self.api_base_url)
162+
url = "deals"
152163
return self._get(url, **kwargs)
153164

154165
def create_deal(self, **kwargs):
155-
url = "{0}/deals".format(self.api_base_url)
166+
url = "deals"
156167
if kwargs is not None:
157168
params = {}
158169
params.update(kwargs)
159170
return self._post(url, json=params)
160171

172+
def update_deal(self, deal_id, **kwargs):
173+
if deal_id is not None and kwargs is not None:
174+
url = "deals/{0}".format(deal_id)
175+
params = {}
176+
params.update(kwargs)
177+
return self._put(url, json=params)
178+
179+
def delete_deal(self, deal_id):
180+
if deal_id is not None:
181+
url = "deals/{0}".format(deal_id)
182+
return self._delete(url)
183+
161184
def duplicate_deal(self, deal_id):
162185
if deal_id is not None:
163-
url = "{0}/deals/{1}/duplicate".format(self.api_base_url, deal_id)
186+
url = "deals/{0}/duplicate".format(deal_id)
164187
return self._post(url)
188+
189+
def get_deal_details(self, deal_id):
190+
if deal_id is not None:
191+
url = "deals/{0}".format(deal_id)
192+
return self._get(url)
193+
194+
def get_deals_by_name(self, params=None):
195+
if params is not None:
196+
url = "deals/find"
197+
return self._get(url, params=params)
198+
199+
def get_deal_followers(self, deal_id):
200+
if deal_id is not None:
201+
url = "deals/{0}/followers".format(deal_id)
202+
return self._get(url)
203+
204+
def add_follower_to_deal(self, deal_id, user_id):
205+
if deal_id is not None and user_id is not None:
206+
url = "deals/{0}/followers".format(deal_id)
207+
return self._post(url, json=user_id)
208+
209+
def delete_follower_to_deal(self, deal_id, follower_id):
210+
if deal_id is not None and follower_id is not None:
211+
url = "deals/{0}/followers/{1}".format(deal_id, follower_id)
212+
return self._delete(url)
213+
214+
def get_deal_participants(self, deal_id, **kwargs):
215+
if deal_id is not None:
216+
url = "deals/{0}/participants".format(deal_id)
217+
return self._get(url, **kwargs)
218+
219+
def add_participants_to_deal(self, deal_id, participant_id):
220+
if deal_id is not None and participant_id is not None:
221+
url = "deals/{0}/participants".format(deal_id)
222+
return self._post(url, json=participant_id)
223+
224+
def delete_participant_to_deal(self, deal_id, participant_id):
225+
if deal_id is not None and participant_id is not None:
226+
url = "deals/{0}/participants/{1}".format(deal_id, participant_id)
227+
return self._delete(url)
228+
229+
def get_deal_activities(self, deal_id, **kwargs):
230+
if deal_id is not None:
231+
url = "deals/{0}/activities".format(deal_id)
232+
return self._get(url, **kwargs)
233+
234+
def get_deal_mail_messages(self, deal_id, **kwargs):
235+
if deal_id is not None:
236+
url = "deals/{0}/mailMessages".format(deal_id)
237+
return self._get(url, **kwargs)
238+
239+
def get_deal_products(self, deal_id, **kwargs):
240+
if deal_id is not None:
241+
url = "deals/{0}/products".format(deal_id)
242+
return self._get(url, **kwargs)
243+
244+
# Notes section, see the api documentation: https://developers.pipedrive.com/docs/api/v1/#!/Notes
245+
def get_notes(self, note_id=None, **kwargs):
246+
if note_id is not None:
247+
url = "notes/{0}".format(note_id)
248+
else:
249+
url = "notes"
250+
return self._get(url, **kwargs)
251+
252+
def create_note(self, **kwargs):
253+
if kwargs is not None:
254+
url = "notes"
255+
params = {}
256+
params.update(kwargs)
257+
return self._post(url, json=params)
258+
259+
def update_note(self, note_id, **kwargs):
260+
if note_id is not None and kwargs is not None:
261+
url = "notes/{0}".format(note_id)
262+
params = {}
263+
params.update(kwargs)
264+
return self._put(url, json=params)
265+
266+
def delete_note(self, note_id):
267+
if note_id is not None:
268+
url = "notes/{0}".format(note_id)
269+
return self._delete(url)
270+
271+
# Organizations section, see the api documentation: https://developers.pipedrive.com/docs/api/v1/#!/Organizations
272+
def get_organizations(self, **kwargs):
273+
url = "organizations"
274+
return self._get(url, **kwargs)
275+
276+
def create_organization(self, **kwargs):
277+
if kwargs is not None:
278+
url = "organizations"
279+
params = {}
280+
params.update(kwargs)
281+
return self._post(url, json=params)
282+
283+
def update_organization(self, data_id, **kwargs):
284+
if data_id is not None:
285+
url = "organizations/{0}".format(data_id)
286+
params = {}
287+
params.update(kwargs)
288+
return self._put(url, json=params)
289+
290+
def delete_organization(self, data_id):
291+
if data_id is not None:
292+
url = "organizations/{0}".format(data_id)
293+
return self._delete(url)
294+
295+
# Persons section, see the api documentation: https://developers.pipedrive.com/docs/api/v1/#!/Persons
296+
def get_persons(self, **kwargs):
297+
url = "persons"
298+
return self._get(url, **kwargs)
299+
300+
def get_persons_by_name(self, params=None):
301+
if params is not None:
302+
url = "persons/find"
303+
return self._get(url, params=params)
304+
305+
def get_person_details(self, person_id):
306+
if person_id is not None:
307+
url = "persons/{0}".format(person_id)
308+
return self._get(url)
309+
310+
def create_person(self, **kwargs):
311+
if kwargs is not None:
312+
url = "persons"
313+
params = {}
314+
params.update(kwargs)
315+
return self._post(url, json=params)
316+
317+
def update_person(self, data_id, **kwargs):
318+
if data_id is not None and kwargs is not None:
319+
url = "persons/{0}".format(data_id)
320+
params = {}
321+
params.update(kwargs)
322+
return self._put(url, json=params)
323+
324+
def delete_person(self, data_id):
325+
if data_id is not None:
326+
url = "persons/{0}".format(data_id)
327+
return self._delete(url)
328+
329+
def get_person_deals(self, person_id, **kwargs):
330+
if person_id is not None:
331+
url = "persons/{0}/deals".format(person_id)
332+
return self._get(url, **kwargs)
333+
334+
# Products section, see the api documentation: https://developers.pipedrive.com/docs/api/v1/#!/Products
335+
def get_products(self, product_id=None, **kwargs):
336+
if product_id is not None:
337+
url = "products/{0}".format(product_id)
338+
else:
339+
url = "products"
340+
return self._get(url, **kwargs)
341+
342+
def get_product_by_name(self, params=None):
343+
if params is not None:
344+
url = "products/find"
345+
return self._get(url, params=params)
346+
347+
def create_product(self, **kwargs):
348+
if kwargs is not None:
349+
url = "products"
350+
params = {}
351+
params.update(kwargs)
352+
return self._post(url, json=params)
353+
354+
def update_product(self, product_id, **kwargs):
355+
if product_id is not None and kwargs is not None:
356+
url = "products/{0}".format(product_id)
357+
params = {}
358+
params.update(kwargs)
359+
return self._put(url, json=params)
360+
361+
def delete_product(self, product_id):
362+
if product_id is not None:
363+
url = "products/{0}".format(product_id)
364+
return self._delete(url)
365+
366+
def get_product_deal(self, product_id, **kwargs):
367+
if product_id is not None:
368+
url = "products/{0}/deals".format(product_id)
369+
return self._get(url, **kwargs)
370+
371+
# Activities section, see the api documentation: https://developers.pipedrive.com/docs/api/v1/#!/Activities
372+
def get_activities(self, **kwargs):
373+
url = "activities"
374+
return self._get(url, **kwargs)
375+
376+
def get_activity_details(self, activity_id):
377+
if activity_id is not None:
378+
url = "activities/{0}".format(activity_id)
379+
return self._get(url)
380+
381+
def create_activity(self, **kwargs):
382+
if kwargs is not None:
383+
url = "activities"
384+
params = {}
385+
params.update(kwargs)
386+
return self._post(url, json=params)
387+
388+
def update_activity(self, activity_id, **kwargs):
389+
if activity_id is not None and kwargs is not None:
390+
url = "activities/{0}".format(activity_id)
391+
params = {}
392+
params.update(kwargs)
393+
return self._put(url, json=params)
394+
395+
def delete_activity(self, activity_id):
396+
if activity_id is not None:
397+
url = "activities/{0}".format(activity_id)
398+
return self._delete(url)
399+
400+
# Webhook section, see the api documentation: https://developers.pipedrive.com/docs/api/v1/#!/Webhooks
401+
def get_hooks_subscription(self):
402+
url = "webhooks"
403+
return self._get(url)
404+
405+
def create_hook_subscription(self, subscription_url, event_action, event_object, **kwargs):
406+
if subscription_url is not None and event_action is not None and event_object is not None:
407+
args = {"subscription_url": subscription_url, "event_action": event_action, "event_object": event_object}
408+
if kwargs is not None:
409+
args.update(kwargs)
410+
return self._post(endpoint='webhooks', json=args)
411+
else:
412+
raise Exception("The attributes necessary to create the webhook were not obtained.")
413+
414+
def delete_hook_subscription(self, hook_id):
415+
if hook_id is not None:
416+
url = "webhooks/{0}".format(hook_id)
417+
return self._delete(url)
418+
else:
419+
raise Exception("The attributes necessary to delete the webhook were not obtained.")
420+
421+
422+
423+

0 commit comments

Comments
 (0)