diff --git a/rhodecode/controllers/home.py b/rhodecode/controllers/home.py
--- a/rhodecode/controllers/home.py
+++ b/rhodecode/controllers/home.py
@@ -274,4 +274,11 @@ class HomeController(BaseController):
@XHRRequired()
@jsonify
def user_group_autocomplete_data(self):
- return {'suggestions': []}
+ query = request.GET.get('query')
+
+ repo_model = RepoModel()
+ _user_groups = repo_model.get_user_groups(name_contains=query)
+ _user_groups = _user_groups
+
+ return {'suggestions': _user_groups}
+
diff --git a/rhodecode/model/repo.py b/rhodecode/model/repo.py
--- a/rhodecode/model/repo.py
+++ b/rhodecode/model/repo.py
@@ -140,10 +140,12 @@ class RepoModel(BaseModel):
return None
- def get_users(self, name_contains=None, limit=20):
+ def get_users(self, name_contains=None, limit=20, only_active=True):
# TODO: mikhail: move this method to the UserModel.
query = self.sa.query(User)
- query = query.filter(User.active == true())
+ if only_active:
+ query = query.filter(User.active == true())
+
if name_contains:
ilike_expression = u'%{}%'.format(safe_unicode(name_contains))
query = query.filter(
@@ -165,16 +167,19 @@ class RepoModel(BaseModel):
'icon_link': h.gravatar_url(user.email, 14),
'value_display': h.person(user.email),
'value': user.username,
- 'value_type': 'user'
+ 'value_type': 'user',
+ 'active': user.active,
}
for user in users
]
return _users
- def get_user_groups(self, name_contains=None, limit=20):
+ def get_user_groups(self, name_contains=None, limit=20, only_active=True):
# TODO: mikhail: move this method to the UserGroupModel.
query = self.sa.query(UserGroup)
- query = query.filter(UserGroup.users_group_active == true())
+ if only_active:
+ query = query.filter(UserGroup.users_group_active == true())
+
if name_contains:
ilike_expression = u'%{}%'.format(safe_unicode(name_contains))
query = query.filter(
@@ -196,7 +201,8 @@ class RepoModel(BaseModel):
'value_display': 'Group: %s (%d members)' % (
group.users_group_name, len(group.members),),
'value': group.users_group_name,
- 'value_type': 'user_group'
+ 'value_type': 'user_group',
+ 'active': group.users_group_active,
}
for group in user_groups
]
diff --git a/rhodecode/public/js/src/rhodecode/utils/autocomplete.js b/rhodecode/public/js/src/rhodecode/utils/autocomplete.js
--- a/rhodecode/public/js/src/rhodecode/utils/autocomplete.js
+++ b/rhodecode/public/js/src/rhodecode/utils/autocomplete.js
@@ -19,19 +19,25 @@
/**
* autocomplete formatter that uses gravatar
* */
-var autocompleteFormatResult = function(data, value, org_formatter) {
- var value_display = data.value_display;
+var autocompleteFormatResult = function (data, value, org_formatter) {
+ var activeUser = data.active || true;
+ var valueDisplay = data.value_display;
+
+ if (!activeUser) {
+ valueDisplay = '(disabled) ' + valueDisplay;
+ }
+
var escapeRegExChars = function (value) {
return value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
};
var pattern = '(' + escapeRegExChars(value) + ')';
- value_display = value_display.replace(new RegExp(pattern, 'gi'), '$1<\/strong>');
+ valueDisplay = valueDisplay.replace(new RegExp(pattern, 'gi'), '$1<\/strong>');
var tmpl = '{1}
';
if (data.icon_link === "") {
tmpl = '{0}
';
- return tmpl.format(value_display);
+ return tmpl.format(valueDisplay);
}
- return tmpl.format(data.icon_link, value_display);
+ return tmpl.format(data.icon_link, valueDisplay);
};
/**