通过调用Api接口维护禅道-Python

前言:

如果说国内开源且比较好用的项目管理软件,禅道应该算是名列前茅的一款,而因为工作需要,我需要经常性的对禅道进行维护,基本维护流程如下:

如果仅是单个项目还好,手动维护一遍也花不了多久,可是当客户多达数百个甚至更多的时候,手动维护所花费的时间就会变得较为夸张了,假设一个客户的产品、分支和项目都已经存在,仅需维护执行(迭代)和版本,一年就是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,获取需要的返回参数等,纯体力活

咱的分享就是给各位小白提供一个初步的思路,这也是咱得第一个博客,见笑见笑

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值