view website/issues/detectors/statusauditor.py @ 7891:3de80157606c

fix: revert markdown2 version limitation; markdown2 bug resolved Revert this checkin since 2.4.13 with the fix is current: changeset: 7509:46248c3ca7af user: John Rouillard <rouilj@ieee.org> date: Sun Jun 25 17:03:38 2023 -0400 files: .github/workflows/ci-test.yml .travis.yml description: markdown2 v2.4.9 is broken. Pin to 2.4.8 or earlier. Revert when https://github.com/trentm/python-markdown2/issues/517 is fixed.
author John Rouillard <rouilj@ieee.org>
date Sat, 20 Apr 2024 12:42:49 -0400
parents 13e8f188f8dd
children
line wrap: on
line source

def preset_new(db, cl, nodeid, newvalues):
    """ Make sure the status is set on new issues"""

    if 'status' in newvalues and newvalues['status']:
        return

    new = db.status.lookup('new')
    newvalues['status'] = new

def update_pending(db, cl, nodeid, newvalues):
    ''' If the issue is currently 'pending' and person other than assigned
        updates it, then set it to 'open'.
    '''
    # don't fire if there's no new message (ie. update)
    if 'messages' not in newvalues:
        return
    if newvalues['messages'] == cl.get(nodeid, 'messages'):
        return

    # get the open state ID
    try:
        open_id = db.status.lookup('open')
    except KeyError:
        # no open state, ignore all this stuff
        return

    # get the current value
    current_status = cl.get(nodeid, 'status')

    # see if there's an explicit change in this transaction
    if 'status' in newvalues:
        # yep, skip
        return

    assignee = cl.get(nodeid, 'assignee')
    if assignee == db.getuid():
        # this change is brought to you by the assignee and number 4
        # so don't change status.
        return

    # determine the id of 'pending'
    fromstates = []
    for state in 'pending'.split():
        try:
            fromstates.append(db.status.lookup(state))
        except KeyError:
            pass

    # ok, there's no explicit change, so check if we are in a state that
    # should be changed
    if current_status in fromstates + [None]:
        # yep, we're now open
        newvalues['status'] = open_id

def init(db):
    # fire before changes are made
    db.issue.audit('create', preset_new)
    db.issue.audit('set', update_pending)

Roundup Issue Tracker: http://roundup-tracker.org/