def merge_proposal_modified(merge_proposal, event): """Notify branch subscribers when merge proposals are updated.""" # Check the user. if event.user is None: return if isinstance(event.user, UnauthenticatedPrincipal): from_person = None else: from_person = IPerson(event.user) # If the merge proposal was work in progress, then we don't want to send # out an email as the needs review email will cover that. old_status = event.object_before_modification.queue_status if old_status == BranchMergeProposalStatus.WORK_IN_PROGRESS: # Unless the new status is merged. If this occurs we really should # send out an email. if merge_proposal.queue_status != BranchMergeProposalStatus.MERGED: return # Create a delta of the changes. If there are no changes to report, then # we're done. delta = BranchMergeProposalNoPreviewDiffDelta.construct( event.object_before_modification, merge_proposal) if delta is None: return changes = text_delta( delta, delta.delta_values, delta.new_values, delta.interface) # Now create the job to send the email. getUtility(IMergeProposalUpdatedEmailJobSource).create( merge_proposal, changes, from_person)
def merge_proposal_modified(merge_proposal, event): """Notify branch subscribers when merge proposals are updated.""" # Check the user. if event.user is None: return if isinstance(event.user, UnauthenticatedPrincipal): from_person = None else: from_person = IPerson(event.user) # If the merge proposal was work in progress, then we don't want to send # out an email as the needs review email will cover that. old_status = event.object_before_modification.queue_status if old_status == BranchMergeProposalStatus.WORK_IN_PROGRESS: # Unless the new status is merged. If this occurs we really should # send out an email. if merge_proposal.queue_status != BranchMergeProposalStatus.MERGED: return # Create a delta of the changes. If there are no changes to report, then # we're done. delta = BranchMergeProposalNoPreviewDiffDelta.construct( event.object_before_modification, merge_proposal) if delta is None: return changes = text_delta(delta, delta.delta_values, delta.new_values, delta.interface) # Now create the job to send the email. getUtility(IMergeProposalUpdatedEmailJobSource).create( merge_proposal, changes, from_person)
def merge_proposal_modified(merge_proposal, event): """Notify branch subscribers when merge proposals are updated.""" # Check the user. if event.user is None: return if isinstance(event.user, UnauthenticatedPrincipal): from_person = None else: from_person = IPerson(event.user) old_status = event.object_before_modification.queue_status new_status = merge_proposal.queue_status in_progress_states = (BranchMergeProposalStatus.WORK_IN_PROGRESS, BranchMergeProposalStatus.NEEDS_REVIEW) # If the merge proposal was work in progress and is now needs review, # then we don't want to send out an email as the needs review email will # cover that. if (old_status != BranchMergeProposalStatus.WORK_IN_PROGRESS or new_status not in in_progress_states): # Create a delta of the changes. If there are no changes to report, # then we're done. delta = BranchMergeProposalNoPreviewDiffDelta.construct( event.object_before_modification, merge_proposal) if delta is not None: changes = text_delta(delta, delta.delta_values, delta.new_values, delta.interface) # Now create the job to send the email. getUtility(IMergeProposalUpdatedEmailJobSource).create( merge_proposal, changes, from_person) if getFeatureFlag(BRANCH_MERGE_PROPOSAL_WEBHOOKS_FEATURE_FLAG): payload = { "action": "modified", "old": _compose_merge_proposal_webhook_payload( event.object_before_modification), "new": _compose_merge_proposal_webhook_payload(merge_proposal), } # Some fields may not be in the before-modification snapshot; take # values for these from the new object instead. for field in payload["old"]: if not hasattr(event.object_before_modification, field): payload["old"][field] = payload["new"][field] _trigger_webhook(merge_proposal, payload)