SugarCRM v10 api的导出方法

时间:2015-03-03 20:12:36

标签: python api sugarcrm

我正在尝试调用SugarCRM v10 api来获取报告的输出,而无需登录Web界面并单击导出按钮。我希望将此报告作为可以使用python和请求库写入csv格式的数据。

我可以成功进行身份验证并获取令牌,但无论我尝试了什么,我从报告中获得的响应是​​错误方法不存在,这意味着您不能在此代码中的第二个URL的末尾使用/ csv块。

url = "https://mydomain.sugarondemand.com/rest/v10/oauth2/token"
payload = {"grant_type":"password","username":"ursername","password":"password","client_id":"sugar", "platform":"myspecialapp"}


r = requests.post(url, data=json.dumps(payload))

response = json.loads(r.text)

token = response[u'access_token']    
print 'Success! OAuth token is ' + token

#What export methods are available? ###################################

#WRONG url = "https://mydomain.sugarondemand.com/rest/v10/Reports/report_id/csv"
#Following paquino's suggestion I used Base64

url = "https://mydomain.sugarondemand.com/rest/v10/Reports/report_id/Base64"
headers = { "Content-Type" : "application/json", "OAuth-Token": token }

r = requests.get(url, headers=headers);

response = r.text.decode('base64')

print response`

我的问题是:通过api调用SugarCRM api的v10可以获得哪些导出方法。

编辑:在请求url中使用Base64很遗憾地返回我不知道如何解析的ab对象...

%PDF-1.7
3 0 obj
<</Type /Page
/Parent 1 0 R
/MediaBox [0 0 792.00 612.00]
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Length 37217>>
stream
8.cܬR≈`ä║dàQöWºáW╙µ

2 个答案:

答案 0 :(得分:0)

报告Api接受&#34; Base64&#34;和&#34; Pdf&#34;

答案 1 :(得分:0)

SugarCRM REST API v10的Python包装

https://github.com/Feverup/pysugarcrm

<强>快速启动

pip install pysugarcrm
from pysugarcrm import SugarCRM
api = SugarCRM('https://yourdomain.sugaropencloud.e', 'youruser', 'yourpassword')

# Return info about current user
api.me

# A more complex query requesting employees
api.get('/Employees', query_params={'max_num': 2, 'offset': 2, 'fields': 'user_name,email'})

{'next_offset': 4,
 'records': [{'_acl': {'fields': {}},
   '_module': 'Employees',
   'date_modified': '2015-09-09T13:40:32+02:00',
   'email': [{'email_address': 'John.doe@domain.com',
     'invalid_email': False,
     'opt_out': False,
     'primary_address': True,
     'reply_to_address': False}],
   'id': '12364218-7d79-80e0-4f6d-35ed99a8419d',
   'user_name': 'john.doe'},
  {'_acl': {'fields': {}},
   '_module': 'Employees',
   'date_modified': '2015-09-09T13:39:54+02:00',
   'email': [{'email_address': 'alice@domain.com',
     'invalid_email': False,
     'opt_out': False,
     'primary_address': True,
     'reply_to_address': False}],
   'id': 'a0e117c0-9e46-aebf-f71a-55ed9a2b4731',
   'user_name': 'alice'}]}

# Generate a Lead
api.post('/Leads', json={'first_name': 'John', 'last_name': 'Smith', 'business_name_c': 'Test John', 'contact_email_c': 'john@smith.com'})
from pysugarcrm import sugar_api

with sugar_api('http://testserver.com/', "admin", "12345") as api:
    data = api.get('/Employees', query_params={'max_num': 2, 'offset': 2, 'fields': 'user_name,email'})
    api.post('/Leads', json={'first_name': 'John', 'last_name': 'Smith', 'business_name_c': 'Test John', 'contact_email_c': 'john@smith.com'})

# Once we exit the context manager the sugar connection is closed and the user is logged out