• 
      

    Cleanup and refactor the e-mail module

    Review Request #7560 — Created July 30, 2015 and submitted — Latest diff uploaded

    Information

    Review Board
    release-2.0.x

    Reviewers

    The recipient building portion of send_review_mail has been
    refactored out into two methods: build_recipients, which returns sets
    of Users and Groups that should receive the e-mail, as well as
    recipients_to_addresses, which builds sets of addresses with fewer
    queries than before.

    The logic of determing the recipients of an e-mail has been moved out
    of send_review_mail and the signature of the function has changed to
    accept the TO and CC fields as sets or lists of Users and
    Groups. The logic has also been corrected to no longer send e-mails
    to the following:

    • users who have starred a review request but are no longer in the
      review request's local site;
    • users in the limit_recipients_to list who are inactive; and
    • users in the limit_recipients_to list who are no longer part of
      the review request's local site.

    All methods that call into send_review_mail to send e-mail now must
    calculate the addresses they will be sending to. This is to allow for
    a future change to allow extensions to filter the TO and CC
    fields of e-mails.

    A large portion of this change is a style and docstring cleanup to
    bring it in line with our style guidelines as well as adding numerous
    new unit tests to cover all the behaviour of the two new functions
    and ensure it does not regress.

    Ran unit tests.