~fginther/jenkins-launchpad-plugin/indirect-team-membership

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import re
from settings import LAUNCHPAD_REVIEW_TYPE
from mergeproposalreview import MergeProposalReview


def get_branch_from_mp(merge_proposal):
    """Return a link to branch given a link to a merge proposal.

    If merge_proposal is:
      https://copde.launchpad.net/~user/project/name/+merge/12345
    then the result will be:
      https://copde.launchpad.net/~user/project/name/

    :param merge_proposal: url of a launchpad merge proposal
    """
    m = re.search('(.*)\+merge/[0-9]+$', merge_proposal)
    if m:
        return m.group(1)
    return None


def change_mp_status(mp, status, message, subject, revision, vote=None):
    """Change status (vote) of merge proposal.

    :param status: merge proposal status (e.g. "Needs review")
    :param message: message for the vote
    :param subject: subject for the e-mail with the message
    :param revision: revision against which this message is valid
    :param vote: None or something from LaunchpadVote
                 (e.g. LaunchpadVote.NEEDS_FIXING)
    """
    mp.setStatus(status=status, revid=revision)
    if vote:
        mp.createComment(review_type=LAUNCHPAD_REVIEW_TYPE,
                         subject=subject, content=message, vote=vote)
        review = MergeProposalReview(mp)
        review.unlock()
    else:
        mp.createComment(review_type=LAUNCHPAD_REVIEW_TYPE,
                         subject=subject, content=message)