support changes of issue content
This commit is contained in:
parent
f951f51b3d
commit
4a29a246a2
4 changed files with 32 additions and 3 deletions
|
|
@ -56,6 +56,8 @@ class IssueFormatter(IFormatter):
|
||||||
result += '\nHistory:\n'
|
result += '\nHistory:\n'
|
||||||
for u in item['history']:
|
for u in item['history']:
|
||||||
result += '* %s%s - %s%s\n' % (self.BOLD, u.date, u.author, self.NC)
|
result += '* %s%s - %s%s\n' % (self.BOLD, u.date, u.author, self.NC)
|
||||||
|
for change in u.changes:
|
||||||
|
result += ' - %s%s%s: %s -> %s\n' % (self.BOLD, change.field, self.NC, change.last, change.new)
|
||||||
if u.message:
|
if u.message:
|
||||||
result += html2text(u.message)
|
result += html2text(u.message)
|
||||||
return result
|
return result
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,9 @@
|
||||||
from __future__ import with_statement
|
from __future__ import with_statement
|
||||||
|
|
||||||
from weboob.capabilities.content import ICapContent, Content
|
from weboob.capabilities.content import ICapContent, Content
|
||||||
from weboob.capabilities.bugtracker import ICapBugTracker, Issue, Project, User, Version, Status, Update, Attachment, Query
|
from weboob.capabilities.bugtracker import ICapBugTracker, Issue, Project, User, \
|
||||||
|
Version, Status, Update, Attachment, \
|
||||||
|
Query, Change
|
||||||
from weboob.capabilities.collection import ICapCollection, Collection, CollectionNotFound
|
from weboob.capabilities.collection import ICapCollection, Collection, CollectionNotFound
|
||||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||||
from weboob.tools.browser import BrowserHTTPNotFound
|
from weboob.tools.browser import BrowserHTTPNotFound
|
||||||
|
|
@ -186,6 +188,13 @@ class RedmineBackend(BaseBackend, ICapContent, ICapBugTracker, ICapCollection):
|
||||||
update.author = issue.project.find_user(*u['author'])
|
update.author = issue.project.find_user(*u['author'])
|
||||||
update.date = u['date']
|
update.date = u['date']
|
||||||
update.message = u['message']
|
update.message = u['message']
|
||||||
|
update.changes = []
|
||||||
|
for i, (field, last, new) in enumerate(u['changes']):
|
||||||
|
change = Change(i)
|
||||||
|
change.field = field
|
||||||
|
change.last = last
|
||||||
|
change.new = new
|
||||||
|
update.changes.append(change)
|
||||||
issue.history.append(update)
|
issue.history.append(update)
|
||||||
issue.author = issue.project.find_user(*params['author'])
|
issue.author = issue.project.find_user(*params['author'])
|
||||||
issue.assignee = issue.project.find_user(*params['assignee'])
|
issue.assignee = issue.project.find_user(*params['assignee'])
|
||||||
|
|
|
||||||
|
|
@ -258,6 +258,17 @@ class IssuePage(NewIssuePage):
|
||||||
else:
|
else:
|
||||||
update['message'] = None
|
update['message'] = None
|
||||||
|
|
||||||
|
changes = []
|
||||||
|
for li in self.parser.select(div, 'ul.details', 1).findall('li'):
|
||||||
|
field = li.find('strong').text.decode('utf-8')
|
||||||
|
if len(li.findall('i')) == 2:
|
||||||
|
last = li.findall('i')[0].text.decode('utf-8')
|
||||||
|
else:
|
||||||
|
last = None
|
||||||
|
new = li.findall('i')[-1].text.decode('utf-8')
|
||||||
|
changes.append((field, last, new))
|
||||||
|
update['changes'] = changes
|
||||||
|
|
||||||
params['updates'].append(update)
|
params['updates'].append(update)
|
||||||
|
|
||||||
return params
|
return params
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,13 @@ class Attachment(CapBaseObject):
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<Attachment %r>' % self.filename
|
return '<Attachment %r>' % self.filename
|
||||||
|
|
||||||
|
class Change(CapBaseObject):
|
||||||
|
def __init__(self, id):
|
||||||
|
CapBaseObject.__init__(self, id)
|
||||||
|
self.add_field('field', unicode)
|
||||||
|
self.add_field('last', unicode)
|
||||||
|
self.add_field('new', unicode)
|
||||||
|
|
||||||
class Update(CapBaseObject):
|
class Update(CapBaseObject):
|
||||||
def __init__(self, id):
|
def __init__(self, id):
|
||||||
CapBaseObject.__init__(self, id)
|
CapBaseObject.__init__(self, id)
|
||||||
|
|
@ -108,8 +115,8 @@ class Update(CapBaseObject):
|
||||||
self.add_field('date', datetime)
|
self.add_field('date', datetime)
|
||||||
self.add_field('hours', timedelta)
|
self.add_field('hours', timedelta)
|
||||||
self.add_field('message', unicode)
|
self.add_field('message', unicode)
|
||||||
self.add_field('attachments', (list,tuple))
|
self.add_field('attachments', (list,tuple)) # Attachment
|
||||||
self.add_field('changes', (list,tuple))
|
self.add_field('changes', (list,tuple)) # Change
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<Update %r>' % self.id
|
return '<Update %r>' % self.id
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue