Modify

Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#7651 closed defect (worksforme)

Unable to create version and set time field (can't send a datetime.datetime)

Reported by: pipern Owned by: Odd Simon Simonsen
Priority: normal Component: XmlRpcPlugin
Severity: normal Keywords:
Cc: Trac Release: 0.12

Description

Unable to create version and set time field, as it expects datetime.datetime but that can't be marshalled. If we send it as a string, we get:

xmlrpclib.Fault: <Fault 1: "'unsupported operand type(s) for -: 'str' and 'datetime.datetime'' while executing 'ticket.version.create()'">

Attachments (0)

Change History (4)

comment:1 Changed 6 years ago by pipern

Examples which fail:

attrs = {"time":datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")}
server.ticket.version.create("3.0", attrs)
attrs = {"time":datetime.datetime.utcnow()}
server.ticket.version.create("3.0", attrs)

comment:2 Changed 6 years ago by Odd Simon Simonsen

Resolution: worksforme
Status: newclosed

Using what protocol? XML-RPC has native support for marshalling datetime values, but that is not the same type as the default Python datetime type. What you want to use is xmlrpclib.DateTime datatype, that according to docs:

DateTime wrapper for an ISO 8601 string or time tuple or localtime integer value to generate 'dateTime.iso8601' XML-RPC value.

Seeing you are working with Python as client, you want to look at the xmlrpclib standard library documentation.

comment:3 Changed 6 years ago by pipern

Ah, thanks for that.

Indeed, this works perfectly:

   attrs = {"time":xmlrpclib.DateTime(datetime.datetime.utcnow())}
   server.ticket.version.create(version, attrs)

comment:4 Changed 6 years ago by Odd Simon Simonsen

Now even with a test case for illustration (and verification) - see [8688] :-)

Modify Ticket

Action
as closed The owner will remain Odd Simon Simonsen.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.