|
a/Allura/allura/controllers/rest.py |
|
b/Allura/allura/controllers/rest.py |
|
... |
|
... |
30 |
from ming.utils import LazyProperty
|
30 |
from ming.utils import LazyProperty
|
31 |
|
31 |
|
32 |
from allura import model as M
|
32 |
from allura import model as M
|
33 |
from allura.lib import helpers as h
|
33 |
from allura.lib import helpers as h
|
34 |
from allura.lib import security
|
34 |
from allura.lib import security
|
|
|
35 |
from allura.lib import plugin
|
|
|
36 |
from allura.lib.exceptions import Invalid
|
35 |
|
37 |
|
36 |
log = logging.getLogger(__name__)
|
38 |
log = logging.getLogger(__name__)
|
37 |
action_logger = h.log_action(log, 'API:')
|
39 |
action_logger = h.log_action(log, 'API:')
|
38 |
|
40 |
|
39 |
class RestController(object):
|
41 |
class RestController(object):
|
|
... |
|
... |
241 |
def __init__(self, neighborhood):
|
243 |
def __init__(self, neighborhood):
|
242 |
self._neighborhood = neighborhood
|
244 |
self._neighborhood = neighborhood
|
243 |
|
245 |
|
244 |
@expose()
|
246 |
@expose()
|
245 |
def _lookup(self, name, *remainder):
|
247 |
def _lookup(self, name, *remainder):
|
246 |
if not h.re_project_name.match(name):
|
248 |
provider = plugin.ProjectRegistrationProvider.get()
|
|
|
249 |
try:
|
|
|
250 |
provider.shortname_validator.to_python(name, check_allowed=False, neighborhood=self._neighborhood)
|
|
|
251 |
except Invalid as e:
|
247 |
raise exc.HTTPNotFound, name
|
252 |
raise exc.HTTPNotFound, name
|
248 |
name = self._neighborhood.shortname_prefix + name
|
253 |
name = self._neighborhood.shortname_prefix + name
|
249 |
project = M.Project.query.get(shortname=name, neighborhood_id=self._neighborhood._id, deleted=False)
|
254 |
project = M.Project.query.get(shortname=name, neighborhood_id=self._neighborhood._id, deleted=False)
|
250 |
if not project: raise exc.HTTPNotFound, name
|
255 |
if not project: raise exc.HTTPNotFound, name
|
251 |
c.project = project
|
256 |
c.project = project
|