Show More
@@ -1004,7 +1004,7 b' class AuthUser(object):' | |||||
1004 | x[0] for x in self.permissions['user_groups'].iteritems() |
|
1004 | x[0] for x in self.permissions['user_groups'].iteritems() | |
1005 | if x[1] == 'usergroup.admin'] |
|
1005 | if x[1] == 'usergroup.admin'] | |
1006 |
|
1006 | |||
1007 | def repo_acl_ids(self, perms=None, cache=False): |
|
1007 | def repo_acl_ids(self, perms=None, name_filter=None, cache=False): | |
1008 | """ |
|
1008 | """ | |
1009 | Returns list of repository ids that user have access to based on given |
|
1009 | Returns list of repository ids that user have access to based on given | |
1010 | perms. The cache flag should be only used in cases that are used for |
|
1010 | perms. The cache flag should be only used in cases that are used for | |
@@ -1015,16 +1015,22 b' class AuthUser(object):' | |||||
1015 | perms = [ |
|
1015 | perms = [ | |
1016 | 'repository.read', 'repository.write', 'repository.admin'] |
|
1016 | 'repository.read', 'repository.write', 'repository.admin'] | |
1017 |
|
1017 | |||
1018 | def _cached_repo_acl(user_id, perm_def): |
|
1018 | def _cached_repo_acl(user_id, perm_def, name_filter): | |
1019 | return [x.repo_id for x in RepoList( |
|
1019 | qry = Repository.query() | |
1020 | Repository.query().all(), perm_set=perm_def)] |
|
1020 | if name_filter: | |
|
1021 | ilike_expression = u'%{}%'.format(safe_unicode(name_filter)) | |||
|
1022 | qry = qry.filter( | |||
|
1023 | Repository.repo_name.ilike(ilike_expression)) | |||
|
1024 | ||||
|
1025 | return [x.repo_id for x in | |||
|
1026 | RepoList(qry, perm_set=perm_def)] | |||
1021 |
|
1027 | |||
1022 | compute = caches.conditional_cache( |
|
1028 | compute = caches.conditional_cache( | |
1023 | 'long_term', 'repo_acl_ids', |
|
1029 | 'long_term', 'repo_acl_ids', | |
1024 | condition=cache, func=_cached_repo_acl) |
|
1030 | condition=cache, func=_cached_repo_acl) | |
1025 | return compute(self.user_id, perms) |
|
1031 | return compute(self.user_id, perms, name_filter) | |
1026 |
|
1032 | |||
1027 | def repo_group_acl_ids(self, perms=None, cache=False): |
|
1033 | def repo_group_acl_ids(self, perms=None, name_filter=None, cache=False): | |
1028 | """ |
|
1034 | """ | |
1029 | Returns list of repository group ids that user have access to based on given |
|
1035 | Returns list of repository group ids that user have access to based on given | |
1030 | perms. The cache flag should be only used in cases that are used for |
|
1036 | perms. The cache flag should be only used in cases that are used for | |
@@ -1035,16 +1041,22 b' class AuthUser(object):' | |||||
1035 | perms = [ |
|
1041 | perms = [ | |
1036 | 'group.read', 'group.write', 'group.admin'] |
|
1042 | 'group.read', 'group.write', 'group.admin'] | |
1037 |
|
1043 | |||
1038 | def _cached_repo_group_acl(user_id, perm_def): |
|
1044 | def _cached_repo_group_acl(user_id, perm_def, name_filter): | |
1039 | return [x.group_id for x in RepoGroupList( |
|
1045 | qry = RepoGroup.query() | |
1040 | RepoGroup.query().all(), perm_set=perm_def)] |
|
1046 | if name_filter: | |
|
1047 | ilike_expression = u'%{}%'.format(safe_unicode(name_filter)) | |||
|
1048 | qry = qry.filter( | |||
|
1049 | RepoGroup.group_name.ilike(ilike_expression)) | |||
|
1050 | ||||
|
1051 | return [x.group_id for x in | |||
|
1052 | RepoGroupList(qry, perm_set=perm_def)] | |||
1041 |
|
1053 | |||
1042 | compute = caches.conditional_cache( |
|
1054 | compute = caches.conditional_cache( | |
1043 | 'long_term', 'repo_group_acl_ids', |
|
1055 | 'long_term', 'repo_group_acl_ids', | |
1044 | condition=cache, func=_cached_repo_group_acl) |
|
1056 | condition=cache, func=_cached_repo_group_acl) | |
1045 | return compute(self.user_id, perms) |
|
1057 | return compute(self.user_id, perms, name_filter) | |
1046 |
|
1058 | |||
1047 | def user_group_acl_ids(self, perms=None, cache=False): |
|
1059 | def user_group_acl_ids(self, perms=None, name_filter=None, cache=False): | |
1048 | """ |
|
1060 | """ | |
1049 | Returns list of user group ids that user have access to based on given |
|
1061 | Returns list of user group ids that user have access to based on given | |
1050 | perms. The cache flag should be only used in cases that are used for |
|
1062 | perms. The cache flag should be only used in cases that are used for | |
@@ -1055,14 +1067,20 b' class AuthUser(object):' | |||||
1055 | perms = [ |
|
1067 | perms = [ | |
1056 | 'usergroup.read', 'usergroup.write', 'usergroup.admin'] |
|
1068 | 'usergroup.read', 'usergroup.write', 'usergroup.admin'] | |
1057 |
|
1069 | |||
1058 | def _cached_user_group_acl(user_id, perm_def): |
|
1070 | def _cached_user_group_acl(user_id, perm_def, name_filter): | |
1059 | return [x.users_group_id for x in UserGroupList( |
|
1071 | qry = UserGroup.query() | |
1060 | UserGroup.query().all(), perm_set=perm_def)] |
|
1072 | if name_filter: | |
|
1073 | ilike_expression = u'%{}%'.format(safe_unicode(name_filter)) | |||
|
1074 | qry = qry.filter( | |||
|
1075 | UserGroup.users_group_name.ilike(ilike_expression)) | |||
|
1076 | ||||
|
1077 | return [x.users_group_id for x in | |||
|
1078 | UserGroupList(qry, perm_set=perm_def)] | |||
1061 |
|
1079 | |||
1062 | compute = caches.conditional_cache( |
|
1080 | compute = caches.conditional_cache( | |
1063 | 'long_term', 'user_group_acl_ids', |
|
1081 | 'long_term', 'user_group_acl_ids', | |
1064 | condition=cache, func=_cached_user_group_acl) |
|
1082 | condition=cache, func=_cached_user_group_acl) | |
1065 | return compute(self.user_id, perms) |
|
1083 | return compute(self.user_id, perms, name_filter) | |
1066 |
|
1084 | |||
1067 | @property |
|
1085 | @property | |
1068 | def ip_allowed(self): |
|
1086 | def ip_allowed(self): |
General Comments 0
You need to be logged in to leave comments.
Login now