Merge pull request !2761 from rhodecode-enterprise-ce feature/RCCE-217-checkbox-to-close-delete-source-branch-when-merging-PR
Changes from branch: Feature/RCCE 217 checkbox to close delete source branch when merging PR
This commit is contained in:
commit
33459d44be
14 changed files with 461 additions and 142 deletions
|
|
@ -77,7 +77,6 @@ from zope.cachedescriptors.property import Lazy as LazyProperty
|
|||
|
||||
from webhelpers2.text import remove_formatting
|
||||
|
||||
from rhodecode import ConfigGet
|
||||
from rhodecode.lib.str_utils import safe_bytes
|
||||
from rhodecode.translation import _
|
||||
from rhodecode.lib.vcs import get_vcs_instance, VCSError
|
||||
|
|
@ -108,6 +107,8 @@ from rhodecode.lib.exceptions import ArtifactMetadataDuplicate, ArtifactMetadata
|
|||
from rhodecode.lib.pyramid_utils import get_current_request
|
||||
from rhodecode.model.meta import Base, Session
|
||||
|
||||
DEFAULT_JSON_OBJ_SIZE = 16384
|
||||
|
||||
URL_SEP = "/"
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -4443,13 +4444,23 @@ class _PullRequestBase(BaseModel):
|
|||
_last_merge_target_rev = Column("last_merge_other_rev", String(40), nullable=True)
|
||||
_last_merge_status = Column("merge_status", Integer(), nullable=True)
|
||||
last_merge_metadata = Column(
|
||||
"last_merge_metadata", MutationObj.as_mutable(JsonType(dialect_map=dict(mysql=UnicodeText(16384))))
|
||||
"last_merge_metadata",
|
||||
MutationObj.as_mutable(JsonType(dialect_map=dict(mysql=UnicodeText(DEFAULT_JSON_OBJ_SIZE)))),
|
||||
)
|
||||
|
||||
merge_rev = Column("merge_rev", String(40), nullable=True)
|
||||
|
||||
reviewer_data = Column(
|
||||
"reviewer_data_json", MutationObj.as_mutable(JsonType(dialect_map=dict(mysql=UnicodeText(16384))))
|
||||
"reviewer_data_json",
|
||||
MutationObj.as_mutable(JsonType(dialect_map=dict(mysql=UnicodeText(DEFAULT_JSON_OBJ_SIZE)))),
|
||||
)
|
||||
|
||||
settings = Column(
|
||||
"settings_json",
|
||||
MutationObj.as_mutable(
|
||||
JsonType(dialect_map=dict(mysql=UnicodeText(DEFAULT_JSON_OBJ_SIZE))),
|
||||
),
|
||||
default=dict,
|
||||
)
|
||||
|
||||
@property
|
||||
|
|
@ -4711,6 +4722,7 @@ class PullRequest(Base, _PullRequestBase):
|
|||
attrs.target_ref_parts = pull_request_obj.target_ref_parts
|
||||
attrs.revisions = pull_request_obj.revisions
|
||||
attrs.common_ancestor_id = pull_request_obj.common_ancestor_id
|
||||
attrs.settings = pull_request_obj.settings
|
||||
attrs.shadow_merge_ref = org_pull_request_obj.shadow_merge_ref
|
||||
attrs.reviewer_data = org_pull_request_obj.reviewer_data
|
||||
attrs.reviewer_data_json = org_pull_request_obj.reviewer_data_json
|
||||
|
|
@ -4798,6 +4810,26 @@ class PullRequest(Base, _PullRequestBase):
|
|||
return self.versions_count
|
||||
|
||||
|
||||
@event.listens_for(PullRequest, "before_insert")
|
||||
def _init_pr_default_settings(mapper, connection, pull_request):
|
||||
if not pull_request.settings:
|
||||
pull_request.settings = {
|
||||
"close_branch_before_merging": _inherit_global_settings(pull_request),
|
||||
}
|
||||
|
||||
|
||||
def _inherit_global_settings(pull_request):
|
||||
from rhodecode.model.settings import VcsSettingsModel # handle circular dependency issue
|
||||
|
||||
repo_type = pull_request.target_repo.repo_type
|
||||
settings_model = VcsSettingsModel(repo=pull_request.target_repo)
|
||||
settings = settings_model.get_general_settings()
|
||||
key = "rhodecode_{}_close_branch_before_merging"
|
||||
if repo_type in ["hg", "git"]:
|
||||
return settings.get(key.format(repo_type), False)
|
||||
return False
|
||||
|
||||
|
||||
class PullRequestVersion(Base, _PullRequestBase):
|
||||
__tablename__ = "pull_request_versions"
|
||||
__table_args__ = (base_table_args,)
|
||||
|
|
@ -4860,7 +4892,9 @@ class PullRequestReviewers(Base, BaseModel):
|
|||
pull_requests_reviewers_id = Column("pull_requests_reviewers_id", Integer(), nullable=False, primary_key=True)
|
||||
pull_request_id = Column("pull_request_id", Integer(), ForeignKey("pull_requests.pull_request_id"), nullable=False)
|
||||
user_id = Column("user_id", Integer(), ForeignKey("users.user_id"), nullable=True)
|
||||
_reasons = Column("reason", MutationList.as_mutable(JsonType("list", dialect_map=dict(mysql=UnicodeText(16384)))))
|
||||
_reasons = Column(
|
||||
"reason", MutationList.as_mutable(JsonType("list", dialect_map=dict(mysql=UnicodeText(DEFAULT_JSON_OBJ_SIZE))))
|
||||
)
|
||||
|
||||
mandatory = Column("mandatory", Boolean(), nullable=False, default=False)
|
||||
role = Column("role", Unicode(255), nullable=True, default=ROLE_REVIEWER)
|
||||
|
|
@ -4868,7 +4902,7 @@ class PullRequestReviewers(Base, BaseModel):
|
|||
user = relationship("User")
|
||||
pull_request = relationship("PullRequest", back_populates="reviewers")
|
||||
|
||||
rule_data = Column("rule_data_json", JsonType(dialect_map=dict(mysql=UnicodeText(16384))))
|
||||
rule_data = Column("rule_data_json", JsonType(dialect_map=dict(mysql=UnicodeText(DEFAULT_JSON_OBJ_SIZE))))
|
||||
|
||||
def rule_user_group_data(self):
|
||||
"""
|
||||
|
|
@ -5233,7 +5267,9 @@ class Integration(Base, BaseModel):
|
|||
name = Column("name", String(255), nullable=False)
|
||||
child_repos_only = Column("child_repos_only", Boolean(), nullable=False, default=False)
|
||||
|
||||
settings = Column("settings_json", MutationObj.as_mutable(JsonType(dialect_map=dict(mysql=UnicodeText(16384)))))
|
||||
settings = Column(
|
||||
"settings_json", MutationObj.as_mutable(JsonType(dialect_map=dict(mysql=UnicodeText(DEFAULT_JSON_OBJ_SIZE))))
|
||||
)
|
||||
repo_id = Column("repo_id", Integer(), ForeignKey("repositories.repo_id"), nullable=True, unique=None, default=None)
|
||||
repo = relationship("Repository", lazy="joined", back_populates="integrations")
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue