Show More
@@ -25,7 +25,9 b' from pyramid.httpexceptions import HTTPF' | |||
|
25 | 25 | |
|
26 | 26 | from rhodecode.lib import helpers as h |
|
27 | 27 | from rhodecode.lib.utils2 import StrictAttributeDict, safe_int |
|
28 | from rhodecode.model import repo | |
|
28 | 29 | from rhodecode.model.db import User |
|
30 | from rhodecode.model.scm import ScmModel | |
|
29 | 31 | |
|
30 | 32 | log = logging.getLogger(__name__) |
|
31 | 33 | |
@@ -110,3 +112,52 b' class BaseAppView(object):' | |||
|
110 | 112 | """ |
|
111 | 113 | raise NotImplementedError('Needs implementation in view class') |
|
112 | 114 | |
|
115 | ||
|
116 | class RepoAppView(BaseAppView): | |
|
117 | ||
|
118 | def __init__(self, context, request): | |
|
119 | super(RepoAppView, self).__init__(context, request) | |
|
120 | self.db_repo = request.db_repo | |
|
121 | self.db_repo_name = self.db_repo.repo_name | |
|
122 | self.db_repo_pull_requests = ScmModel().get_pull_requests(self.db_repo) | |
|
123 | ||
|
124 | def _get_local_tmpl_context(self): | |
|
125 | c = super(RepoAppView, self)._get_local_tmpl_context() | |
|
126 | # register common vars for this type of view | |
|
127 | c.rhodecode_db_repo = self.db_repo | |
|
128 | c.repo_name = self.db_repo_name | |
|
129 | c.repository_pull_requests = self.db_repo_pull_requests | |
|
130 | return c | |
|
131 | ||
|
132 | ||
|
133 | class RepoRoutePredicate(object): | |
|
134 | def __init__(self, val, config): | |
|
135 | self.val = val | |
|
136 | ||
|
137 | def text(self): | |
|
138 | return 'repo_route = %s' % self.val | |
|
139 | ||
|
140 | phash = text | |
|
141 | ||
|
142 | def __call__(self, info, request): | |
|
143 | repo_name = info['match']['repo_name'] | |
|
144 | repo_model = repo.RepoModel() | |
|
145 | by_name_match = repo_model.get_by_repo_name(repo_name, cache=True) | |
|
146 | # if we match quickly from database, short circuit the operation, | |
|
147 | # and validate repo based on the type. | |
|
148 | if by_name_match: | |
|
149 | # register this as request object we can re-use later | |
|
150 | request.db_repo = by_name_match | |
|
151 | return True | |
|
152 | ||
|
153 | by_id_match = repo_model.get_repo_by_id(repo_name) | |
|
154 | if by_id_match: | |
|
155 | request.db_repo = by_id_match | |
|
156 | return True | |
|
157 | ||
|
158 | return False | |
|
159 | ||
|
160 | ||
|
161 | def includeme(config): | |
|
162 | config.add_route_predicate( | |
|
163 | 'repo_route', RepoRoutePredicate) |
@@ -283,6 +283,8 b' def includeme(config):' | |||
|
283 | 283 | config.include('rhodecode.integrations') |
|
284 | 284 | |
|
285 | 285 | # apps |
|
286 | config.include('rhodecode.apps._base') | |
|
287 | ||
|
286 | 288 | config.include('rhodecode.apps.admin') |
|
287 | 289 | config.include('rhodecode.apps.channelstream') |
|
288 | 290 | config.include('rhodecode.apps.login') |
General Comments 0
You need to be logged in to leave comments.
Login now