def get_all_user_permissions(user, obj=None): perm_query = _get_permissions_query(obj) perm_query.fields.append("op.permission_id as perm_id") perm_query.fields.append("gl.permission_id AS gl_perm_id") perm_query.conditions.append( "gug.user_id = {user_id!s}".format(user_id=user.id)) query = Query(tables=[ """ {permission_table!s} perm_table LEFT JOIN {content_type_table!s} ctype_table ON perm_table.content_type_id=ctype_table.id INNER JOIN ( {permission_owners_query!s} ) perm_query ON perm_query.perm_id = perm_table.id OR perm_query.gl_perm_id = perm_table.id """.format( permission_table=Permission._meta.db_table, content_type_table=ContentType._meta.db_table, permission_owners_query=perm_query.get_raw_query(), ) ]) query.fields.append("perm_table.id as id") query.fields.append("perm_table.codename as codename") query.fields.append("ctype_table.app_label as app_label") perms = Permission.objects.raw(query.get_raw_query()) return set("{app}.{codename}".format(app=p.app_label, codename=p.codename) for p in perms)
def get_all_permission_owners(permission, include_superuser=False, obj=None): query = _get_permissions_query(obj) query.fields.append("gug.user_id AS id") query.conditions.append("op.permission_id = {perm_id!s}") query.params.update({'perm_id': permission.id}) table_name = get_user_model()._meta.db_table condition = "{table_name!s}.id IN ({subquery!s})" if include_superuser: condition += " OR {table_name!s}.is_superuser" condition = condition.format(table_name=table_name, subquery=query.get_raw_query()) return get_user_model().objects.extra(where=[condition])
def get_all_permission_owners(permission, include_superuser=False, obj=None): query = _get_permissions_query(obj) query.fields.append("gug.user_id AS id") query.conditions.append("op.permission_id = {perm_id!s}") query.params.update({'perm_id': permission.id}) table_name = get_user_model()._meta.db_table condition = "{table_name!s}.id IN ({subquery!s})" if include_superuser: condition += " OR {table_name!s}.is_superuser" condition = condition.format( table_name=table_name, subquery=query.get_raw_query() ) return get_user_model().objects.extra(where=[condition])
def get_all_user_permissions(user, obj=None): perm_query = _get_permissions_query(obj) perm_query.fields.append("op.permission_id as perm_id") perm_query.fields.append("gl.permission_id AS gl_perm_id") perm_query.conditions.append("gug.user_id = {user_id!s}".format(user_id=user.id)) query = Query(tables=[ """ {permission_table!s} perm_table LEFT JOIN {content_type_table!s} ctype_table ON perm_table.content_type_id=ctype_table.id INNER JOIN ( {permission_owners_query!s} ) perm_query ON perm_query.perm_id = perm_table.id OR perm_query.gl_perm_id = perm_table.id """.format( permission_table=Permission._meta.db_table, content_type_table=ContentType._meta.db_table, permission_owners_query=perm_query.get_raw_query(), ) ]) query.fields.append("perm_table.id as id") query.fields.append("perm_table.codename as codename") query.fields.append("ctype_table.app_label as app_label") perms = Permission.objects.raw(query.get_raw_query()) return set("{app}.{codename}".format(app=p.app_label, codename=p.codename) for p in perms)