repo-reviewers: expose a default placeholder on CE edition.

- shows the menu consistent
- adds preview of prominent EE feature
This commit is contained in:
Marcin Kuzminski 2017-04-28 17:20:38 +02:00
parent ec67f1c7db
commit e1c2f6b6b6
6 changed files with 72 additions and 17 deletions

View file

@ -31,6 +31,11 @@ def includeme(config):
name='edit_repo_caches',
pattern='/{repo_name:.*?[^/]}/settings/caches', repo_route=True)
# Repo Review Rules
config.add_route(
name='repo_reviewers',
pattern='/{repo_name:.*?[^/]}/settings/review/rules', repo_route=True)
# Maintenance
config.add_route(
name='repo_maintenance',

View file

@ -0,0 +1,51 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2016-2017 RhodeCode GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
import logging
from pyramid.view import view_config
from rhodecode.apps._base import RepoAppView
from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
log = logging.getLogger(__name__)
class RepoReviewRulesView(RepoAppView):
def load_default_context(self):
c = self._get_local_tmpl_context()
# TODO(marcink): remove repo_info and use c.rhodecode_db_repo instead
c.repo_info = self.db_repo
self._register_global_c(c)
return c
@LoginRequired()
@HasRepoPermissionAnyDecorator('repository.admin')
@view_config(
route_name='repo_reviewers', request_method='GET',
renderer='rhodecode:templates/admin/repos/repo_edit.mako')
def repo_review_rules(self):
c = self.load_default_context()
c.active = 'reviewers'
return self._get_template_context(c)

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

View file

@ -99,6 +99,7 @@ function registerRCRoutes() {
pyroutes.register('goto_switcher_data', '/_goto_data', []);
pyroutes.register('edit_repo', '/%(repo_name)s/settings', ['repo_name']);
pyroutes.register('edit_repo_caches', '/%(repo_name)s/settings/caches', ['repo_name']);
pyroutes.register('repo_reviewers', '/%(repo_name)s/settings/review/rules', ['repo_name']);
pyroutes.register('repo_maintenance', '/%(repo_name)s/maintenance', ['repo_name']);
pyroutes.register('repo_maintenance_execute', '/%(repo_name)s/maintenance/execute', ['repo_name']);
pyroutes.register('strip', '/%(repo_name)s/strip', ['repo_name']);

View file

@ -36,7 +36,6 @@
</div>
<div class="sidebar-col-wrapper scw-small">
##main
<div class="sidebar">
<ul class="nav nav-pills nav-stacked">
<li class="${'active' if c.active=='settings' else ''}">
@ -71,28 +70,18 @@
<li class="${'active' if c.active=='integrations' else ''}">
<a href="${h.route_path('repo_integrations_home', repo_name=c.repo_name)}">${_('Integrations')}</a>
</li>
%if c.repo_info.repo_type != 'svn':
<li class="${'active' if c.active=='reviewers' else ''}">
<a href="${h.route_path('repo_reviewers', repo_name=c.repo_name)}">${_('Reviewer Rules')}</a>
</li>
%endif
<li class="${'active' if c.active=='maintenance' else ''}">
<a href="${h.route_path('repo_maintenance', repo_name=c.repo_name)}">${_('Maintenance')}</a>
</li>
<li class="${'active' if c.active=='strip' else ''}">
<a href="${h.route_path('strip', repo_name=c.repo_name)}">${_('Strip')}</a>
</li>
## TODO: dan: replace repo navigation with navlist registry like with
## admin menu. First must find way to allow runtime configuration
## it to account for the c.repo_info.repo_type != 'svn' call above
<%
reviewer_settings = False
try:
import rc_reviewers
reviewer_settings = True
except ImportError:
pass
%>
%if reviewer_settings:
<li class="${'active' if c.active=='reviewers' else ''}">
<a href="${h.route_path('repo_reviewers_home', repo_name=c.repo_name)}">${_('Reviewers')}</a>
</li>
%endif
</ul>
</div>

View file

@ -0,0 +1,9 @@
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">${_('Default Reviewer Rules')}</h3>
</div>
<div class="panel-body">
<h4>${_('This feature is available in RhodeCode EE edition only. Contact {sales_email} to obtain a trial license.').format(sales_email='<a href="mailto:sales@rhodecode.com">sales@rhodecode.com</a>')|n}</h4>
<img style="width: 100%; height: 100%" src="${h.asset('images/ee_features/default_reviewers.png')}"/>
</div>
</div>