1

Request Tracker (RT) でチケットを作成するために python-rtkit を使用する Python スクリプトがあり、それを Queue、Subject、および Status フィールドで動作させることができます。しかし、「デバイスまたはエリア」フィールドをペイロードに追加しようとすると、次のエラーが発生します。

Traceback (most recent call last):
  File "resttest.py", line 23, in <module>
    response = resource.post(path='ticket/new', payload=content)
  File "build\bdist.win32\egg\rtkit\resource.py", line 29, in post
  File "build\bdist.win32\egg\rtkit\resource.py", line 49, in request
  File "build\bdist.win32\egg\rtkit\resource.py", line 104, in __init__
  File "build\bdist.win32\egg\rtkit\parser.py", line 49, in parse
  File "build\bdist.win32\egg\rtkit\parser.py", line 79, in decode_comment
ValueError: need more than 1 value to unpack

これが私のコードです

from rtkit.resource import RTResource
from rtkit.authenticators import BasicAuthenticator, CookieAuthenticator
from rtkit.errors import RTResourceError

from rtkit import set_logging
import logging
set_logging('debug')
logger = logging.getLogger('rtkit')

resource = RTResource(rt_url, rt_user, rt_pass, CookieAuthenticator)

#create a ticket
content = {
    'content': {
        'Queue': 'General - unassigned',
        'Subject' : 'Test Ticket Python 2',
        'Status' : 'open',
        'Device or Area' : 'Backups',
        }
    }
try:
    print content
    response = resource.post(path='ticket/new', payload=content,)
    logger.info(response.parsed)
except RTResourceError as e:
    logger.error(e.response.status_int)
    logger.error(e.response.status)
    logger.error(e.response.parsed)

このエラーの意味と原因を知っている人はいますか (修正できるように)。

編集: 新しいチケットの「デバイスまたはエリア」エントリを削除するだけで問題なく動作することに注意する価値があると思います。コードを壊すのは、そのフィールド (または、それ以外のほぼすべてのフィールド) を追加することです。

EDIT:@sihrcネストされたdict構造なしで実行した場合の出力は次のとおりです

{'Queue': 'General - unassigned', 'Status': 'open', 'Device or Area': 'Backups',
 'Subject': 'Test Ticket Python 2'}
[DEBUG] POST ticket/new
[DEBUG] {'Content-Length': '601', 'Content-Type': 'multipart/form-data; boundary
=xXXxXXyYYzzz', 'Accept': 'text/plain'}
[DEBUG] '--xXXxXXyYYzzz\r\nContent-Disposition: form-data; name="Queue"\r\nConte
nt-Type: text/plain; charset=utf-8\r\nContent-Length: 24\r\n\r\nGeneral%20-%20un
assigned\r\n--xXXxXXyYYzzz\r\nContent-Disposition: form-data; name="Status"\r\nC
ontent-Type: text/plain; charset=utf-8\r\nContent-Length: 4\r\n\r\nopen\r\n--xXX
xXXyYYzzz\r\nContent-Disposition: form-data; name="Device%20or%20Area"\r\nConten
t-Type: text/plain; charset=utf-8\r\nContent-Length: 7\r\n\r\nBackups\r\n--xXXxX
XyYYzzz\r\nContent-Disposition: form-data; name="Subject"\r\nContent-Type: text/
plain; charset=utf-8\r\nContent-Length: 26\r\n\r\nTest%20Ticket%20Python%202\r\n
--xXXxXXyYYzzz--\r\n'
[INFO] POST
[INFO] https://rt.redactedurl.com/REST/1.0/ticket/new
[DEBUG] HTTP_STATUS: 200 OK
[DEBUG] 'RT/3.6.6 200 Ok\n\n# Required: id, Queue\n\nid: ticket/new\nQueue: \nRe
questor: jgreen\nSubject: \nCc:\nAdminCc:\nOwner: \nStatus: new\nPriority: \nIni
tialPriority: \nFinalPriority: \nTimeEstimated: 0\nStarts: 2013-07-29 16:19:19\n
Due: 2013-07-29 16:19:19\nText: \n\n'
[DEBUG] RESOURCE_STATUS: 200 Ok
[INFO] [[('id', 'ticket/new'), ('Queue', ''), ('Requestor', 'jgreen'), ('Subject
', ''), ('Cc', ''), ('AdminCc', ''), ('Owner', ''), ('Status', 'new'), ('Priorit
y', ''), ('InitialPriority', ''), ('FinalPriority', ''), ('TimeEstimated', '0'),
 ('Starts', '2013-07-29 16:19:19'), ('Due', '2013-07-29 16:19:19'), ('Text', '')
]]
[INFO] [[('id', 'ticket/new'), ('Queue', ''), ('Requestor', 'jgreen'), ('Subject
', ''), ('Cc', ''), ('AdminCc', ''), ('Owner', ''), ('Status', 'new'), ('Priorit
y', ''), ('InitialPriority', ''), ('FinalPriority', ''), ('TimeEstimated', '0'),
 ('Starts', '2013-07-29 16:19:19'), ('Due', '2013-07-29 16:19:19'), ('Text', '')
]]

この後、新しいチケットは作成されません。

4

2 に答える 2

0

エラーの正確な意味はわかりませんが、ページでマークされているものとデータベースに保存されているものが異なるため、デバイスまたはエリアのキーを変更することで修正できました。

于 2013-07-29T16:34:49.650 に答える