view test/tx_Source_detector.py @ 5192:302e3a1a7190

Three sets of changes: 1) Make sure that a user doesn't create a query with the same name as an existing query that the user owns. 2) When submitting a new named query, display the name of the query on the index page. 3) Allow optional arguments to indexargs_url by setting their value to None. This will show the argument only if there is a valid value. To match these, changed the template for all search templates so if an error is thrown due to #1 the user stays on the search page so they can fix the issue. Note that I did not add automated tests for these because I couldn't find existing tests for these code paths that I could adapt. I don't understand how the existing Action tests work and there is no doc for them.
author rouilj@uland
date Wed, 08 Mar 2017 22:04:15 -0500
parents 6e9b9743de89
children 64b05e24dbd8
line wrap: on
line source

#
# Example output when the web interface changes item 3 and the email
# (non pgp) interface changes item 4:
#
# tx_SourceCheckAudit(3) pre db.tx_Source: cgi
# tx_SourceCheckAudit(4) pre db.tx_Source: email
# tx_SourceCheckAudit(3) post db.tx_Source: cgi
# tx_SourceCheckAudit(4) post db.tx_Source: email
# tx_SourceCheckReact(4) pre db.tx_Source: email
# tx_SourceCheckReact(4) post db.tx_Source: email
# tx_SourceCheckReact(3) pre db.tx_Source: cgi
# tx_SourceCheckReact(3) post db.tx_Source: cgi
#
# Note that the calls are interleaved, but the proper
# tx_Source is associated with the same ticket.

import time as time

def tx_SourceCheckAudit(db, cl, nodeid, newvalues):
    ''' An auditor to print the value of the source of the
        transaction that trigger this change. The sleep call
        is used to delay the transaction so that multiple changes will
        overlap. The expected output from this detector are 2 lines
        with the same value for tx_Source. Tx source is:
          None - Reported when using a script or it is an error if
                 the change arrives by another method.
          "cli" - reported when using roundup-admin
          "web" - reported when using any web based technique
          "email" - reported when using an unautheticated email based technique
          "email-sig-openpgp" - reported when email with a valid pgp
                                signature is used
    '''
    if __debug__ and False:
        print "\n  tx_SourceCheckAudit(%s) db.tx_Source: %s"%(nodeid, db.tx_Source)

    newvalues['tx_Source'] = db.tx_Source

    # example use for real to prevent a change from happening if it's
    # submited via email
    #
    # if db.tx_Source == "email":
    #    raise Reject, 'Change not allowed via email'

def tx_SourceCheckReact(db, cl, nodeid, oldvalues):
    ''' An reactor to print the value of the source of the
        transaction that trigger this change. The sleep call
        is used to delay the transaction so that multiple changes will
        overlap. The expected output from this detector are 2 lines
        with the same value for tx_Source. Tx source is:
          None - Reported when using a script or it is an error if
                 the change arrives by another method.
          "cli" - reported when using roundup-admin
          "web" - reported when using any web based technique
          "email" - reported when using an unautheticated email based technique
          "email-sig-openpgp" - reported when email with a valid pgp
                                signature is used
    '''

    if __debug__ and False:
        print "  tx_SourceCheckReact(%s) db.tx_Source: %s"%(nodeid, db.tx_Source)



def init(db):
    db.issue.audit('create', tx_SourceCheckAudit)
    db.issue.audit('set', tx_SourceCheckAudit)

    db.issue.react('set', tx_SourceCheckReact)
    db.issue.react('create', tx_SourceCheckReact)

    db.msg.audit('create', tx_SourceCheckAudit)

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