##// END OF EJS Templates
svn: Moved code and make a small bugfix.
Martin Bornhold -
r563:7287ae48 default
parent child Browse files
Show More
@@ -0,0 +1,57 b''
1 # -*- coding: utf-8 -*-
2
3 # Copyright (C) 2016-2016 RhodeCode GmbH
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License, version 3
7 # (only), as published by the Free Software Foundation.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 #
17 # This program is dual-licensed. If you wish to learn more about the
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
21 import os
22
23 from pyramid.renderers import render
24
25 from rhodecode.model.db import RepoGroup
26 from . import keys
27
28
29 def generate_mod_dav_svn_config(settings):
30 """
31 Generate the configuration file for use with subversion's mod_dav_svn
32 module. The configuration has to contain a <Location> block for each
33 available repository group because the mod_dav_svn module does not support
34 repositories organized in sub folders.
35 """
36 filepath = settings[keys.config_file_path]
37 parent_path_root = settings[keys.parent_path_root]
38 list_parent_path = settings[keys.list_parent_path]
39 location_root = settings[keys.location_root]
40
41 # Render the configuration to string.
42 template = 'rhodecode:svn_support/templates/mod-dav-svn.conf.mako'
43 context = {
44 'location_root': location_root,
45 'location_root_stripped': location_root.rstrip(os.path.sep),
46 'parent_path_root': parent_path_root,
47 'parent_path_root_stripped': parent_path_root.rstrip(os.path.sep),
48 'repo_groups': RepoGroup.get_all_repo_groups(),
49 'svn_list_parent_path': list_parent_path,
50 }
51 mod_dav_svn_config = render(template, context)
52
53 print mod_dav_svn_config
54
55 # Write configuration to file.
56 with open(filepath, 'w') as file_:
57 file_.write(mod_dav_svn_config)
@@ -23,8 +23,9 b' import os'
23
23
24 from rhodecode import events
24 from rhodecode import events
25 from rhodecode.lib.utils2 import str2bool
25 from rhodecode.lib.utils2 import str2bool
26 from rhodecode.svn_support.subscribers import generate_mod_dav_svn_config
26
27 from rhodecode.svn_support import keys
27 from .subscribers import generate_config_subscriber
28 from . import keys
28
29
29
30
30 log = logging.getLogger(__name__)
31 log = logging.getLogger(__name__)
@@ -36,7 +37,7 b' def includeme(config):'
36
37
37 if settings[keys.generate_config]:
38 if settings[keys.generate_config]:
38 config.add_subscriber(
39 config.add_subscriber(
39 generate_mod_dav_svn_config, events.RepoGroupEvent)
40 generate_config_subscriber, events.RepoGroupEvent)
40
41
41
42
42 def _sanitize_settings_and_apply_defaults(settings):
43 def _sanitize_settings_and_apply_defaults(settings):
@@ -19,52 +19,13 b''
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21
21
22 import logging
22 from .utils import generate_mod_dav_svn_config
23
24 from pyramid.renderers import render
25
26 from rhodecode.model.db import RepoGroup
27 from rhodecode.svn_support import keys
28
23
29
24
30 log = logging.getLogger(__name__)
25 def generate_config_subscriber(event):
31
32
33 def generate_mod_dav_svn_config(event):
34 """
26 """
35 Subscriber to the `rhodcode.events.RepoGroupEvent`. This triggers the
27 Subscriber to the `rhodcode.events.RepoGroupEvent`. This triggers the
36 automatic generation of mod_dav_svn config file on repository group
28 automatic generation of mod_dav_svn config file on repository group
37 changes.
29 changes.
38 """
30 """
39 _generate(event.request.registry.settings)
31 generate_mod_dav_svn_config(event.request.registry.settings)
40
41
42 def _generate(settings):
43 """
44 Generate the configuration file for use with subversion's mod_dav_svn
45 module. The configuration has to contain a <Location> block for each
46 available repository group because the mod_dav_svn module does not support
47 repositories organized in sub folders.
48
49 Currently this is only used by the subscriber above. If we extend this
50 to include it as API method and in the web interface this should be moved
51 to an appropriate place.
52 """
53 filepath = settings[keys.config_file_path]
54 repository_root = settings[keys.parent_path_root]
55 list_parent_path = settings[keys.list_parent_path]
56 location_root = settings[keys.location_root]
57
58 # Render the configuration to string.
59 template = 'rhodecode:svn_support/templates/mod-dav-svn.conf.mako'
60 context = {
61 'location_root': location_root,
62 'repository_root': repository_root,
63 'repo_groups': RepoGroup.get_all_repo_groups(),
64 'svn_list_parent_path': list_parent_path,
65 }
66 mod_dav_svn_config = render(template, context)
67
68 # Write configuration to file.
69 with open(filepath, 'w') as file_:
70 file_.write(mod_dav_svn_config)
@@ -18,9 +18,9 b''
18 </Location>
18 </Location>
19
19
20 % for repo_group in repo_groups:
20 % for repo_group in repo_groups:
21 <Location ${location_root}${repo_group.full_path}>
21 <Location ${location_root_stripped}${repo_group.full_path}>
22 DAV svn
22 DAV svn
23 SVNParentPath ${parent_path_root}${repo_group.full_path}
23 SVNParentPath ${parent_path_root_stripped}${repo_group.full_path}
24 SVNListParentPath ${'On' if svn_list_parent_path else 'Off'}
24 SVNListParentPath ${'On' if svn_list_parent_path else 'Off'}
25 Allow from all
25 Allow from all
26 Order allow,deny
26 Order allow,deny
General Comments 0
You need to be logged in to leave comments. Login now