# HG changeset patch # User Marcin Kuzminski # Date 2017-05-26 10:37:48 # Node ID dee6c9db8363a91b9f9dcbbb2392cdb921061dd9 # Parent d8048d6faab7b4386b34c8c8a655ff8dc7719e92 reviewers: moved the new v1 api of default reviewers into pyramid view. - updated schema - updated logic of routing so EE can override it. diff --git a/rhodecode/apps/repository/__init__.py b/rhodecode/apps/repository/__init__.py --- a/rhodecode/apps/repository/__init__.py +++ b/rhodecode/apps/repository/__init__.py @@ -94,6 +94,10 @@ def includeme(config): name='repo_reviewers', pattern='/{repo_name:.*?[^/]}/settings/review/rules', repo_route=True) + config.add_route( + name='repo_default_reviewers_data', + pattern='/{repo_name:.*?[^/]}/settings/review/default-reviewers', repo_route=True) + # Maintenance config.add_route( name='repo_maintenance', diff --git a/rhodecode/apps/repository/views/repo_review_rules.py b/rhodecode/apps/repository/views/repo_review_rules.py --- a/rhodecode/apps/repository/views/repo_review_rules.py +++ b/rhodecode/apps/repository/views/repo_review_rules.py @@ -23,6 +23,7 @@ import logging from pyramid.view import view_config from rhodecode.apps._base import RepoAppView +from rhodecode.controllers import utils from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator log = logging.getLogger(__name__) @@ -49,3 +50,20 @@ class RepoReviewRulesView(RepoAppView): return self._get_template_context(c) + @LoginRequired() + @HasRepoPermissionAnyDecorator( + 'repository.read', 'repository.write', 'repository.admin') + @view_config( + route_name='repo_default_reviewers_data', request_method='GET', + renderer='json_ext') + def repo_default_reviewers_data(self): + reasons = ['Default reviewer', 'Repository owner'] + default = utils.reviewer_as_json( + user=self.db_repo.user, reasons=reasons, mandatory=False) + + return { + 'api_ver': 'v1', # define version for later possible schema upgrade + 'reviewers': [default], + 'rules': {}, + 'rules_data': {}, + } diff --git a/rhodecode/config/routing.py b/rhodecode/config/routing.py --- a/rhodecode/config/routing.py +++ b/rhodecode/config/routing.py @@ -623,9 +623,6 @@ def make_map(config): rmap.connect('repo_refs_changelog_data', '/{repo_name}/refs-data-changelog', controller='summary', action='repo_refs_changelog_data', requirements=URL_NAME_REQUIREMENTS, jsroute=True) - rmap.connect('repo_default_reviewers_data', '/{repo_name}/default-reviewers', - controller='summary', action='repo_default_reviewers_data', - jsroute=True, requirements=URL_NAME_REQUIREMENTS) rmap.connect('changeset_home', '/{repo_name}/changeset/{revision}', controller='changeset', revision='tip', diff --git a/rhodecode/controllers/summary.py b/rhodecode/controllers/summary.py --- a/rhodecode/controllers/summary.py +++ b/rhodecode/controllers/summary.py @@ -27,7 +27,7 @@ from string import lower from pylons import tmpl_context as c, request from pylons.i18n.translation import _ -from beaker.cache import cache_region, region_invalidate +from beaker.cache import cache_region from rhodecode.config.conf import (LANGUAGES_EXTENSIONS_MAP) from rhodecode.controllers import utils @@ -36,13 +36,12 @@ from rhodecode.lib import caches, helper from rhodecode.lib.utils import jsonify from rhodecode.lib.utils2 import safe_str from rhodecode.lib.auth import ( - LoginRequired, HasRepoPermissionAnyDecorator, NotAnonymous, XHRRequired) + LoginRequired, HasRepoPermissionAnyDecorator, XHRRequired) from rhodecode.lib.base import BaseRepoController, render from rhodecode.lib.markup_renderer import MarkupRenderer, relative_links from rhodecode.lib.ext_json import json from rhodecode.lib.vcs.backends.base import EmptyCommit -from rhodecode.lib.vcs.exceptions import ( - CommitError, EmptyRepositoryError, NodeDoesNotExistError) +from rhodecode.lib.vcs.exceptions import CommitError, EmptyRepositoryError from rhodecode.model.db import Statistics, CacheKey, User from rhodecode.model.repo import ReadmeFinder @@ -259,16 +258,6 @@ class SummaryController(BaseRepoControll } return data - @LoginRequired() - @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', - 'repository.admin') - @jsonify - def repo_default_reviewers_data(self, repo_name): - return { - 'reviewers': [utils.reviewer_as_json( - user=c.rhodecode_db_repo.user, reasons=None)] - } - @jsonify def repo_refs_changelog_data(self, repo_name): repo = c.rhodecode_repo diff --git a/rhodecode/controllers/utils.py b/rhodecode/controllers/utils.py --- a/rhodecode/controllers/utils.py +++ b/rhodecode/controllers/utils.py @@ -89,17 +89,19 @@ def get_commit_from_ref_name(repo, ref_n return repo_scm.get_commit(commit_id) -def reviewer_as_json(user, reasons): +def reviewer_as_json(user, reasons, mandatory): """ Returns json struct of a reviewer for frontend :param user: the reviewer :param reasons: list of strings of why they are reviewers + :param mandatory: bool, to set user as mandatory """ return { 'user_id': user.user_id, 'reasons': reasons, + 'mandatory': mandatory, 'username': user.username, 'firstname': user.firstname, 'lastname': user.lastname, diff --git a/rhodecode/public/js/rhodecode/routes.js b/rhodecode/public/js/rhodecode/routes.js --- a/rhodecode/public/js/rhodecode/routes.js +++ b/rhodecode/public/js/rhodecode/routes.js @@ -21,7 +21,6 @@ function registerRCRoutes() { pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']); pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']); pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']); - pyroutes.register('repo_default_reviewers_data', '/%(repo_name)s/default-reviewers', ['repo_name']); pyroutes.register('changeset_home', '/%(repo_name)s/changeset/%(revision)s', ['repo_name', 'revision']); pyroutes.register('changeset_comment', '/%(repo_name)s/changeset/%(revision)s/comment', ['repo_name', 'revision']); pyroutes.register('changeset_comment_preview', '/%(repo_name)s/changeset/comment/preview', ['repo_name']); @@ -116,6 +115,7 @@ function registerRCRoutes() { pyroutes.register('edit_repo_caches', '/%(repo_name)s/settings/caches', ['repo_name']); pyroutes.register('edit_repo_perms', '/%(repo_name)s/settings/permissions', ['repo_name']); pyroutes.register('repo_reviewers', '/%(repo_name)s/settings/review/rules', ['repo_name']); + pyroutes.register('repo_default_reviewers_data', '/%(repo_name)s/settings/review/default-reviewers', ['repo_name']); pyroutes.register('repo_maintenance', '/%(repo_name)s/settings/maintenance', ['repo_name']); pyroutes.register('repo_maintenance_execute', '/%(repo_name)s/settings/maintenance/execute', ['repo_name']); pyroutes.register('strip', '/%(repo_name)s/settings/strip', ['repo_name']);