diff --git a/rhodecode/admin/views/__init__.py b/rhodecode/admin/views/__init__.py new file mode 100644 index 00000000..8211775e --- /dev/null +++ b/rhodecode/admin/views/__init__.py @@ -0,0 +1,19 @@ +# -*- 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 . +# +# 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/ diff --git a/rhodecode/admin/views/base.py b/rhodecode/admin/views/base.py new file mode 100644 index 00000000..ef62e144 --- /dev/null +++ b/rhodecode/admin/views/base.py @@ -0,0 +1,28 @@ +# -*- 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 . +# +# 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/ + + +class AdminSettingsView(object): + + def __init__(self, context, request): + self.request = request + self.context = context + self.session = request.session + self._rhodecode_user = request.user diff --git a/rhodecode/admin/views/open_source_licenses.py b/rhodecode/admin/views/open_source_licenses.py new file mode 100644 index 00000000..a2ce2283 --- /dev/null +++ b/rhodecode/admin/views/open_source_licenses.py @@ -0,0 +1,48 @@ +# -*- 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 . +# +# 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.admin.views.base import AdminSettingsView +from rhodecode.admin.navigation import navigation_list +from rhodecode.lib.auth import (LoginRequired, HasPermissionAllDecorator) +from rhodecode.lib.utils import read_opensource_licenses + +log = logging.getLogger(__name__) + + +class OpenSourceLicensesAdminSettingsView(AdminSettingsView): + + @LoginRequired() + @HasPermissionAllDecorator('hg.admin') + @view_config( + route_name='admin_settings_open_source', request_method='GET', + renderer='rhodecode:templates/admin/settings/settings.mako') + def open_source_licenses(self): + c.active = 'open_source' + c.navlist = navigation_list(self.request) + c.opensource_licenses = collections.OrderedDict( + sorted(read_opensource_licenses().items(), key=lambda t: t[0])) + + return {} diff --git a/rhodecode/admin/views.py b/rhodecode/admin/views/sessions.py similarity index 67% rename from rhodecode/admin/views.py rename to rhodecode/admin/views/sessions.py index e8ef1672..4ddb0bf4 100644 --- a/rhodecode/admin/views.py +++ b/rhodecode/admin/views/sessions.py @@ -26,67 +26,22 @@ from pyramid.view import view_config from pyramid.httpexceptions import HTTPFound from rhodecode.translation import _ -from rhodecode.svn_support.utils import generate_mod_dav_svn_config +from rhodecode.admin.views.base import AdminSettingsView from rhodecode.lib.auth import ( LoginRequired, HasPermissionAllDecorator, CSRFRequired) -from rhodecode.lib.utils import read_opensource_licenses from rhodecode.lib.utils2 import safe_int from rhodecode.lib import system_info from rhodecode.lib import user_sessions -from .navigation import navigation_list +from rhodecode.admin.navigation import navigation_list 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.mako') - def open_source_licenses(self): - c.active = 'open_source' - c.navlist = navigation_list(self.request) - c.opensource_licenses = collections.OrderedDict( - sorted(read_opensource_licenses().items(), key=lambda t: t[0])) - - return {} - - @LoginRequired() - @CSRFRequired() - @HasPermissionAllDecorator('hg.admin') - @view_config( - route_name='admin_settings_vcs_svn_generate_cfg', - request_method='POST', renderer='json') - def vcs_svn_generate_config(self): - try: - generate_mod_dav_svn_config(self.request.registry) - msg = { - 'message': _('Apache configuration for Subversion generated.'), - 'level': 'success', - } - except Exception: - log.exception( - 'Exception while generating the Apache ' - 'configuration for Subversion.') - msg = { - 'message': _('Failed to generate the Apache configuration for Subversion.'), - 'level': 'error', - } - - data = {'message': msg} - return data +class AdminSessionSettingsView(AdminSettingsView): @LoginRequired() @HasPermissionAllDecorator('hg.admin') @@ -112,6 +67,7 @@ class AdminSettingsView(object): return {} @LoginRequired() + @CSRFRequired() @HasPermissionAllDecorator('hg.admin') @view_config( route_name='admin_settings_sessions_cleanup', request_method='POST') diff --git a/rhodecode/admin/views/svn_config.py b/rhodecode/admin/views/svn_config.py new file mode 100644 index 00000000..46822144 --- /dev/null +++ b/rhodecode/admin/views/svn_config.py @@ -0,0 +1,60 @@ +# -*- 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 . +# +# 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.translation import _ +from rhodecode.svn_support.utils import generate_mod_dav_svn_config + +from rhodecode.admin.views.base import AdminSettingsView +from rhodecode.lib.auth import ( + LoginRequired, HasPermissionAllDecorator, CSRFRequired) + +log = logging.getLogger(__name__) + + +class SvnConfigAdminSettingsView(AdminSettingsView): + + @LoginRequired() + @CSRFRequired() + @HasPermissionAllDecorator('hg.admin') + @view_config( + route_name='admin_settings_vcs_svn_generate_cfg', + request_method='POST', renderer='json') + def vcs_svn_generate_config(self): + try: + generate_mod_dav_svn_config(self.request.registry) + msg = { + 'message': _('Apache configuration for Subversion generated.'), + 'level': 'success', + } + except Exception: + log.exception( + 'Exception while generating the Apache ' + 'configuration for Subversion.') + msg = { + 'message': _('Failed to generate the Apache configuration for Subversion.'), + 'level': 'error', + } + + data = {'message': msg} + return data