feature: adds DB model and global settings inheritance
This commit is contained in:
parent
7c72d6d74b
commit
b42333562d
3 changed files with 108 additions and 10 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__)
|
||||
|
||||
|
|
@ -364,7 +365,7 @@ class BaseModel(object):
|
|||
return cls.query().all()
|
||||
|
||||
@classmethod
|
||||
def delete(cls, id_):
|
||||
def delete(cls, id_): # noqa: F811
|
||||
obj = cls.query().get(id_)
|
||||
Session().delete(obj)
|
||||
|
||||
|
|
@ -418,7 +419,7 @@ class RhodeCodeSetting(Base, BaseModel):
|
|||
|
||||
@validates("_app_settings_value")
|
||||
def validate_settings_value(self, key, val):
|
||||
assert type(val) == str
|
||||
assert type(val) is str
|
||||
return val
|
||||
|
||||
@hybrid_property
|
||||
|
|
@ -535,7 +536,7 @@ class RepoRhodeCodeSetting(Base, BaseModel):
|
|||
|
||||
@validates("_app_settings_value")
|
||||
def validate_settings_value(self, key, val):
|
||||
assert type(val) == str
|
||||
assert type(val) is str
|
||||
return val
|
||||
|
||||
@hybrid_property
|
||||
|
|
@ -4442,13 +4443,15 @@ 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)))),
|
||||
)
|
||||
|
||||
@property
|
||||
|
|
@ -4632,6 +4635,13 @@ class PullRequest(Base, _PullRequestBase):
|
|||
LATEST_VER = "latest"
|
||||
|
||||
pull_request_id = Column("pull_request_id", Integer(), nullable=False, primary_key=True)
|
||||
settings = Column(
|
||||
"settings_json",
|
||||
MutationObj.as_mutable(
|
||||
JsonType(dialect_map=dict(mysql=UnicodeText(DEFAULT_JSON_OBJ_SIZE))),
|
||||
),
|
||||
default=dict,
|
||||
)
|
||||
|
||||
def __repr__(self):
|
||||
if self.pull_request_id:
|
||||
|
|
@ -4797,6 +4807,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,)
|
||||
|
|
@ -4859,7 +4889,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)
|
||||
|
|
@ -4867,7 +4899,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):
|
||||
"""
|
||||
|
|
@ -5232,7 +5264,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