python - 无法使用 Get_Workers() 从 Workday 获取员工信息(python)
问题描述
我正在尝试使用 Python 使用 Get_Workers 方法从 Workday 获取员工信息。但是,它会导致失败。有没有可用的例子展示如何使用它?基本意图是获取员工的位置信息。
解决方案
是的!这是一个示例,展示了如何使用基于我不隶属于的这个要点的suds模块。
这应该提供一个基础,您可以使用它从Get_Workers访问您需要的任何内容
import secrets
import sys
from suds import client
from suds.wsse import Security, UsernameToken
from suds.sax.text import Raw
from suds.sudsobject import asdict
from suds import WebFault
wsdl_url = 'https://wd2-impl-services1.workday.com/ccx/service/yourTenantHere/Human_Resources/v32.0?wsdl'
Employee_ID = '139420'
client = client.Client(wsdl_url)
security = Security()
token = UsernameToken(secrets.username, secrets.password)
security.tokens.append(token)
client.set_options(wsse=security)
xmlstring = '''
<ns0:Worker_Reference>
<ns0:ID ns0:type="Employee_ID">{id}</ns0:ID>
</ns0:Worker_Reference>
'''.format(id=Employee_ID)
xml = Raw(xmlstring)
try:
result = client.service.Get_Workers(xml)
except WebFault as e:
# Employee ID probably doesn't exist.
print(e)
sys.exit()
def recursive_asdict(d):
"""Convert Suds object into serializable format."""
out = {}
for k, v in asdict(d).items():
if hasattr(v, '__keylist__'):
out[k] = recursive_asdict(v)
elif isinstance(v, list):
out[k] = []
for item in v:
if hasattr(item, '__keylist__'):
out[k].append(recursive_asdict(item))
else:
out[k].append(item)
else:
out[k] = v
return out
worker_dict = recursive_asdict(result)
worker = worker_dict['Response_Data']['Worker'][0]['Worker_Data']
lname = worker['Personal_Data']['Name_Data']['Legal_Name_Data']['Name_Detail_Data']['Last_Name']
print(lname)
推荐阅读
- linux - 是否可以将消息“推送”到活动的 bash 终端?
- uwp - UWP 通过选择其笔划来更改椭圆宽度高度
- embedded - STM32F446板载温度传感器,定时器配置问题
- ios - 在 Nativescript 应用程序中修改 Podfile
- sql - 如果数据在表中持续超过 12 小时,则发送电子邮件,SQL
- c++ - 有没有办法为 char 数组分配堆栈内存?但是,鉴于长度是已知的,但是稍后会添加内容?
- tfs - 添加nuget包时不会自动安装依赖项
- python - 如何排序字典的键
- python-3.x - 使用相同的 credentials.json 在 python 中访问 google drive/google sheet api
- c# - 如何在不使用 C# 中的 JSchema nuget 的情况下针对 JSON 模式验证 JSON 对象?