fix(auto-merge): fixed automatic PR merging f-ty.

This commit is contained in:
Serhii Ilin 2025-01-17 16:15:28 +02:00
parent fbdae085e5
commit 038709a7ac
2 changed files with 32 additions and 28 deletions

View file

@ -45,7 +45,13 @@ class PyramidPartialRenderer(object):
self.request = request
def _mako_lookup(self):
_tmpl_lookup = get_renderer("root.mako").lookup
try:
_tmpl_lookup = get_renderer("root.mako").lookup
except ValueError:
# TODO: this is a workaround for exception happening with auto-merge enabled, to be replaced with proper fix
from mako.lookup import TemplateLookup
_tmpl_lookup = TemplateLookup(["rhodecode/templates", "rhodecode/templates/email_templates"])
self.tmpl_name = self.tmpl_name.replace("rhodecode:templates/", "")
return _tmpl_lookup.get_template(self.tmpl_name)
def get_call_context(self):

View file

@ -59,33 +59,31 @@ def add_renderer_globals(event):
def auto_merge_pr_if_needed(event):
# TODO To be re-enabled later
pass
# from rhodecode.model.db import PullRequest
# from rhodecode.model.pull_request import (
# PullRequestModel, ChangesetStatus, MergeCheck
# )
#
# pr_event_data = event.as_dict()['pullrequest']
# pull_request = PullRequest.get(pr_event_data['pull_request_id'])
# calculated_status = pr_event_data['status']
# if (calculated_status == ChangesetStatus.STATUS_APPROVED
# and PullRequestModel().is_automatic_merge_enabled(pull_request)):
# user = pull_request.author.AuthUser()
#
# merge_check = MergeCheck.validate(
# pull_request, user, translator=lambda x: x, fail_early=True
# )
# if merge_check.merge_possible:
# from rhodecode.lib.base import vcs_operation_context
# extras = vcs_operation_context(
# event.request.environ, repo_name=pull_request.target_repo.repo_name,
# username=user.username, action='push',
# scm=pull_request.target_repo.repo_type)
# from rc_ee.lib.celerylib.tasks import auto_merge_repo
# auto_merge_repo.apply_async(
# args=(pull_request.pull_request_id, extras), countdown=3
# )
from rhodecode.model.db import PullRequest
from rhodecode.model.pull_request import (
PullRequestModel, ChangesetStatus, MergeCheck
)
pr_event_data = event.as_dict()["pullrequest"]
pull_request = PullRequest.get(pr_event_data["pull_request_id"])
calculated_status = pr_event_data["status"]
if (calculated_status == ChangesetStatus.STATUS_APPROVED
and PullRequestModel().is_automatic_merge_enabled(pull_request)):
user = pull_request.author.AuthUser()
merge_check = MergeCheck.validate(
pull_request, user, translator=lambda x: x, fail_early=True
)
if merge_check.merge_possible:
from rhodecode.lib.base import vcs_operation_context
extras = vcs_operation_context(
event.request.environ, repo_name=pull_request.target_repo.repo_name,
username=user.username, action="push",
scm=pull_request.target_repo.repo_type)
from rc_ee.lib.celerylib.tasks import auto_merge_repo
auto_merge_repo.apply_async(
args=(pull_request.pull_request_id, extras), countdown=3
)
def set_user_lang(event):