##// END OF EJS Templates
vcs: Move shadow repo regex up to class level.
Martin Bornhold -
r902:7874b155 default
parent child Browse files
Show More
@@ -44,7 +44,7 b' from rhodecode.lib.hooks_daemon import p'
44 44 from rhodecode.lib.middleware import appenlight
45 45 from rhodecode.lib.middleware.utils import scm_app
46 46 from rhodecode.lib.utils import (
47 is_valid_repo, get_rhodecode_realm, get_rhodecode_base_path)
47 is_valid_repo, get_rhodecode_realm, get_rhodecode_base_path, SLUG_RE)
48 48 from rhodecode.lib.utils2 import safe_str, fix_PATH, str2bool
49 49 from rhodecode.lib.vcs.conf import settings as vcs_settings
50 50 from rhodecode.lib.vcs.backends import base
@@ -89,6 +89,17 b' class SimpleVCS(object):'
89 89 url_repo_name = None
90 90 vcs_repo_name = None
91 91
92 # We have to handle requests to shadow repositories different than requests
93 # to normal repositories. Therefore we have to distinguish them. To do this
94 # we use this regex which will match only on URLs pointing to shadow
95 # repositories.
96 shadow_repo_re = re.compile(
97 '(?P<groups>(?:{slug_pat})(?:/{slug_pat})*)' # repo groups
98 '/(?P<target>{slug_pat})' # target repo
99 '/pull-request/(?P<pr_id>\d+)' # pull request
100 '/repository$' # shadow repo
101 .format(slug_pat=SLUG_RE.pattern))
102
92 103 def __init__(self, application, config, registry):
93 104 self.registry = registry
94 105 self.application = application
@@ -111,15 +122,6 b' class SimpleVCS(object):'
111 122 This will populate the attributes acl_repo_name, url_repo_name,
112 123 vcs_repo_name and is_shadow_repo on the current instance.
113 124 """
114 # TODO: martinb: Move to class or module scope.
115 from rhodecode.lib.utils import SLUG_RE
116 pr_regex = re.compile(
117 '(?P<groups>(?:{slug_pat})(?:/{slug_pat})*)' # repo groups
118 '/(?P<target>{slug_pat})' # target repo
119 '/pull-request/(?P<pr_id>\d+)' # pull request
120 '/repository$' # shadow repo
121 .format(slug_pat=SLUG_RE.pattern))
122
123 125 # Get url repo name from environment.
124 126 self.url_repo_name = self._get_repository_name(environ)
125 127
@@ -128,7 +130,11 b' class SimpleVCS(object):'
128 130 # shadow repo. And set acl_repo_name to the pull request target repo
129 131 # because we use the target repo for permission checks. Otherwise all
130 132 # names are equal.
131 match = pr_regex.match(self.url_repo_name)
133 match = self.shadow_repo_re.match(self.url_repo_name)
134 # TODO: martinb: Think about checking the target repo from PR against
135 # the part in the URL. Otherwise we only rely on the PR id in the URL
136 # and the variable parts can be anything. This will lead to 500 errors
137 # from the VCSServer.
132 138 if match:
133 139 # Get pull request instance.
134 140 match_dict = match.groupdict()
General Comments 0
You need to be logged in to leave comments. Login now