review-rules: extend code to support the forbid commit authors.

This commit is contained in:
Marcin Kuzminski 2017-06-08 13:39:54 +02:00
parent 53d41696e0
commit 36f3dd22fb
5 changed files with 59 additions and 5 deletions

View file

@ -51,7 +51,7 @@ PYRAMID_SETTINGS = {}
EXTENSIONS = {}
__version__ = ('.'.join((str(each) for each in VERSION[:3])))
__dbversion__ = 77 # defines current db version for migrations
__dbversion__ = 78 # defines current db version for migrations
__platform__ = platform.system()
__license__ = 'AGPLv3, and Commercial License'
__author__ = 'RhodeCode GmbH'

View file

@ -261,8 +261,8 @@ class PullrequestsController(BaseRepoController):
# recalculate reviewers logic, to make sure we can validate this
reviewer_rules = get_default_reviewers_data(
c.rhodecode_user, source_db_repo, source_commit, target_db_repo,
target_commit)
c.rhodecode_user.get_instance(), source_db_repo,
source_commit, target_db_repo, target_commit)
reviewers = validate_default_reviewers(
_form['review_members'], reviewer_rules)
@ -634,13 +634,18 @@ class PullrequestsController(BaseRepoController):
c.forbid_adding_reviewers = False
c.forbid_author_to_review = False
c.forbid_commit_author_to_review = False
if pull_request_latest.reviewer_data and \
'rules' in pull_request_latest.reviewer_data:
rules = pull_request_latest.reviewer_data['rules'] or {}
try:
c.forbid_adding_reviewers = rules.get('forbid_adding_reviewers')
c.forbid_author_to_review = rules.get('forbid_author_to_review')
c.forbid_adding_reviewers = rules.get(
'forbid_adding_reviewers')
c.forbid_author_to_review = rules.get(
'forbid_author_to_review')
c.forbid_commit_author_to_review = rules.get(
'forbid_commit_author_to_review')
except Exception:
pass

View file

@ -0,0 +1,33 @@
import logging
from sqlalchemy import *
from rhodecode.model import meta
from rhodecode.lib.dbmigrate.versions import _reset_base, notify
log = logging.getLogger(__name__)
def upgrade(migrate_engine):
"""
Upgrade operations go here.
Don't create your own engine; bind migrate_engine to your metadata
"""
_reset_base(migrate_engine)
from rhodecode.lib.dbmigrate.schema import db_4_7_0_1 as db
repo_review_rule_table = db.RepoReviewRule.__table__
forbid_commit_author_to_review = Column(
"forbid_commit_author_to_review", Boolean(), nullable=True, default=False)
forbid_commit_author_to_review.create(table=repo_review_rule_table)
fixups(db, meta.Session)
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
def fixups(models, _SESSION):
pass

View file

@ -3907,6 +3907,7 @@ class RepoReviewRule(Base, BaseModel):
use_authors_for_review = Column("use_authors_for_review", Boolean(), nullable=False, default=False)
forbid_author_to_review = Column("forbid_author_to_review", Boolean(), nullable=False, default=False)
forbid_commit_author_to_review = Column("forbid_commit_author_to_review", Boolean(), nullable=False, default=False)
forbid_adding_reviewers = Column("forbid_adding_reviewers", Boolean(), nullable=False, default=False)
rule_users = relationship('RepoReviewRuleUser')

View file

@ -175,6 +175,21 @@ ReviewersController = function () {
_gettext('Author is not allowed to be a reviewer.'))
)
}
if (data.rules.forbid_commit_author_to_review) {
if (data.rules_data.forbidden_users) {
$.each(data.rules_data.forbidden_users, function(index, member_data) {
self.forbidReviewUsers.push(member_data)
});
}
self.$rulesList.append(
self.addRule(
_gettext('Commit Authors are not allowed to be a reviewer.'))
)
}
return self.forbidReviewUsers
};