2012-12-28 40 views
1

我有一个trac服务器运行在http://127.0.0.1:8001/project/ 然后我想通过脚本查询门票而不是从Web UI。所以我在互联网上搜索并获取插件tracxmlrpc,我将它安装在我的trac服务器上,然后尝试使用脚本查询故障单。代码如下:有没有办法从trac远程查询门票

import xmlrpclib 
server = xmlrpclib.ServerProxy('http://user:[email protected]:8001/project/login/xmlrpc') 
tickets = server.ticket.query('max=0') 

但是这代码不能工作,谁可以告诉我如何使它工作,或是否有任何其他方式来实现远程查询功能。

+1

我相信trackxmlrpc插件是从远程查询Trac安装的最佳方式。你可以给我们一些关于为什么上面的代码不起作用的更多细节吗?你的代码是否返回错误或者只是没有票据? –

回答

0

确定它可以工作。就像你期待的一样。这是我的验证与关键配置细节:

  1. 一个空的测试项目在http://127.0.0.1:8000/trac/
  2. 项目配置为使用基本身份验证是由Python xmlrpclib支持的唯一主办。
  3. 用户'foo'与密码'bar'XML_RPC权限(允许通过API调用)和TICKET_VIEW权限被允许查看票证。
  4. 我创建了2张票,#1已关闭,而#2仍处于打开状态。

互动代码:

>>> import xmlrpclib 
>>> server = xmlrpclib.ServerProxy('http://foo:[email protected]:8000/trac/login/rpc') 
>>> server.ticket.query('max=0') 
[1, 2] 
>>> server.ticket.query('max=0&status!=closed') 
[2] 
>>> server.ticket.get(2) 
[2, 
<DateTime '20130104T11:48:08' at 10392c2d8>, 
<DateTime '20130104T11:48:08' at 10392c320>, 
{'_ts': '1357300088007920', 
    'cc': '', 
    'changetime': <DateTime '20130104T11:48:08' at 10392c368>, 
    'component': 'component1', 
    'description': '', 
    'keywords': '', 
    'milestone': 'milestone1', 
    'owner': '', 
    'priority': 'major', 
    'reporter': 'admin', 
    'resolution': '', 
    'status': 'new', 
    'summary': 'stackoverflow test', 
    'time': <DateTime '20130104T11:48:08' at 10392c3b0>, 
    'type': 'defect', 
    'version': ''}] 

这通常是始终认证或相关许可,因此,以验证RPC插件和查询工作,你可以临时分配XML_RPCTICKET_VIEW权限的用户anonymous,并使用此服务器代理,而不是(从网址中删除foo:[email protected]/login):

server = xmlrpclib.ServerProxy('http://127.0.0.1:8000/trac/rpc') 
+0

另一种测试身份验证问题的方法是使用您的浏览器。如果您尝试访问URL“http://127.0.0.1:8001/project/login/xmlrpc”,则应提示您输入凭据,然后转到说明如何使用RPC界面的页面。如果您没有收到密码提示,那么您的网址不正确。如果登录时出现错误,请重新检查您的凭据和帐户权限。 – bta

+1

不,通过浏览器测试身份验证不会相同。浏览器比'xmlrpclib'具有更好的认证支持。如果该网站配置了摘要认证,浏览器将愉快地播放,而'xmlrpclib'将失败,因为它没有摘要认证支持。在[此票]上查看我的回答(http://trac-hacks.org/ticket/9198)。 – osimons

+0

使用浏览器的目的只是为了验证您是否使用了正确的URL,您的用户名和密码是否正确以及您的帐户是否具有正确的权限(这是我经历中的常见错误)。如果其中一个确实是问题,那么通过浏览器进行调试和测试比通过脚本更容易。 – bta

0

无耻插件,但我写了一个PHP库,通过远程过程调用与Trac Bugtracker API交互。

https://github.com/jakoch/PHPTracRPC

要求

  • PHP 5.3.0或更高
  • 与PHP扩展 “JSON” 和 “卷曲”
  • Trac系统与XmlRpcPlugin

基本用法示例

include 'TracRPC.php'; 

$credentials = array('username' => 'username', 'password' => 'password'); 

$trac = new TracRPC('http://trac.example.com/login/jsonrpc', $credentials); 

$result = $trac->getTicket('32'); 
+0

感谢分享。将不得不检查出来。 – Drew