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. 許可 (API を介した呼び出しを許可する) と、チケットを表示できる許可の両方を'foo'持つパスワードを持つユーザー。'bar'XML_RPCTICKET_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 プラグインとクエリが機能することを確認するには、一時的にXML_RPCTICKET_VIEWパーミッションを useranonymousに割り当て、代わりにこのサーバー プロキシを使用します ( URL から と を削除します) foo:bar@/login

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