Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
370 changes: 263 additions & 107 deletions README.md

Large diffs are not rendered by default.

27 changes: 27 additions & 0 deletions pipedrive/activities.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class Activities(object):
def __init__(self, client):
self._client = client

def get_activity(self, activity_id, **kwargs):
url = 'activities/{}'.format(activity_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_all_activities(self, **kwargs):
url = 'activities'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def create_activity(self, data, **kwargs):
url = 'activities'
return self._client._post(self._client.BASE_URL + url, json=data, **kwargs)

def update_activity(self, activity_id, data, **kwargs):
url = 'activities/{}'.format(activity_id)
return self._client._put(self._client.BASE_URL + url, json=data, **kwargs)

def delete_activity(self, activity_id, **kwargs):
url = 'activities/{}'.format(activity_id)
return self._client._delete(self._client.BASE_URL + url, **kwargs)

def get_activity_fields(self, **kwargs):
url = 'activityFields'
return self._client._get(self._client.BASE_URL + url, **kwargs)
572 changes: 100 additions & 472 deletions pipedrive/client.py

Large diffs are not rendered by default.

81 changes: 81 additions & 0 deletions pipedrive/deals.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
class Deals(object):
def __init__(self, client):
self._client = client

def get_deal(self, deal_id, **kwargs):
url = 'deals/{}'.format(deal_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_all_deals(self, **kwargs):
url = 'deals'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def create_deal(self, data, **kwargs):
url = 'deals'
return self._client._post(self._client.BASE_URL + url, json=data, **kwargs)

def update_deal(self, deal_id, data, **kwargs):
url = 'deals/{}'.format(deal_id)
return self._client._put(self._client.BASE_URL + url, json=data, **kwargs)

def delete_deal(self, deal_id, **kwargs):
url = 'deals/{}'.format(deal_id)
return self._client._delete(self._client.BASE_URL + url, **kwargs)

def duplicate_deal(self, deal_id, **kwargs):
url = 'deals/{}/duplicate'.format(deal_id)
return self._client._post(self._client.BASE_URL + url, **kwargs)

def get_deal_details(self, deal_id, **kwargs):
url = 'deals/{}'.format(deal_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_deals_by_name(self, **kwargs):
url = 'deals/find'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_deal_followers(self, deal_id, **kwargs):
url = 'deals/{}/followers'.format(deal_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def add_follower_to_deal(self, deal_id, user_id, **kwargs):
url = 'deals/{}/followers'.format(deal_id)
data = {
'user_id': user_id
}
return self._client._post(self._client.BASE_URL + url, json=data, **kwargs)

def delete_follower_to_deal(self, deal_id, follower_id, **kwargs):
url = 'deals/{}/followers/{}'.format(deal_id, follower_id)
return self._client._delete(self._client.BASE_URL + url, **kwargs)

def get_deal_participants(self, deal_id, **kwargs):
url = 'deals/{}/participants'.format(deal_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def add_participants_to_deal(self, deal_id, person_id, **kwargs):
url = 'deals/{}/participants'.format(deal_id)
data = {
'person_id': person_id
}
return self._client._post(self._client.BASE_URL + url, json=data, **kwargs)

def delete_participant_to_deal(self, deal_id, participant_id, **kwargs):
url = 'deals/{}/participants/{}'.format(deal_id, participant_id)
return self._client._delete(self._client.BASE_URL + url, **kwargs)

def get_deal_activities(self, deal_id, **kwargs):
url = 'deals/{}/activities'.format(deal_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_deal_mail_messages(self, deal_id, **kwargs):
url = 'deals/{}/mailMessages'.format(deal_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_deal_products(self, deal_id, **kwargs):
url = 'deals/{}/products'.format(deal_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_deal_fields(self, **kwargs):
url = 'dealFields'
return self._client._get(self._client.BASE_URL + url, **kwargs)
52 changes: 52 additions & 0 deletions pipedrive/exceptions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
class BaseError(Exception):
def __init__(self, message, response, *args, **kwargs):
super().__init__(message, *args, **kwargs)
self.response = response


class BadRequestError(BaseError):
pass


class UnauthorizedError(BaseError):
pass


class ForbiddenError(BaseError):
pass


class NotFoundError(BaseError):
pass


class GoneError(BaseError):
pass


class UnsupportedMediaTypeError(BaseError):
pass


class UnprocessableEntityError(BaseError):
pass


class TooManyRequestsError(BaseError):
pass


class InternalServerError(BaseError):
pass


class NotImplementedError(BaseError):
pass


class ServiceUnavailableError(BaseError):
pass


class UnknownError(BaseError):
pass
23 changes: 23 additions & 0 deletions pipedrive/filters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class Filters(object):
def __init__(self, client):
self._client = client

def get_filter(self, filter_id, **kwargs):
url = 'filters/{}'.format(filter_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_all_filters(self, **kwargs):
url = 'filters'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def create_filter(self, data, **kwargs):
url = 'filters'
return self._client._post(self._client.BASE_URL + url, json=data, **kwargs)

def update_filter(self, filter_id, data, **kwargs):
url = 'filters/{}'.format(filter_id)
return self._client._put(self._client.BASE_URL + url, json=data, **kwargs)

def delete_filter(self, filter_id, **kwargs):
url = 'filters/{}'.format(filter_id)
return self._client._delete(self._client.BASE_URL + url, **kwargs)
27 changes: 27 additions & 0 deletions pipedrive/notes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class Notes(object):
def __init__(self, client):
self._client = client

def get_note(self, note_id, **kwargs):
url = 'notes/{}'.format(note_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_all_notes(self, **kwargs):
url = 'notes'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def create_note(self, data, **kwargs):
url = 'notes'
return self._client._post(self._client.BASE_URL + url, json=data, **kwargs)

def update_note(self, note_id, data, **kwargs):
url = 'notes/{}'.format(note_id)
return self._client._put(self._client.BASE_URL + url, json=data, **kwargs)

def delete_note(self, note_id, **kwargs):
url = 'notes/{}'.format(note_id)
return self._client._delete(self._client.BASE_URL + url, **kwargs)

def get_note_fields(self, **kwargs):
url = 'noteFields'
return self._client._get(self._client.BASE_URL + url, **kwargs)
27 changes: 27 additions & 0 deletions pipedrive/organizations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class Organizations(object):
def __init__(self, client):
self._client = client

def get_organization(self, organization_id, **kwargs):
url = 'organizations/{}'.format(organization_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_all_organizations(self, **kwargs):
url = 'organizations'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def create_organization(self, data, **kwargs):
url = 'organizations'
return self._client._post(self._client.BASE_URL + url, json=data, **kwargs)

def update_organization(self, organization_id, data, **kwargs):
url = 'organizations/{}'.format(organization_id)
return self._client._put(self._client.BASE_URL + url, json=data, **kwargs)

def delete_organization(self, organization_id, **kwargs):
url = 'organizations/{}'.format(organization_id)
return self._client._delete(self._client.BASE_URL + url, **kwargs)

def get_organization_fields(self, **kwargs):
url = 'organizationFields'
return self._client._get(self._client.BASE_URL + url, **kwargs)
35 changes: 35 additions & 0 deletions pipedrive/persons.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
class Persons(object):
def __init__(self, client):
self._client = client

def get_person(self, person_id, **kwargs):
url = 'persons/{}'.format(person_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_all_persons(self, **kwargs):
url = 'persons'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_persons_by_name(self, **kwargs):
url = 'persons/find'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def create_person(self, data, **kwargs):
url = 'persons'
return self._client._post(self._client.BASE_URL + url, json=data, **kwargs)

def update_person(self, person_id, data, **kwargs):
url = 'persons/{}'.format(person_id)
return self._client._put(self._client.BASE_URL + url, json=data, **kwargs)

def delete_person(self, person_id, **kwargs):
url = 'persons/{}'.format(person_id)
return self._client._delete(url, **kwargs)

def get_person_deals(self, person_id, **kwargs):
url = 'persons/{}/deals'.format(person_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_person_fields(self, **kwargs):
url = 'personFields'
return self._client._get(self._client.BASE_URL + url, **kwargs)
15 changes: 15 additions & 0 deletions pipedrive/pipelines.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
class Pipelines(object):
def __init__(self, client):
self._client = client

def get_pipeline(self, pipeline_id, **kwargs):
url = 'pipelines/{}'.format(pipeline_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_all_pipelines(self, **kwargs):
url = 'pipelines'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_pipeline_deals(self, pipeline_id, **kwargs):
url = 'pipelines/{}/deals'.format(pipeline_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)
35 changes: 35 additions & 0 deletions pipedrive/products.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
class Products(object):
def __init__(self, client):
self._client = client

def get_product(self, product_id, **kwargs):
url = 'products/{}'.format(product_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_all_products(self, **kwargs):
url = 'products'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_product_by_name(self, **kwargs):
url = 'products/find'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def create_product(self, data, **kwargs):
url = 'products'
return self._client._post(self._client.BASE_URL + url, json=data, **kwargs)

def update_product(self, product_id, data, **kwargs):
url = 'products/{}'.format(product_id)
return self._client._put(self._client.BASE_URL + url, json=data, **kwargs)

def delete_product(self, product_id, **kwargs):
url = 'products/{}'.format(product_id)
return self._client._delete(self._client.BASE_URL + url, **kwargs)

def get_product_deal(self, product_id, **kwargs):
url = 'products/{}/deals'.format(product_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_product_fields(self, **kwargs):
url = 'productFields'
return self._client._get(self._client.BASE_URL + url, **kwargs)
7 changes: 7 additions & 0 deletions pipedrive/recents.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class Recents(object):
def __init__(self, client):
self._client = client

def get_recent_changes(self, **kwargs):
url = 'recents'
return self._client._get(self._client.BASE_URL + url, **kwargs)
3 changes: 0 additions & 3 deletions pipedrive/test.py

This file was deleted.

15 changes: 15 additions & 0 deletions pipedrive/users.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
class Users(object):
def __init__(self, client):
self._client = client

def get_user(self, user_id, **kwargs):
url = 'users/{}'.format(user_id)
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_all_users(self, **kwargs):
url = 'users'
return self._client._get(self._client.BASE_URL + url, **kwargs)

def get_me(self, **kwargs):
url = 'users/me'
return self._client._get(self._client.BASE_URL + url, **kwargs)
21 changes: 21 additions & 0 deletions pipedrive/webhooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
class Webhooks(object):
def __init__(self, client):
self._client = client

def get_hooks_subscription(self, **kwargs):
url = 'webhooks'
return self._client._get(url, **kwargs)

def create_hook_subscription(self, subscription_url, event_action, event_object, **kwargs):
url = 'webhooks'
data = {
'subscription_url':
subscription_url,
'event_action': event_action,
'event_object': event_object
}
return self._client._post(url, json=data, **kwargs)

def delete_hook_subscription(self, hook_id, **kwargs):
url = 'webhooks/{}'.format(hook_id)
return self._client._delete(url, **kwargs)
9 changes: 5 additions & 4 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@ def read(fname):


setup(name='pipedrive-python-lib',
version='0.1.3',
version='1.0.0',
description='API wrapper for Pipedrive written in Python',
long_description=read('README.md'),
long_description_content_type="text/markdown",
url='https://github.com/GearPlug/pipedrive-python',
author='Yordy Gelvez',
author_email='yordy.gelvez@gmail.com',
license='GPL',
author='Miguel Ferrer',
author_email='ingferrermiguel@gmail.com',
license='MIT',
packages=['pipedrive'],
install_requires=[
'requests',
Expand Down