1
2
3
4 import xmlrpclib
5
6 from moap.bug import bug
7
9
10 if URL.find('trac') == -1:
11 return None
12
13 if URL.find('/newticket') > -1:
14 URL = URL[:URL.find('/newticket')]
15
16 return URL
17
18 -class Trac(bug.BugTracker):
20 bug.BugTracker.__init__(self, URL)
21 self.debug('Contacting server at %s' % self.URL)
22 self._server = xmlrpclib.ServerProxy(self.URL + '/xmlrpc')
23
25 """
26 @type id: str
27 """
28 try:
29 ticket = self._server.ticket.get(int(id))
30 except xmlrpclib.Fault, e:
31
32
33
34 if e.faultString.find(' does not exist') > -1:
35 raise bug.NotFoundError(id)
36
37
38 raise e
39
40 if not ticket:
41 return
42 return self._getBugFromTicket(ticket)
43
44 - def query(self, queryString):
45
46 __pychecker__ = 'no-objattrs'
47 multicall = xmlrpclib.MultiCall(self._server)
48 try:
49 result = self._server.ticket.query(queryString)
50 except xmlrpclib.Fault, e:
51 raise e
52 for r in result:
53 multicall.ticket.get(r)
54
55 ret = [self._getBugFromTicket(t) for t in multicall()]
56 self.debug('Found %d bugs' % len(ret))
57 return ret
58
60 """
61 @type ticket: a list as returned by Trac's xml-rpc interface
62 """
63 bugId = ticket[0]
64 d = ticket[3]
65 summary = d['summary']
66 return bug.Bug(bugId, summary)
67
68 BugClass = Trac
69