|
a/Allura/allura/lib/helpers.py |
|
b/Allura/allura/lib/helpers.py |
|
... |
|
... |
150 |
parts = [
|
150 |
parts = [
|
151 |
name[:i+1]
|
151 |
name[:i+1]
|
152 |
for i in range(num_parts) ]
|
152 |
for i in range(num_parts) ]
|
153 |
return '/'.join(parts)
|
153 |
return '/'.join(parts)
|
154 |
|
154 |
|
155 |
def set_context(project_shortname, mount_point=None, app_config_id=None):
|
155 |
def set_context(project_shortname, mount_point=None, app_config_id=None, neighborhood=None):
|
156 |
from allura import model
|
156 |
from allura import model
|
157 |
p = model.Project.query.get(shortname=project_shortname)
|
157 |
if not isinstance(neighborhood, model.Neighborhood):
|
|
|
158 |
if neighborhood is not None:
|
|
|
159 |
n = model.Neighborhood.query.get(name=neighborhood)
|
|
|
160 |
if n is None:
|
|
|
161 |
try:
|
|
|
162 |
n = model.Neighborhood.query.get(_id=ObjectId(str(neighborhood)))
|
|
|
163 |
except InvalidId:
|
|
|
164 |
pass
|
|
|
165 |
if n is None:
|
|
|
166 |
raise exc.NoSuchNeighborhoodError("Couldn't find neighborhood %s" %
|
|
|
167 |
repr(neighborhood))
|
|
|
168 |
neighborhood = n
|
|
|
169 |
|
|
|
170 |
query = dict(shortname=project_shortname)
|
|
|
171 |
if neighborhood is not None:
|
|
|
172 |
query['neighborhood_id'] = neighborhood._id
|
|
|
173 |
p = model.Project.query.get(**query)
|
158 |
if p is None:
|
174 |
if p is None:
|
159 |
try:
|
175 |
try:
|
|
|
176 |
del query['shortname']
|
160 |
p = model.Project.query.get(_id=ObjectId(str(project_shortname)))
|
177 |
query['_id'] = ObjectId(str(project_shortname))
|
|
|
178 |
p = model.Project.query.get(**query)
|
161 |
except InvalidId:
|
179 |
except InvalidId:
|
162 |
pass
|
180 |
pass
|
163 |
|
181 |
|
164 |
if p is None:
|
182 |
if p is None:
|
165 |
raise exc.NoSuchProjectError("Couldn't find project %s" %
|
183 |
raise exc.NoSuchProjectError("Couldn't find project %s" %
|