# HG changeset patch # User Marcin Kuzminski # Date 2017-06-08 11:39:54 # Node ID bb0773064f3c2162da21397e565e006c4c4fbf80 # Parent 9dedc07b42d8467d76e013c46878334cf3d781be review-rules: extend code to support the forbid commit authors. diff --git a/rhodecode/__init__.py b/rhodecode/__init__.py --- a/rhodecode/__init__.py +++ b/rhodecode/__init__.py @@ -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' diff --git a/rhodecode/controllers/pullrequests.py b/rhodecode/controllers/pullrequests.py --- a/rhodecode/controllers/pullrequests.py +++ b/rhodecode/controllers/pullrequests.py @@ -261,8 +261,8 @@ class PullrequestsController(BaseRepoCon # 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(BaseRepoCon 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 diff --git a/rhodecode/lib/dbmigrate/versions/078_version_4_8_0.py b/rhodecode/lib/dbmigrate/versions/078_version_4_8_0.py new file mode 100644 --- /dev/null +++ b/rhodecode/lib/dbmigrate/versions/078_version_4_8_0.py @@ -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 diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -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') diff --git a/rhodecode/public/js/src/rhodecode/pullrequests.js b/rhodecode/public/js/src/rhodecode/pullrequests.js --- a/rhodecode/public/js/src/rhodecode/pullrequests.js +++ b/rhodecode/public/js/src/rhodecode/pullrequests.js @@ -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 };