{ "info": { "author": "Bobby Steinbach", "author_email": "developers@meanpug.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.10", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP" ], "description": "# django-crmify\nA django app for quickly integrating a full-featured 3rd party CRM into an application\n\n## Purpose\nTo begin, the purpose of crmify is **NOT** to be a full featured CRM. It's utility is as a bridge between a Django application\nand a 3rd party CRM. Some sample use cases below.\n \n*Basic Lead Management*\n1. User comes to site and registers for account, this triggers a crmify event to create a lead in Insightly\n2. In Insightly, we have a pipeline set up to automatically email new leads\n3. When the user clicks a link in the email, it triggers a change in the status of the User in the backend.\n4. This status change is automatically synced by django-crmify to Insightly, which updates the Lead from a status of `NotContacted` to `Contacted`.\n\n*Basic Sales Funnel*\n1. User comes to site and registers, triggers crmify to create a lead\n2. User makes a purchase, triggering a Conversion event which syncs to Insightly and updates the Lead from a status of `NotContacted` to `Converted`\n\n## Installation\n```\npip install django-crmify\n```\n\n## Quick Start\nTo start using django-crmify, you need to setup some basic configuration parameters. While a number of the parameters will likely need tweaking, the most important settings to get started are: `BACKEND`, `LEAD_MODEL`, and `LEAD_MODEL_FIELDMAPPER`(each of these explained in more detail in the settings [section](#settings) below). Additionally, you will likely need to set the authentication parameters of the CRM backend via environment variables. Here is an example configuration for an integration with the Insightly CRM:`\n\n```python\n# Backend auth for insightly is API key based, therefore the backend will be looking for an environment variable CRMIFY_BACKEND_AUTH_API_KEY for auth\nCRMIFY = {\n 'BACKEND': 'crmify.backends.insightly.InsightlyBackend',\n 'LEAD_MODEL': 'myapp.models.UserProfile',\n 'LEAD_MODEL_FIELDMAPPER': 'myapp.mappers.UserProfileFieldMapper'\n}\n```\n\nAfter setting the `LEAD_MODEL`, it is necessary to run `makemigrations` and then `migrate` to finalize setup.\n\n---\n\nThe next step is setting the value of the `LEAD_MODEL_FIELDMAPPER` to a dot-separated path of a `LeadModelFieldMapper` subclass, a simple class responsible for mapping fields from your Lead model onto the internal `crmify.models.Lead` model. For example, the default mapper looks as follows:\n\n```python\nclass DjangoUserFieldMapper(LeadModelFieldMapper):\n field_mapping = {\n 'first_name': 'first_name',\n 'last_name': 'last_name',\n 'email': 'email',\n }\n fallbacks = {\n 'username': 'email'\n }\n```\n\nTo break this down a bit, the `field_mapping` consists of our model's fields on the left and the internal crmify Lead models' fields on the right. The `fallbacks` field defines the mapping to use in the case that the primary `field_mapping` has no value for a specified Lead field. \n\n## Settings\n| Setting | Default | Description |\n| ---------------------- | --------------------------------------------- | ----------------------------------------- |\n| BACKEND | 'crmify.backends.insightly.InsightlyBackend' | dot separated path to a CRM backend |\n| BACKEND_AUTH | {} | authentication parameters for the CRM backend. Stored in env vars CRMIFY_BACKEND_AUTH_API_KEY, CRMIFY_BACKEND_AUTH_USERNAME, and CRMIFY_BACKEND_AUTH_PASSWORD | \n| LEAD_MODEL | 'django.contrib.auth.models.User' | dot separated path to your applications model you'd like treated as a CRM lead |\n| LEAD_MODEL_FIELDMAPPER | 'crmify.mappers.DjangoUserFieldMapper' | dot separated path to a class defining a mapping between LEAD_MODEL and crmify Lead fields |\n| LEAD_STATUS_MODEL | None | dot separated path to a class subclassing the `crmify.mixins.LeadStatusMixin`. In order to track lead status, this class must implement the `lead_status` method. |\n| LEAD_NEW_STATUS | 'NotContacted' | the status to use for new leads |\n| LEAD_CONVERTED_STATUS | 'Converted' | the status to use for converted leads |\n| LEAD_DEAD_STATUS | 'Disqualified' | the status to use for dead leads |\n\n## Customization\nA CRM backend is simply a class implementing two methods:\n\n```\ndef sync_lead(self, lead):\n \"\"\" sync the given lead to the CRM \n :param lead: `Lead` object to sync to the CRM\n :return: `str` the ID of the lead in the CRM\n \"\"\"\n pass\n\ndef delete_lead(self, lead_id):\n \"\"\" delete the lead with the given ID from the CRM \n :param lead_id: `str` the ID of the lead in the external CRM\n :return: `bool` True if the lead was deleted, False otherwise\n \"\"\"\n pass\n```\n\nAfter creating this class, you need only point the `BACKEND` setting to the dot separated path to your CRM backend.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/MeanPug/django-crmify", "keywords": "", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "django-crmify", "package_url": "https://pypi.org/project/django-crmify/", "platform": "", "project_url": "https://pypi.org/project/django-crmify/", "project_urls": { "Homepage": "https://github.com/MeanPug/django-crmify" }, "release_url": "https://pypi.org/project/django-crmify/1.3.0/", "requires_dist": null, "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "summary": "Connect your Django Application to your CRM of choice", "version": "1.3.0" }, "last_serial": 3615867, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "5b0e913a995c2f6d1d90ebab01b495e2", "sha256": "799aacd6407eddff2a6bf5dd2cb2c40cdeac3da9a15423b74ff5c44e2a370e1d" }, "downloads": -1, "filename": "django-crmify-0.0.0.tar.gz", "has_sig": false, "md5_digest": "5b0e913a995c2f6d1d90ebab01b495e2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 9266, "upload_time": "2018-02-25T23:42:34", "url": "https://files.pythonhosted.org/packages/31/77/ef4eb4836e0263e320edfb610f63623460f73d8a9bc39b909874269e3d50/django-crmify-0.0.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a94476e3ee9fe40769cb9e9966d62c5c", "sha256": "4559b120f0d79c29ea7a75c62059c4f07b5250bb289f941e373fbb67d7b253b7" }, "downloads": -1, "filename": "django-crmify-0.3.0.tar.gz", "has_sig": false, "md5_digest": "a94476e3ee9fe40769cb9e9966d62c5c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 9898, "upload_time": "2018-02-26T00:46:50", "url": "https://files.pythonhosted.org/packages/c9/15/ace0e28b2dd9bbd8a7c45abc7f6fd031c712c26153a427b354670477d786/django-crmify-0.3.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "ebe3717144a954deb43361ea8aef2832", "sha256": "80f5571e27d2eee71a5807f06f56021108c346c803b195ad70d0cf16b330e6b1" }, "downloads": -1, "filename": "django-crmify-1.0.0.tar.gz", "has_sig": false, "md5_digest": "ebe3717144a954deb43361ea8aef2832", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 9500, "upload_time": "2018-02-26T01:28:48", "url": "https://files.pythonhosted.org/packages/3e/36/209c17582d810d1184e0a06d677430d71d349d9432c04fcb067e9cd5f63c/django-crmify-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "bf22c9b4fd6caf7b32dc3099f4b374a5", "sha256": "db5ee618a1b3e4ad50315209e4823a9a7b099c6208e1784008ab62b9f36ec8d0" }, "downloads": -1, "filename": "django-crmify-1.1.0.tar.gz", "has_sig": false, "md5_digest": "bf22c9b4fd6caf7b32dc3099f4b374a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 9553, "upload_time": "2018-02-26T01:39:00", "url": "https://files.pythonhosted.org/packages/99/fe/369e52fd875414b4076c87dbc70dcb69af6933ce6da7dc0cedbde680c3db/django-crmify-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "11851291f84309cff573cab01eef569a", "sha256": "f86abdb372cf35ec1bdcd929978b4ed3ae3c1ce28d748e6654a9d077aa546716" }, "downloads": -1, "filename": "django-crmify-1.2.0.tar.gz", "has_sig": false, "md5_digest": "11851291f84309cff573cab01eef569a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 9301, "upload_time": "2018-02-26T03:23:24", "url": "https://files.pythonhosted.org/packages/ab/7e/cbe9912aa33dc08d53f484202e2380c5a274e2aa819c58b778e8af2f252a/django-crmify-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "52448dd0d44643ceabcd761de197c8b1", "sha256": "85a17501dbe6eaba747f513b76e1700b3e0f2cbc9fc754cd0cf9f069e80f29c4" }, "downloads": -1, "filename": "django-crmify-1.3.0.tar.gz", "has_sig": false, "md5_digest": "52448dd0d44643ceabcd761de197c8b1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 12873, "upload_time": "2018-02-26T03:27:22", "url": "https://files.pythonhosted.org/packages/12/91/75650cbdb10681bce755ac7f699d9361bcf268b4b38c65834271f622bd19/django-crmify-1.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "52448dd0d44643ceabcd761de197c8b1", "sha256": "85a17501dbe6eaba747f513b76e1700b3e0f2cbc9fc754cd0cf9f069e80f29c4" }, "downloads": -1, "filename": "django-crmify-1.3.0.tar.gz", "has_sig": false, "md5_digest": "52448dd0d44643ceabcd761de197c8b1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 12873, "upload_time": "2018-02-26T03:27:22", "url": "https://files.pythonhosted.org/packages/12/91/75650cbdb10681bce755ac7f699d9361bcf268b4b38c65834271f622bd19/django-crmify-1.3.0.tar.gz" } ] }