SugarCRM API的Python客户端
sugarcrm的Python项目详细描述
SugarCRM API的Python客户端。
示例用法
importsugarcrm# Connecturl="http://your-sugarcrm-domain/service/v4/rest.php"session=sugarcrm.Session(url,username,password)# Create a new notenote=sugarcrm.Note(name="Test Note")# Save notesession.set_entry(note)# Add attachment to notesession.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 Opportunityop=session.get_entry("Opportunities","82f72939-735e-53a2-0944-5418c4edae2a")user=session.get_entry("Users",op.assigned_user_id)printuser.email1# Change the status of an Opportunityop=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 SugarCRMemails=set()contact_query=sugarcrm.Contact()# No filters provider finds all objectscontact_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 SugarCRMforoffsetinrange(0,count,100):contacts=session.get_entry_list(contact_query,deleted=True,max_results=100,offset=offset)forcontactincontacts:forfieldindir(contact):iffield.find("email")>=0andgetattr(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()forminmodules:printm.module_key
- 获取项(模块,对象id,链接{},轨迹视图=false)
- 根据对象id检索单个对象。
note=session.get_entry("Notes","f0c78aab-e051-174a-12aa-5439a7146977")printnote.name# Get a lead and specific fields from linked contacts in one querylinks={'Contacts':['id','first_name','last_name']}lead=session.get_entry("Leads","d7dac88d-ce33-d98a-da8b-5418bba9e664",links=links)forcinlead.contacts:printc.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)fornoteinnotes:printnote.name
- 获取条目数(查询对象,已删除=false)
- 根据查询规范检索bean的计数。
# Get a count of all Contacts with a first name of "Fred"# and include Contacts that have been deletedcontact_query=sugarcrm.Contact(first_name="Fred")contacts=session.get_entries_count(contact_query,deleted=True)forcontactincontacts:printcontact.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)fornoteinnotes:printnote.name# Get a list of all Opportunities created since Sept 1, 2014 and include# data about link contacts with each Opportunitity returnedq=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)foroinresults:forcino.contacts:printo.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)printnote.id
- 设置注释附件(注释,附件)
- 创建附件并将其关联到特定的便笺对象。
withopen("test1.pdf")aspdf_file:session.set_note_attachment(note1,pdf_file)session.set_note_attachment(note2,"test2.pdf")printnote1.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对象
>>>call=sugarcrm.Call()>>>printcall.module"Calls">>>campaign=sugarcrm.Campaign()>>>printcampaign.module"Campaigns">>>contact=sugarcrm.Contact()>>>printcontact.module"Contacts">>>document=sugarcrm.Document()>>>printdocument.module"Documents">>>email=sugarcrm.Email()>>>printemail.module"Emails">>>lead=sugarcrm.Lead()>>>printlead.module"Leads">>>module=sugarcrm.Module()>>>printmodule.module"Modules">>>note=sugarcrm.Note()>>>printnote.module"Notes">>>opportunity=sugarcrm.Opportunity()>>>printopportunity.module"Opportunities">>>product=sugarcrm.Product()>>>printproduct.module"Products">>>prospect=sugarcrm.Prospect()>>>printprospect.module"Prospects">>>prospect_list=sugarcrm.ProspectList()>>>printprospect_list.module"ProspectLists">>>quote=sugarcrm.Quote()>>>printquote.module"Quotes">>>report=sugarcrm.Report()>>>printreport.module"Reports">>>user=sugarcrm.User()>>>printuser.module"Users"
开发版本
最新的开发版本可以直接从github安装:
$ pip install --upgrade https://github.com/ryanss/sugarcrm/tarball/master
贡献
Issues和Pull Requests总是受欢迎的。
许可证
代码和文档根据麻省理工学院的许可证提供 (见LICENSE)。