1

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

import xmlrpclib
server = xmlrpclib.ServerProxy('http://user:111@127.0.0.1:8001/project/login/xmlrpc')
tickets = server.ticket.query('max=0')

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

4

2 回答 2

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:bar@127.0.0.1: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 插件和查询是否有效,您可以临时为 user 分配权限,XML_RPC并改用此服务器代理(从 URL 中删除和):TICKET_VIEWanonymousfoo:bar@/login

server = xmlrpclib.ServerProxy('http://127.0.0.1:8000/trac/rpc')
于 2013-01-04T12:06:11.543 回答
0

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

https://github.com/jakoch/PHPTracRPC

要求

  • PHP 5.3.0 或更高版本
  • 使用 PHP 扩展“JSON”和“cURL”
  • 使用 XmlRpcPlugin 跟踪

基本使用示例

include 'TracRPC.php';

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

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

$result = $trac->getTicket('32');
于 2016-03-09T17:34:27.893 回答