|
a/Allura/allura/controllers/project.py |
|
b/Allura/allura/controllers/project.py |
|
... |
|
... |
338 |
|
338 |
|
339 |
@expose('json:')
|
339 |
@expose('json:')
|
340 |
def user_search(self, term=''):
|
340 |
def user_search(self, term=''):
|
341 |
if len(term) < 3:
|
341 |
if len(term) < 3:
|
342 |
raise exc.HTTPBadRequest('"term" param must be at least length 3')
|
342 |
raise exc.HTTPBadRequest('"term" param must be at least length 3')
|
343 |
users = M.User.by_display_name(term)
|
|
|
344 |
named_roles = RoleCache(
|
343 |
named_roles = RoleCache(
|
345 |
g.credentials,
|
344 |
g.credentials,
|
346 |
g.credentials.project_roles(project_id=c.project.root_project._id).named)
|
345 |
g.credentials.project_roles(project_id=c.project.root_project._id).named)
|
347 |
result = [ [], [] ]
|
346 |
users = M.User.query.find({
|
348 |
for u in users:
|
|
|
349 |
if u._id in named_roles.userids_that_reach:
|
347 |
'_id': {'$in': named_roles.userids_that_reach},
|
350 |
result[0].append(u)
|
348 |
'display_name': re.compile(r'(?i)%s' % re.escape(term)),
|
351 |
else:
|
349 |
}).sort('username').limit(10).all()
|
352 |
pass
|
|
|
353 |
# comment this back in if you want non-project-member users
|
|
|
354 |
# in the search results
|
|
|
355 |
#result[1].append(u)
|
|
|
356 |
result = list(islice(chain(*result), 10))
|
|
|
357 |
return dict(
|
350 |
return dict(
|
358 |
users=[
|
351 |
users=[
|
359 |
dict(
|
352 |
dict(
|
360 |
label='%s (%s)' % (u.get_pref('display_name'), u.username),
|
353 |
label='%s (%s)' % (u.get_pref('display_name'), u.username),
|
361 |
value=u.username,
|
354 |
value=u.username,
|
362 |
id=u.username)
|
355 |
id=u.username)
|
363 |
for u in result])
|
356 |
for u in users])
|
364 |
|
357 |
|
365 |
class ScreenshotsController(object):
|
358 |
class ScreenshotsController(object):
|
366 |
|
359 |
|
367 |
@expose()
|
360 |
@expose()
|
368 |
def _lookup(self, filename, *args):
|
361 |
def _lookup(self, filename, *args):
|