SugarCRM API的Python客户端


sugarcrm的Python项目详细描述

SugarCRM API的Python客户端。

http://img.shields.io/pypi/v/sugarcrm.svg http://img.shields.io/pypi/dm/sugarcrm.svg http://img.shields.io/pypi/l/sugarcrm.svg

示例用法

import sugarcrm

# Connect
url = "http://your-sugarcrm-domain/service/v4/rest.php"
session = sugarcrm.Session(url, username, password)

# Create a new note
note = sugarcrm.Note(name="Test Note")

# Save note
session.set_entry(note)

# Add attachment to note
session.set_note_attachment(note, "sugarcrm.py")

# Query for all notes that have a name that begins with "Test"
note_query = sugarcrm.Note(name="Test%")
results = session.get_entry_list(note_query)

# Query for all contacts with the first name "Mylee"
contact_query = sugarcrm.Contact(first_name="Mylee")
results = session.get_entry_list(contact_query)

# Get the email address for the user assigned to an Opportunity
op = session.get_entry("Opportunities", "82f72939-735e-53a2-0944-5418c4edae2a")
user = session.get_entry("Users", op.assigned_user_id)
print user.email1

# Change the status of an Opportunity
op = sugarcrm.Opportunity(id="82f72939-735e-53a2-0944-5418c4edae2a")
op.sales_stage = "Approved"
session.set_entry(op)

# Extract all non-empty email fields from all Contacts in SugarCRM
emails = set()
contact_query = sugarcrm.Contact()  # No filters provider finds all objects
contact_count = session.get_entries_count(contact_query, deleted=True)
print "Extracting emails from %d Contacts" % contact_count
# Grab 100 Contact objects at a time from SugarCRM
for offset in range(0, count, 100):
    contacts = session.get_entry_list(contact_query, deleted=True,
                                    max_results=100, offset=offset)
    for contact in contacts:
        for field in dir(contact):
            if field.find("email") >= 0 and getattr(contact, field, "").find("@") >= 0:
                emails.add(getattr(contact, field).lower())
print "Found %d emails" % len(emails)

安装

最新的稳定版本始终可以通过pip安装或更新:

$ pip install sugarcrm

如果上述操作失败,请改用Easy_安装:

$ easy_install sugarcrm

会话对象

类sugarcrm.session(url,用户名,密码,app=“python”,lang=“en_us”,verify=true)
用于连接SugarCRM API并使用发出请求的主类。
url = "http://your-sugarcrm-domain/service/v4/rest.php"
session = sugarcrm.Session(url, username, password)

verify参数直接传递给python请求库,python请求库用于向sugarcrm api发出http post请求。从python请求文档中阅读有关此参数的更多信息:http://docs.python-requests.org/en/latest/user/advanced/#ssl-cert-verification

可用方法

获取可用的模块(filter=“default”)
检索系统中可用模块的列表。 可能的筛选值:“默认”、“移动”、“全部”
modules = session.get_available_modules()
for m in modules:
    print m.module_key
获取项(模块,对象id,链接{},轨迹视图=false)
根据对象id检索单个对象。
note = session.get_entry("Notes", "f0c78aab-e051-174a-12aa-5439a7146977")
print note.name

# Get a lead and specific fields from linked contacts in one query
links = {'Contacts': ['id', 'first_name', 'last_name']}
lead = session.get_entry("Leads", "d7dac88d-ce33-d98a-da8b-5418bba9e664",
                       links=links)
for c in lead.contacts:
    print c.id, c.first_name, c.last_name
获取条目(模块、对象id、轨迹视图=false)
根据指定的对象id检索对象列表。
ids = [
    "f0c78aab-e051-174a-12aa-5439a7146977",
    "32f02fj2-4ggn-4nnf-fs33-f3fh3f93n333",
    "82f72939-735e-53a2-0944-5418c4edae2a",
]
notes = session.get_entries("Notes", ids)
for note in notes:
    print note.name
获取条目数(查询对象,已删除=false)
根据查询规范检索bean的计数。
# Get a count of all Contacts with a first name of "Fred"
# and include Contacts that have been deleted
contact_query = sugarcrm.Contact(first_name="Fred")
contacts = session.get_entries_count(contact_query, deleted=True)
for contact in contacts:
    print contact.first_name, contact.last_name
获取条目列表(查询对象,字段=[],链接={},排序依据=”,最大结果=0,偏移量=0,删除=false,收藏夹=false)
根据查询规范检索对象列表。
# Get a list of all Notes with a name that begins with "Test"
note_query = sugarcrm.Note(name="Test%")
notes = session.get_entry_list(note_query)
for note in notes:
    print note.name

# Get a list of all Opportunities created since Sept 1, 2014 and include
# data about link contacts with each Opportunitity returned
q = sugarcrm.Opportunity()
q.query = "opportunities.date_entered > '2014-09-01'"
links = {'Contacts': ['id', 'first_name', 'last_name']}
results = session.get_entry_list(q, links=links)
for o in results:
    for c in o.contacts:
        print o.id, c.id, c.first_name, c.last_name
登录(用户名、密码、app=“python”、lang=“en-us”)
将用户登录到SugarCRM应用程序。
设置文档修订(文档、文件)
为特定的文档记录创建新的文档修订版。
doc = sugarcrm.Document(document_name="Test Doc", revision=1)
session.set_entry(doc)
session.set_document_revision(doc, "/path/to/test.pdf")
设置项(sugar对象)
创建或更新特定对象。
note = sugarcrm.Note()
note.name = "Test Note"
note.assigned_user_id = "82f72939-735e-53a2-0944-5418c4edae2a"
session.set_entry(note)
print note.id
设置注释附件(注释,附件)
创建附件并将其关联到特定的便笺对象。
with open("test1.pdf") as pdf_file:
    session.set_note_attachment(note1, pdf_file)
session.set_note_attachment(note2, "test2.pdf")
print note1.filename, note2.filename
设置关系(父、子、删除=false)
设置两条记录之间的关系。
doc = sugarcrm.Document(document_name="Test Doc", revision=1)
session.set_entry(doc)
session.set_document_revision(doc, "/path/to/test.pdf")
opportunity = session.get_entry("Opportunities", "5b671886-cfe4-36f5-fa9d-5418a24e4aca")
session.set_relationship(opportunity, doc)

不可用的方法

以下较少使用的sugarcrm api方法未包含在此 图书馆还没有。如果您需要这些方法中的任何一种,请打开一个issue 会很乐意实施的!

获取文档修订版()
方法尚未实现。
获取语言定义()
方法尚未实现。
获取上次查看的内容()
方法尚未实现。
获取已修改的关系()
方法尚未实现。
获取模块字段()
方法尚未实现。
获取模块字段md5()
方法尚未实现。
获取模块布局()
方法尚未实现。
获取注释附件()
方法尚未实现。
获取报价
方法尚未实现。
获取关系()
方法尚未实现。
获取报告条目()
方法尚未实现。
获取报告(pdf)
方法尚未实现。
获取服务器信息()
方法尚未实现。
获取即将到来的活动()
方法尚未实现。
获取用户ID()
方法尚未实现。
获取用户团队id()
方法尚未实现。
作业队列周期()
方法尚未实现。
作业队列@u next()
方法尚未实现。
作业队列运行()
方法尚未实现。
注销()
方法尚未实现。
oauth_access()
方法尚未实现。
无缝登录()
方法尚未实现。
按模块搜索
方法尚未实现。
设置活动合并()
方法尚未实现。
设置项()
方法尚未实现。
设置关系()
方法尚未实现。
截取导入电子邮件()
方法尚未实现。
截取更新联系人()
方法尚未实现。

SugarCRM对象

>>> call = sugarcrm.Call()
>>> print call.module
"Calls"

>>> campaign = sugarcrm.Campaign()
>>> print campaign.module
"Campaigns"

>>> contact = sugarcrm.Contact()
>>> print contact.module
"Contacts"

>>> document = sugarcrm.Document()
>>> print document.module
"Documents"

>>> email = sugarcrm.Email()
>>> print email.module
"Emails"

>>> lead = sugarcrm.Lead()
>>> print lead.module
"Leads"

>>> module = sugarcrm.Module()
>>> print module.module
"Modules"

>>> note = sugarcrm.Note()
>>> print note.module
"Notes"

>>> opportunity = sugarcrm.Opportunity()
>>> print opportunity.module
"Opportunities"

>>> product = sugarcrm.Product()
>>> print product.module
"Products"

>>> prospect = sugarcrm.Prospect()
>>> print prospect.module
"Prospects"

>>> prospect_list = sugarcrm.ProspectList()
>>> print prospect_list.module
"ProspectLists"

>>> quote = sugarcrm.Quote()
>>> print quote.module
"Quotes"

>>> report = sugarcrm.Report()
>>> print report.module
"Reports"

>>> user = sugarcrm.User()
>>> print user.module
"Users"

开发版本

最新的开发版本可以直接从github安装:

$ pip install --upgrade https://github.com/ryanss/sugarcrm/tarball/master

贡献

IssuesPull Requests总是受欢迎的。

许可证

代码和文档根据麻省理工学院的许可证提供 (见LICENSE)。

推荐PyPI第三方库


热门话题
pynetbox 末尾 quot qdarkstyle gitweb yourclass hmac elastic ple dolly apitax m4ce nxpd sports dff lbfgs contextimage interlegis terraref spalloc octobot modelbase starlight datera moneysend openabi talis openhltest compileall 守护者 wkb crowd 成熟度 vrp 类型 pastegevent 风向标 alsadi yxspkg grant broadcaster ski sutui warping inactive something overlaps feincms ynab librar