"""Multiple profile types Schema.""" from marshmallow import fields from marshmallow.validate import OneOf from permissions.constants import constants from permissions.validations import ma class GetProfilesForAdminSchema(ma.Schema): """Schema for parameters to get profiles for admin. Properties: - limit (int): Limit number of records. - offset (int): Offset result set. - term (str): Search term. Search is case-insensitive. - active (str): active param. Y or N accepted. - pending (str): pending param. Y (waiting for invite accept) or N (invite already accepted). - profile_type (list): Type of profiles the given identity has access to. Whitelisted types only. - label_participant (list): ids of label participants nodes to filter by. - feature_flag (list): feature flag. - resource_access (list): Optional. Resource uuids to filter by. - parent_vendor_filter (list): Filter results to parent vendor uuids. - include_subaccount_users (bool): Optional. Whether to include subaccount users for D3 admins when "resource_access" is specified. Default is "true". - include_requester (bool): Optional. Whether to include the requesting user from the list of profiles returned. Default is "false". """ limit = fields.List(fields.Int(), required=False) offset = fields.List(fields.Int(), required=False) term = fields.List(fields.String(), required=False) active = fields.List(fields.String(validate=OneOf(['Y', 'N'])), required=False) pending = fields.List(fields.String(validate=OneOf(['Y', 'N'])), required=False) profile_type = fields.List( fields.String(validate=OneOf(constants.SETTINGS_SUPPORT_MAPPING['profileTypes'])), required=False, ) label_participant = fields.List(fields.String(), required=False) resource_access = fields.List(fields.String(), required=False) parent_vendor_filter = fields.List(fields.String(), required=False) feature_flag = fields.List(fields.String(), required=False) include_subaccount_users = fields.List(fields.Boolean(), required=False) include_requester = fields.List(fields.Boolean(), required=False)