Index: pylib/mozreview/mozreview/errors.py =================================================================== --- pylib/mozreview/mozreview/errors.py +++ pylib/mozreview/mozreview/errors.py @@ -97,5 +97,10 @@ REVIEW_REQUEST_UPDATE_NOT_ALLOWED = WebAPIError( 1009, "Updating review request not allowed at this time.", http_status=405) # 405 Method not Allowed + +USE_PHABRICATOR = WebAPIError( + 1010, + "New review requests are no longer supported.", + http_status=405) Index: pylib/mozreview/mozreview/resources/batch_review_request.py =================================================================== --- pylib/mozreview/mozreview/resources/batch_review_request.py +++ pylib/mozreview/mozreview/resources/batch_review_request.py @@ -51,10 +51,11 @@ WebAPIResource, ) from mozreview.errors import ( REVIEW_REQUEST_UPDATE_NOT_ALLOWED, + USE_PHABRICATOR, ) from mozreview.extra_data import ( AUTHOR_KEY, BASE_COMMIT_KEY, COMMITS_KEY, @@ -96,10 +97,21 @@ You must reopen the review request before it can be updated. Review requests should only be reopened if your changes have not landed or have been backed out - file new bugs for follow-up work. '''.strip() +USE_PHABRICATOR_MESSAGE = ''' + +**************************************************** +MozReview Is No Longer Accepting New Review Requests +**************************************************** + +Please use Phabricator for new review requests. +See https://moz-conduit.readthedocs.io/ for the +Phabricator installation and user guide. +'''.rstrip() + class DiffProcessingException(Exception): pass @@ -396,10 +408,22 @@ SUBMITTED_OR_DISCARDED_ERROR)) logger.info('using squashed review request %d' % squashed_rr.id) except ReviewRequest.DoesNotExist: + prevent_new_requests = False + try: + with open('/mozreview-settings.json', 'r') as f: + settings = json.load(f) + prevent_new_requests = settings['prevent_new'] + except (IOError, KeyError): + pass + if prevent_new_requests: + raise SubmissionException( + USE_PHABRICATOR.with_message(USE_PHABRICATOR_MESSAGE) + ) + squashed_rr = ReviewRequest.objects.create( user=user, repository=repo, commit_id=identifier, local_site=local_site) squashed_commit_data = fetch_commit_data(squashed_rr)