前言:
如果说国内开源且比较好用的项目管理软件,禅道应该算是名列前茅的一款,而因为工作需要,我需要经常性的对禅道进行维护,基本维护流程如下:
如果仅是单个项目还好,手动维护一遍也花不了多久,可是当客户多达数百个甚至更多的时候,手动维护所花费的时间就会变得较为夸张了,假设一个客户的产品、分支和项目都已经存在,仅需维护执行(迭代)和版本,一年就是4+4=8*客户数,就是近千次新建!另外还会存在新签客户的情况,就得从头到尾的走一遍新建流程,着实麻烦,因此,使用脚本来完成这些重复性的工作,就很nice!
因为不同版本的禅道API接口和传参会有差异,故申明一下我用的禅道版本:18.5
第一步:登录禅道
登录需要如下信息:1、登录的接口;2、SessionID;3、登录的用户名、密码
首先是登录接口,这个比较简单,在禅道登录页面 F12 抓一下就能获取
至于SessionID,可以调用接口获取:
get_session_api = 'http://127.0.0.1/zentao/index.php?m=api&f=getSessionID&t=json'
代码如下:
def get_session_id(get_session_api):
get_session_res = requests.request('post', url=get_session_api)
get_session_res_json_date = json.loads(get_session_res.json()['data'])
login_session = get_session_res_json_date['sessionID']
return login_session
get_session_api = 'http://127.0.0.1/zentao/index.php?m=api&f=getSessionID&t=json'
login_session = get_session_id(get_session_api)
获取SessionID后,将SessionID拼接到登录接口中:
login_api = f'http://127.0.0.1/zentao/index.php?m=user&f=login&t=json&zentaosid={login_session}'
然后使用用户名、密码登录并获取cookies:
def login_sys(login_api, login_data):
login_res = requests.request('post', url=login_api, data=login_data)
sys_cookies = login_res.cookies
return sys_cookies
# 设置登录接口与入参,登录禅道,获取cookies
login_api = f'http://127.0.0.1/zentao/index.php?m=user&f=login&t=json&zentaosid={login_session}'
login_data = {
'account': '用户名',
'password': '密码'
}
sys_cookies = login_sys(login_api, login_data)
此时,咱们就已经成功登录禅道,并获取到了对应cookies
第二步:判断产品-分支是否存在
要判断分支是否存在,就需要先知道有哪些已存在的分支,咱需要先查询分支数据
查询分支的接口:
get_branch_url='http://127.0.0.1/zentao/index.phpm=branch&f=manage&productID=207&browseType=active&orderBy=order&recTotal=1000&recPerPage=2000&pageID=1&t=json'
需要注意的是,为了能方便的获取所有数据,我将页面返回的数据量由100改为了1000
获取所有的分支数据:
def get_branch_info(self, get_branch_url, sys_cookies):
get_branch_res_data = requests.request('get', url=get_branch_url, cookies=sys_cookies).json()['data']
get_branch_res_data_encode = json.loads(get_branch_res_data.encode().decode('unicode_escape'))
get_branch_data_dic = {branch_itme['name']: branch_itme['id'] for branch_itme in
get_branch_res_data_encode['branchList']}
return get_branch_data_dic
get_branch_url = 'http://172.31.3.220/zentao/index.php?m=branch&f=manage&productID=207&browseType=active' \
'&orderBy=order&recTotal=1000&recPerPage=2000&pageID=1&t=json'
branch_dic = get_branch_info(get_branch_url=get_branch_url, sys_cookies=cookies)
del branch_dic['主干']
因为禅道会系统默认存在一个主干分支,且不可删除,所有咱们要把获取到的数据删掉一个主干, 剩下的就是所有的已存在的分支数据
剩下的步骤比较多,对比啊,新建项目啊啥的,懒得写了,基本都是一样的,拿到接口,传入cookies、data和hearders,获取需要的返回参数等,纯体力活
咱的分享就是给各位小白提供一个初步的思路,这也是咱得第一个博客,见笑见笑