class SPHelper
SPHelper is a utility class for SharePoint directory operations, providing static methods to check group membership, site availability, retrieve group members/owners, and manage external members.
/tf/active/vicechatdev/SPFCsync/venv/lib64/python3.11/site-packages/office365/sharepoint/directory/helper.py
12 - 151
moderate
Purpose
This class serves as a helper for SharePoint directory-related operations. It provides static methods to interact with SharePoint's directory services, including checking if a user is a member of a group, verifying site availability, retrieving membership information, getting group members and owners, and managing external members. All methods are static and create service operation queries that are added to the SharePoint context for execution.
Source Code
class SPHelper(Entity):
def __init__(self, context):
super(SPHelper, self).__init__(context, ResourcePath("SP.Directory.SPHelper"))
@staticmethod
def is_member_of(context, principal_name, group_id, result=None):
"""
:param str principal_name: User principal name
:param str group_id: Group id
:param office365.sharepoint.client_context.ClientContext context: SharePoint context
:param ClientResult or None result: Client result
"""
if result is None:
result = ClientResult(context)
payload = {"principalName": principal_name, "groupId": group_id}
qry = ServiceOperationQuery(
SPHelper(context), "IsMemberOf", None, payload, None, result, True
)
context.add_query(qry)
return result
@staticmethod
def check_site_availability(context, site_url):
"""
:param str site_url: Site Url
:param office365.sharepoint.client_context.ClientContext context: SharePoint context
"""
return_type = ClientResult(context)
qry = ServiceOperationQuery(
SPHelper(context),
"CheckSiteAvailability",
None,
{"siteUrl": site_url},
None,
return_type,
)
qry.static = True
context.add_query(qry)
return return_type
@staticmethod
def get_membership(context, user_id):
"""
:param office365.sharepoint.client_context.ClientContext context: SharePoint client context
:param str user_id: User's identifier
"""
payload = {"userId": user_id}
return_type = MembershipResult(context)
qry = ServiceOperationQuery(
SPHelper(context), "GetMembership", None, payload, None, return_type, True
)
context.add_query(qry)
return return_type
@staticmethod
def get_members_info(context, group_id, row_limit, return_type=None):
"""
:param office365.sharepoint.client_context.ClientContext context: SharePoint context
:param str group_id: User's login
:param int row_limit: Result offset
:param MembersInfo return_type: Result
"""
if return_type is None:
return_type = MembersInfo(context)
payload = {
"groupId": group_id,
"rowLimit": row_limit,
}
qry = ServiceOperationQuery(
SPHelper(context), "GetMembersInfo", None, payload, None, return_type, True
)
context.add_query(qry)
return return_type
@staticmethod
def get_my_groups(context, logon_name, offset, length, return_type=None):
"""
:param office365.sharepoint.client_context.ClientContext context: SharePoint context
:param str logon_name: User's login
:param int offset: Result offset
:param int length: Results count
:param MyGroupsResult return_type: return type
"""
if return_type is None:
return_type = MyGroupsResult(context)
payload = {"logOnName": logon_name, "offset": offset, "len": length}
qry = ServiceOperationQuery(
SPHelper(context), "GetMyGroups", None, payload, None, return_type, True
)
context.add_query(qry)
return return_type
@staticmethod
def get_members(context, group_id, return_type=None):
"""
:param str group_id: Group identifier
:param office365.sharepoint.client_context.ClientContext context: SharePoint context
:param EntityCollection or None return_type: Returns members
"""
if return_type is None:
return_type = EntityCollection(context, User)
qry = ServiceOperationQuery(
SPHelper(context), "GetMembers", [group_id], None, None, return_type
)
qry.static = True
context.add_query(qry)
return return_type
@staticmethod
def get_owners(context, group_id, return_type=None):
"""
:param str group_id: Group identifier
:param office365.sharepoint.client_context.ClientContext context: SharePoint context
:param EntityCollection or None return_type: Returns members
"""
if return_type is None:
return_type = EntityCollection(context, User)
qry = ServiceOperationQuery(
SPHelper(context), "GetOwners", [group_id], None, None, return_type
)
qry.static = True
context.add_query(qry)
return return_type
@staticmethod
def remove_external_members(context, group_id):
"""
:param str group_id: Group identifier
:param office365.sharepoint.client_context.ClientContext context: SharePoint context
"""
binding_type = SPHelper(context)
qry = ServiceOperationQuery(
binding_type, "RemoveExternalMembers", [group_id], is_static=True
)
context.add_query(qry)
return binding_type
@property
def entity_type_name(self):
return "SP.Directory.SPHelper"
Parameters
| Name | Type | Default | Kind |
|---|---|---|---|
bases |
Entity | - |
Parameter Details
context: A SharePoint client context object (office365.sharepoint.client_context.ClientContext) that manages the connection and communication with SharePoint services. This is required for all operations and is used to queue and execute queries.
Return Value
The constructor returns an SPHelper instance initialized with the provided context and a ResourcePath pointing to 'SP.Directory.SPHelper'. Each static method returns different types: is_member_of returns ClientResult with boolean, check_site_availability returns ClientResult with availability status, get_membership returns MembershipResult, get_members_info returns MembersInfo, get_my_groups returns MyGroupsResult, get_members and get_owners return EntityCollection of User objects, and remove_external_members returns the SPHelper instance.
Class Interface
Methods
__init__(self, context) -> None
Purpose: Initializes the SPHelper instance with a SharePoint context
Parameters:
context: SharePoint client context (ClientContext) for managing connections and queries
Returns: None - initializes the instance
is_member_of(context, principal_name: str, group_id: str, result: ClientResult = None) -> ClientResult
static
Purpose: Checks if a user (principal) is a member of a specified group
Parameters:
context: SharePoint client contextprincipal_name: User principal name (email or login name)group_id: Identifier of the group to check membership inresult: Optional ClientResult object to store the result, created if None
Returns: ClientResult containing a boolean value indicating membership status
check_site_availability(context, site_url: str) -> ClientResult
static
Purpose: Verifies if a SharePoint site URL is available for use
Parameters:
context: SharePoint client contextsite_url: Full URL of the site to check availability
Returns: ClientResult containing availability status information
get_membership(context, user_id: str) -> MembershipResult
static
Purpose: Retrieves membership information for a specific user
Parameters:
context: SharePoint client contextuser_id: Identifier of the user to get membership information for
Returns: MembershipResult object containing the user's membership details
get_members_info(context, group_id: str, row_limit: int, return_type: MembersInfo = None) -> MembersInfo
static
Purpose: Retrieves detailed information about members of a group with pagination
Parameters:
context: SharePoint client contextgroup_id: Identifier of the group to get members fromrow_limit: Maximum number of members to returnreturn_type: Optional MembersInfo object to store results, created if None
Returns: MembersInfo object containing member details
get_my_groups(context, logon_name: str, offset: int, length: int, return_type: MyGroupsResult = None) -> MyGroupsResult
static
Purpose: Retrieves groups that a user belongs to with pagination support
Parameters:
context: SharePoint client contextlogon_name: User's login nameoffset: Starting position for pagination (0-based)length: Number of groups to returnreturn_type: Optional MyGroupsResult object to store results, created if None
Returns: MyGroupsResult object containing the user's groups
get_members(context, group_id: str, return_type: EntityCollection = None) -> EntityCollection
static
Purpose: Retrieves all members of a specified group
Parameters:
context: SharePoint client contextgroup_id: Identifier of the group to get members fromreturn_type: Optional EntityCollection to store User objects, created if None
Returns: EntityCollection of User objects representing group members
get_owners(context, group_id: str, return_type: EntityCollection = None) -> EntityCollection
static
Purpose: Retrieves all owners of a specified group
Parameters:
context: SharePoint client contextgroup_id: Identifier of the group to get owners fromreturn_type: Optional EntityCollection to store User objects, created if None
Returns: EntityCollection of User objects representing group owners
remove_external_members(context, group_id: str) -> SPHelper
static
Purpose: Removes external members from a specified group
Parameters:
context: SharePoint client contextgroup_id: Identifier of the group to remove external members from
Returns: SPHelper instance (binding type for the operation)
@property entity_type_name(self) -> str
property
Purpose: Returns the SharePoint entity type name for this helper class
Returns: String 'SP.Directory.SPHelper' representing the entity type
Attributes
| Name | Type | Description | Scope |
|---|---|---|---|
context |
ClientContext | SharePoint client context inherited from Entity base class, used for managing queries and connections | instance |
resource_path |
ResourcePath | Resource path pointing to 'SP.Directory.SPHelper', inherited from Entity base class | instance |
Dependencies
office365
Required Imports
from office365.runtime.client_result import ClientResult
from office365.runtime.paths.resource_path import ResourcePath
from office365.runtime.queries.service_operation import ServiceOperationQuery
from office365.sharepoint.directory.members_info import MembersInfo
from office365.sharepoint.directory.membership_result import MembershipResult
from office365.sharepoint.directory.my_groups_result import MyGroupsResult
from office365.sharepoint.directory.user import User
from office365.sharepoint.entity import Entity
from office365.sharepoint.entity_collection import EntityCollection
Usage Example
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.directory.sp_helper import SPHelper
# Initialize SharePoint context
ctx = ClientContext('https://yourtenant.sharepoint.com/sites/yoursite')
ctx.with_credentials(user_credentials)
# Check if user is member of a group
result = SPHelper.is_member_of(ctx, 'user@domain.com', 'group-id-123')
ctx.execute_query()
print(f'Is member: {result.value}')
# Check site availability
availability = SPHelper.check_site_availability(ctx, 'https://yourtenant.sharepoint.com/sites/newsite')
ctx.execute_query()
print(f'Site available: {availability.value}')
# Get group members
members = SPHelper.get_members(ctx, 'group-id-123')
ctx.execute_query()
for member in members:
print(f'Member: {member.login_name}')
# Get user's groups
my_groups = SPHelper.get_my_groups(ctx, 'user@domain.com', offset=0, length=10)
ctx.execute_query()
print(f'User groups: {my_groups.value}')
Best Practices
- All methods are static and do not require instantiation of SPHelper for normal use
- Always call ctx.execute_query() after calling any SPHelper method to execute the queued operations
- Methods add queries to the context but do not execute them immediately - this allows batching multiple operations
- Return types (ClientResult, MembershipResult, etc.) contain the actual data only after execute_query() is called
- The context parameter must be a valid, authenticated ClientContext instance
- Optional return_type parameters allow reusing existing result objects for multiple queries
- Group IDs and user identifiers must be in the correct format expected by SharePoint
- Handle exceptions that may occur during execute_query() for network or permission issues
Similar Components
AI-powered semantic similarity - components with related functionality:
-
class Utility 68.5% similar
-
class SharingUtility 67.7% similar
-
class SiteSharingReportHelper 67.4% similar
-
class Group_v1 65.7% similar
-
class User_v2 64.6% similar