uadd = []
urem = []
+ id = btsbug.id()
oldStatus = btsbug.remoteStatus()
oldResolution = btsbug.remoteResolution()
wasClosed = rbug.bts.isClosing(oldStatus, oldResolution)
wasWontfix = rbug.bts.isWontfix(oldStatus, oldResolution)
- if 'upstream' not in btsbug.tags():
- add.append('upstream')
-
+ do = ["# remote status report for #%s" % (id)]
# test if remote status changed
- if rbug.status() != oldStatus:
+ tmp = rbug.status()
+ if tmp != oldStatus:
+ do.append("# * remote status changed: %s -> %s" % (oldStatus or "(?)", tmp))
if rbug.status():
- uadd.append("status-%s" % rbug.status())
+ uadd.append("status-%s" % tmp)
if oldStatus:
urem.append("status-%s" % oldStatus)
# test if remote resolution changed
+ tmp = rbug.resolution()
if rbug.resolution() != oldResolution:
+ do.append("# * remote resolution changed: %s -> %s" % (oldResolution or "(?)", tmp))
if rbug.status():
uadd.append("resolution-%s" % rbug.resolution())
if oldResolution:
if rbug.isClosed() != wasClosed:
if rbug.isClosed():
if 'fixed-upstream' not in btsbug.tags():
+ do.append("# * closed upstream")
add.append('fixed-upstream')
else:
if 'fixed-upstream' in btsbug.tags():
+ do.append("# * reopen upstream")
rem.append('fixed-upstream')
# look if we have to change the 'wontfix' tag
if rbug.isWontfix() != wasWontfix:
if rbug.isWontfix():
if 'wontfix' not in btsbug.tags():
+ do.append("# * upstream said bug is wontfix")
+ add.append('upstream')
add.append('wontfix')
else:
if 'wontfix' in btsbug.tags():
+ do.append("# * upstream said bug isn't wontfix anymore")
rem.append('wontfix')
# build mail
res = []
- id = btsbug.id()
if not rbug.isForwarded(btsbug.fwd()):
res.append("forwarded %s %s" % (id, rbug.uri()))
if uadd:
res.append("usertags %s + %s" % (id, ' '.join(uadd)))
+ if res:
+ res = do + res + ['']
+
return res
class Task(threading.Thread):
-
def __init__(self, srcpkg, q, debug = False):
self._spkg = srcpkg
self._queue = q
return
precmds = []
+ precmds.append("#")
precmds.append("# bts-link upstream status pull for source package %s" % (self._spkg))
precmds.append("# see http://lists.debian.org/debian-devel-announce/2006/05/msg00001.html")
precmds.append("#")
precmds.append("user %s" % (Cnf.get('general', 'user')))
+ precmds.append("")
cmds.append('thanks')
# SUCH DAMAGE.
###############################################################################
-import sys
+import sys, re
class RemoteReport:
+ _tokenre = re.compile("[^a-zA-Z0-9@.+\-]")
+
def __init__(self, uri, data, bts):
self._uri = uri
self._data = data
def id(self):
return self.bts._bugId(self._data)
+ def _makeToken(self, val):
+ return RemoteReport._tokenre.sub('-', val)
+
def status(self):
- return self.bts._bugStatus(self._data)
+ return self._makeToken(self.bts._bugStatus(self._data))
def resolution(self):
- return self.bts._bugResolution(self._data)
+ return self._makeToken(self.bts._bugResolution(self._data))
def isClosed(self):
return self.bts.isClosing(self.status(), self.resolution())