diff --git a/rhodecode/admin/__init__.py b/rhodecode/admin/__init__.py new file mode 100644 --- /dev/null +++ b/rhodecode/admin/__init__.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2016-2016 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 . +# +# 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/ + + +from rhodecode.config.routing import ADMIN_PREFIX + + +def includeme(config): + + config.add_route( + name='admin_settings_open_source', + pattern=ADMIN_PREFIX + '/settings/open_source') + + # Scan module for configuration decorators. + config.scan() diff --git a/rhodecode/admin/views.py b/rhodecode/admin/views.py new file mode 100644 --- /dev/null +++ b/rhodecode/admin/views.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2016-2016 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 . +# +# 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 collections +import logging + +from pylons import tmpl_context as c +from pyramid.view import view_config + +from rhodecode.controllers.admin.settings import navigation +from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator +from rhodecode.lib.utils import read_opensource_licenses + + +log = logging.getLogger(__name__) + + +class AdminSettingsView(object): + + def __init__(self, context, request): + self.request = request + self.context = context + self.session = request.session + self._rhodecode_user = request.user + + @LoginRequired() + @HasPermissionAllDecorator('hg.admin') + @view_config( + route_name='admin_settings_open_source', request_method='GET', + renderer='rhodecode:templates/admin/settings/settings.html') + def open_source_licenses(self): + c.active = 'open_source' + c.navlist = navigation.get_navlist(self.request) + c.opensource_licenses = collections.OrderedDict( + sorted(read_opensource_licenses().items(), key=lambda t: t[0])) + + return {} diff --git a/rhodecode/config/middleware.py b/rhodecode/config/middleware.py --- a/rhodecode/config/middleware.py +++ b/rhodecode/config/middleware.py @@ -214,6 +214,7 @@ def includeme(config): # Includes which are required. The application would fail without them. config.include('pyramid_mako') config.include('pyramid_beaker') + config.include('rhodecode.admin') config.include('rhodecode.authentication') config.include('rhodecode.login') config.include('rhodecode.tweens') diff --git a/rhodecode/controllers/admin/settings.py b/rhodecode/controllers/admin/settings.py --- a/rhodecode/controllers/admin/settings.py +++ b/rhodecode/controllers/admin/settings.py @@ -822,7 +822,7 @@ class NavigationRegistry(object): NavEntry('system', lazy_ugettext('System Info'), 'admin_settings_system'), NavEntry('open_source', lazy_ugettext('Open Source Licenses'), - 'admin_settings_open_source'), + 'admin_settings_open_source', pyramid=True), # TODO: marcink: we disable supervisor now until the supervisor stats # page is fixed in the nix configuration # NavEntry('supervisor', lazy_ugettext('Supervisor'),