🔍 Code Extractor

class SPHelper

Maturity: 38

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.

File:
/tf/active/vicechatdev/SPFCsync/venv/lib64/python3.11/site-packages/office365/sharepoint/directory/helper.py
Lines:
12 - 151
Complexity:
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 context
  • principal_name: User principal name (email or login name)
  • group_id: Identifier of the group to check membership in
  • result: 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 context
  • site_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 context
  • user_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 context
  • group_id: Identifier of the group to get members from
  • row_limit: Maximum number of members to return
  • return_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 context
  • logon_name: User's login name
  • offset: Starting position for pagination (0-based)
  • length: Number of groups to return
  • return_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 context
  • group_id: Identifier of the group to get members from
  • return_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 context
  • group_id: Identifier of the group to get owners from
  • return_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 context
  • group_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

    A utility class for SharePoint operations including email management, user information retrieval, principal search, wiki page creation, and various administrative tasks.

    From: /tf/active/vicechatdev/SPFCsync/venv/lib64/python3.11/site-packages/office365/sharepoint/utilities/utility.py
  • class SharingUtility 67.7% similar

    A utility class for SharePoint sharing operations that provides static methods to retrieve user directory information and validate user email addresses.

    From: /tf/active/vicechatdev/SPFCsync/venv/lib64/python3.11/site-packages/office365/sharepoint/sharing/utility.py
  • class SiteSharingReportHelper 67.4% similar

    A helper class for managing SharePoint site sharing reports, providing static methods to create, cancel, and retrieve capabilities of sharing report jobs.

    From: /tf/active/vicechatdev/SPFCsync/venv/lib64/python3.11/site-packages/office365/sharepoint/sharing/site_sharing_report_helper.py
  • class Group_v1 65.7% similar

    Represents a SharePoint Directory Group entity that provides methods to retrieve group members, owners, and member information with lazy loading support.

    From: /tf/active/vicechatdev/SPFCsync/venv/lib64/python3.11/site-packages/office365/sharepoint/directory/group.py
  • class User_v2 64.6% similar

    Represents a SharePoint Directory User entity with methods to check group membership and retrieve user's groups.

    From: /tf/active/vicechatdev/SPFCsync/venv/lib64/python3.11/site-packages/office365/sharepoint/directory/user.py
← Back to Browse