def get_permissions_by_username(username, directory):
pootle_path = directory.pootle_path
path_parts = filter(None, pootle_path.split('/'))
key = iri_to_uri('Permissions:%s' % username)
permissions_cache = cache.get(key, {})
if pootle_path not in permissions_cache:
try:
permissionset = PermissionSet.objects.filter(
directory__in=directory.trail(),
user__username=username).order_by('-directory__pootle_path')[0]
except IndexError:
permissionset = None
if (len(path_parts) > 1 and path_parts[0] != 'projects' and
(permissionset is None or
len(filter(None, permissionset.directory.pootle_path.split('/'))) < 2)):
# Active permission at language level or higher, check project
# level permission
try:
project_path = '/projects/%s/' % path_parts[1]
permissionset = PermissionSet.objects.get(
directory__pootle_path=project_path,
user__username=username)
except PermissionSet.DoesNotExist:
pass
if permissionset:
permissions_cache[pootle_path] = permissionset.to_dict()
else:
permissions_cache[pootle_path] = None
cache.set(key, permissions_cache, settings.POOTLE_CACHE_TIMEOUT)
return permissions_cache[pootle_path]
评论列表
文章目录