diff --git a/progit/lib.py b/progit/lib.py index 82691eb..13ed5c4 100644 --- a/progit/lib.py +++ b/progit/lib.py @@ -680,14 +680,17 @@ def get_pull_request( return query.first() -def close_pull_request(session, request): +def close_pull_request(session, request, merged=True): ''' Close the provided pull-request. ''' request.status = False session.add(request) session.flush() - progit.notify.notify_merge_pull_request(request) + if merged == True: + progit.notify.notify_merge_pull_request(request) + else: + progit.notify.notify_cancelled_pull_request(request) def get_issue_statuses(session): diff --git a/progit/notify.py b/progit/notify.py index 203ee2d..1b5292b 100644 --- a/progit/notify.py +++ b/progit/notify.py @@ -201,3 +201,41 @@ Merged pull-request: ','.join(mail_to), mail_id=request.mail_id, ) + + +def notify_cancelled_pull_request(request): + ''' Notify the people following a project that a pull-request was + cancelled in it. + ''' + text = """ +%s canceled a pull-request against the project: `%s` that you are following. + +Cancelled pull-request: + +`` +%s +`` + +%s +""" % ( + request.user.user, + request.repo.name, + request.title, + '%s/%s/request-pull/%s' % ( + progit.APP.config['APP_URL'], + request.repo.name, + request.id, + ), + ) + mail_to = set([cmt.user.emails[0].email for cmt in request.comments]) + mail_to.add(request.repo.user.emails[0].email) + for prouser in request.repo.users: + if prouser.user.emails: + mail_to.add(prouser.user.emails[0].email) + + send_email( + text, + 'Pull-Request #%s `%s`' % (request.id, request.title), + ','.join(mail_to), + mail_id=request.mail_id, + ) diff --git a/progit/templates/pull_request.html b/progit/templates/pull_request.html index e04f3e4..9e37b99 100644 --- a/progit/templates/pull_request.html +++ b/progit/templates/pull_request.html @@ -21,12 +21,16 @@ {% if request %}