rtkit дает ValueError: для распаковки нужно более 1 значения

У меня есть скрипт на python, использующий python-rtkit для создания билетов в Request Tracker (RT), и я могу заставить его работать с полями 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)

Кто-нибудь знает, что означает эта ошибка и что ее вызывает (чтобы я мог ее исправить)?

РЕДАКТИРОВАТЬ: Я считаю, что стоит отметить, что, если я просто удаляю запись "Устройство или область" для нового билета, он работает нормально. Это добавление этого поля (или почти любого другого поля в этом отношении) нарушает код.

РЕДАКТИРОВАТЬ: @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', '')
]]

После этого новый билет не создается.

2 ответа

Решение

"Устройство или область" выглядит как настраиваемое поле, поэтому вы захотите добавить "CF-" к его передней части, чтобы соответствовать тому, что интерфейс RT REST ожидает для настраиваемых полей. Вы можете увидеть основной синтаксис REST в вики сообщества здесь.

Я не знаю, что именно означает эта ошибка, но я смог ее исправить, изменив ключ для устройства или области, потому что очевидно, что он помечен как на странице, и как он хранится в базе данных, разные.

Другие вопросы по тегам