diff --git a/rhodecode/admin/__init__.py b/rhodecode/admin/__init__.py --- a/rhodecode/admin/__init__.py +++ b/rhodecode/admin/__init__.py @@ -35,6 +35,9 @@ def includeme(config): config.add_route( name='admin_settings_open_source', pattern=ADMIN_PREFIX + '/settings/open_source') + config.add_route( + name='admin_settings_vcs_svn_generate_cfg', + pattern=ADMIN_PREFIX + '/settings/vcs/svn_generate_cfg') # Scan module for configuration decorators. config.scan() diff --git a/rhodecode/admin/views.py b/rhodecode/admin/views.py --- a/rhodecode/admin/views.py +++ b/rhodecode/admin/views.py @@ -24,8 +24,11 @@ import logging from pylons import tmpl_context as c from pyramid.view import view_config -from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator +from rhodecode.lib.auth import ( + LoginRequired, HasPermissionAllDecorator, CSRFRequired) from rhodecode.lib.utils import read_opensource_licenses +from rhodecode.svn_support.utils import generate_mod_dav_svn_config +from rhodecode.translation import _ from .navigation import navigation_list @@ -53,3 +56,27 @@ class AdminSettingsView(object): 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