A reviewboard egy egyszerű, de használható eszköz (ha az ember készít hozzá egy jó review allocator programot, de erről majd máskor). A használat során arra törekedtünk, hogy egy commitot több ember is megnézzen, ezt viszont a reviewboard valamiért nem annyira támogatja.
Mint a mellékelt képen is látszik, a reviewboard a ship-it-et egy zöld pipával jelöli. Ha valaki azt mondja a review-re, hogy Ship it, akkor a pipa megjelenik. Ellenben ha több reviewer van egy ticketen, ez nem a legszerencsésebb dolog.
Nekünk az elvárt működés valami ilyesmi lett volna:
Ehhez az alábbi módosításra van szükség:
Első lépésben meg kell keresni menni a reviewboard egg csomagját, ahol a forrás fájlok is (.py) találhatóak. Ez operációs rendszer, python verzió függő, de az alábbi helyen érdemes keresni:
/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.18-py2.7.egg
Az oszlopok definíciója a reviewboard\datagrids\columns.py fájlban van. A ShipIt column-ot előállító kódot meglepő módon ShipItColumn-nak hívják. A kapcsolódó forráskód így néz ki:
class ShipItColumn(Column):
"""Shows the "Ship It" count for a review request."""
def __init__(self, *args, **kwargs):
super(ShipItColumn, self).__init__(
image_class='rb-icon rb-icon-shipit',
image_alt=_('Ship It!'),
detailed_label = _('Ship It!'),
db_field='shipit_count',
sortable=True,
shrink=True,
*args, **kwargs)
def render_data(self, state, review_request):
if review_request.issue_open_count > 0:
return ('<span class="issue-count">'
' <span class="issue-icon">!</span> %s'
'</span>'
% review_request.issue_open_count)
elif review_request.shipit_count > 0:
return '<span class="shipit-count">' \
'
<div class="rb-icon rb-icon-shipit-checkmark"' \ ' title="%s"></div>
%s' \
'</span>' % \
(self.image_alt, review_request.shipit_count)
else:
return ''
A minket érdeklő rész, leginkább az if második fele: review_request.shipit_count > 0:
Itt kezelik azt a részt, ha a ticketen 0-nál több ship it van… Ezt jobb lenne korrektül kezelni, az alábbi módon:
elif review_request.shipit_count > 0:
peoplecount=review_request.target_people.count()
shipicount=review_request.shipit_count
additionalclasstext=''
if shipicount>=peoplecount:
additionalclasstext=' rb-icon-shipit-checkmark'
return '<span class="shipit-count">' \
'
<div class="rb-icon %s"' \ ' title="%s"></div>
%s/%d' \
'</span>' % \
(additionalclasstext, self.image_alt, shipicount, peoplecount)
A fájl szerkesztésénél figyelni kell a szóközökre, ugyanis a python fájlok nagyon nem szeretik a tab-okat, és a szóközök nem csak a formázásra szolgálnak…
A módosítások után, amennyiben van lefordított columns.py fájl (columns.pyc), akkor azt töröljük. Ha valaki szeretné, lefordíthatja újra az alábbi script-el:
#!/usr/bin/env python
import py_compile
py_compile.compile("columns.py")