1

Soap API を使用して Jira にいくつかのファイルを添付しようとしています。Python 2.6 を使用していますが、SOAPpy が機能しなくなったため、suds を使用しています。添付ファイル以外はすべて問題ありません... このコードを書き直す方法がわかりません: http://confluence.atlassian.com/display/JIRA/Creating+a+SOAP+Client?focusedCommentId=180943#comment -180943

どんな手掛かり ?このような複雑な型を処理する方法がわかりません:

<complexType name="ArrayOf_xsd_base64Binary">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:byte[][]"/>
</restriction>
</complexContent>
</complexType>

どうもありがとう

n.

4

3 に答える 3

1

Java CLI を使用したくない場合は、Python で追加および添付する方法を以下に示します。

from suds.client import Client
client = Client(url_to_wsdl_file)
auth = client.service.login(username, password)

client.service.addBase64EncodedAttachmentsToIssue(auth, issue_key, [filename.encode("utf-8")], [open(full_path_and_filename, "rb").read().encode('base64')])
于 2011-03-16T16:47:09.623 に答える
0

これが役立つかどうかはわかりませんが、python ハンドル wsdls を使用していたときに、ほとんどのパッケージで複雑な型のサポートが明らかに不足していることに気付きました。最終的に、wsdl2py --complexType wsdl_url を使用して zsi を選択することにしました。これは完璧に機能しました。私の wsdl には、wsdl で定義された配列の配列の配列を持つ多くの複雑な型がありました。wsdl2py は、wsdl にアクセスするときに使用する 3 つのライブラリを生成します。以下は、値の配列を受け取るメソッド createSubscribers への呼び出しの例です。

import inspect, sys
from PolicyManagementService_client import *

class apiCheckSetup:
    def __init__(self, host="10.10.10.23", port="8080", log=None):
        """Setup to run wsdl operations"""
        self.loc=PolicyManagementServiceLocator(host, port)
        if log:
            logfile=log
        else:
            logfile=sys.stdout
        kw = { 'tracefile'    :    logfile}
        self.port=self.loc.getPolicyManagementPort(**kw)

    def createSubscribers(self, subList):
        req=createSubscribers()
        subscriberList=ns0.subscriberDetailsList_Def("subscriberList")
        subscriber=ns0.subscriberDetails_Def("subscriber")
        subUsers=subscriberList.pyclass()
        for element in subList:
            sub=subscriber.pyclass()
            sub.set_attribute_msisdn(element['msisdn'])
            sub.set_attribute_policyID(element['policyID'])
            sub.set_attribute_firstName(element['firstName'])
            sub.set_attribute_lastName(element['lastName'])
            subUsers._subscriber.append(sub)
        req._subscribers=subUsers
        self.port.createSubscribers(req)

これは次のように呼び出すことができます:

subList=[{'msisdn' : '+445555555', 'policyID' :  pid, 'firstName' : 'M1', 'lastName' : 'D1'}, {'msisdn' : '+445555556', 'policyID' :  pid, 'firstName' : 'M2', 'lastName' : 'D2'}] 
    self.api=pmcApiMethods.apiCheckSetup(host=testConfig.pmcApiServer, port=testConfig.pmcApiPort)
    self.api.createSubscribers(subList)

これが助けになるかどうかはわかりません

于 2010-05-20T10:17:21.607 に答える
0

Jira CLI (suds を使用して Python で記述) を使用して、課題にファイルを添付できます。 スタンドアロン コードは、LGPL ライセンスの下で利用できます。

使用するコマンドは「attach」です。

更新: Python CLI が機能しません。

Python 2.7 でこの CLI を使用してファイルを添付するとエラーが発生します。

Traceback (most recent call last):
  File "./jira", line 1281, in <module>
    rc = com.run(command_name, logger, jira_env, args[1:])
  File "./jira", line 1080, in run
    return self.commands[command].dispatch(logger, jira_env, args)
  File "./jira", line 70, in dispatch
    results = self.run(logger, jira_env, args)
  File "./jira", line 140, in run
    logger.error(decode(e))
  File "./jira", line 1142, in decode
    str = e.faultstring
AttributeError: 'exceptions.NameError' object has no attribute 'faultstring'

更新 2: Java CLI の動作。

Java CLIを呼び出すだけで機能します。

# Run JAVA CLI attach script
args = [
    './jira.sh',
    '--action',
    'addAttachment',
    '--project',
    project_title,
    '--issue',
    issue_key,
    '--file',
    '%s/%s' % (path, filename),
    ]
output = subprocess.check_output(args, cwd = path_to_java_cli).decode("utf-8")
于 2011-02-09T20:02:10.957 に答える