從 Jira page 上獲取信息和下載附件


文檔:

   https://jira.readthedocs.io/en/latest/api.html

jira提供了一系列的接口。包括給python,甚至 curl 來操作它

原本官方接口有限。但是可以通過一些騷操作來不那么正式的獲取一些數據

#安裝pip  mac 自帶了 easy_install 

sudo easy_install pip

pip install JIRA

通過 myissue = jac.issue('CT-'+id) 一個issue id 獲取一個 issue 對象,然后可以進行一些你想要的操作 官方文檔沒看太明白

翻了挺久看到更新、提交、創建、刪除等等接口,但是一直沒有找到從 jira page 上獲取信息和下載附件的接口, 這種很常見的接口不應該不提供吧?找了找,用自己的辦法擼了一個 湊活用吧
目前清楚的 支持

myissue.update({json})
myissue.fields.labels.append(u'text')
myissue.delete()

# 將兩個問題關聯
issue = jira.issue('WV-1430')
issue2 = jira.issue('CC-17')
jira.add_remote_link(issue, issue2)

 

用例 demo:

#usr/bin/python
#coding:utf-8

import sys
reload(sys)
sys.setdefaultencoding('utf8')

from jira import JIRA
import time

jac = JIRA('http://xxxxxxxxx:xxx', basic_auth=('username', 'password'))

key_val = {
    "giteeurl":  "customfield_10303",
    "password":  "customfield_10307",
    "emailpwd":  "customfield_10306",
    "giteepwd":  "customfield_10601",
    "username":  "customfield_10619",
    "phonenumber":  "customfield_11800",
    "proxyaddr":  "customfield_10310",
    "attachment":  "attachment",
} 

import os.path
def downloadContent(data, filename, fpath):
    filepath = os.path.join(fpath, filename)
    with open(filepath,'wb') as f:
        f.write(data)
        f.close()

    if os.path.exists(filepath):
        if os.path.getsize(filepath) > 9 * 1024:
            return 
        else:
            print os.path.getsize(filepath)
    else:
        print "downloadContent failed! no find " + filepath

    print "downloadContent  file is too small!  Maybe sth wrong happend!"

def get_issue(id, fname):
    # 獲取一個issue issueid or issuekey
    myissue = jac.issue('CT-'+id)
    with open(fname,'w') as fa:
        for key in key_val:
            if key == "attachment":
                val = myissue.fields().attachment
                # print dir(val[0])
                downloadContent(val[0].get(), val[0].filename, os.path.dirname(fname))
            else:
                var = myissue.fields().__getattribute__(key_val[key])
                if var:
                    fa.write(key.strip()+"="+var.strip() + "\n")

# ****_1555.zip 為issue_id
def handleDir(params):
    rootpath = params[0]
    for gamepath in os.listdir(rootpath):
        if gamepath != "queue" and gamepath != ".DS_Store":
            gameabs_p = os.path.join(rootpath, gamepath)
            if os.path.isdir(gameabs_p):
                for gamezipf in os.listdir(gameabs_p):
                    if os.path.splitext(gamezipf)[1] == ".zip":
                        start = gamezipf.rfind("_")
                        end = gamezipf.rfind(".zip")
                        if ((start != -1) and (end != -1)):
                            acc = gamezipf[start + 1: end]
                            get_issue(acc, os.path.join(gameabs_p, "gameinfo.txt"))

    print "handleDir Succeed!!!"

if __name__=='__main__':
    handleDir(sys.argv[1:])
 
         
#通過這樣可以 獲取所有的key
for key in dir(myissue.fields()):
    var = getattr(myissue.fields(), key)
    print key
    print var

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM