"""Bulk add identity profile resources.""" from marshmallow import fields, pre_load from marshmallow.validate import Length, OneOf from permissions.constants import constants from permissions.validations import ma from permissions.validations.schemas.identity import Identity from permissions.validations.schemas.settings_resources import SettingsResourcesSchema class AddIdentityProfileResourcesSchema(ma.Schema): """Schema to bulk add or delete resources to identity profiles. Properties: - identities (list): List of identities. - profiles (list): List of profile objects. Whitelisted profile_types only. - resources (list): List of resource object. Whitelisted resource_types only. - send_password_reset (bool): send_password_reset email. - set_email_verified (bool): verified email flag. - brand (str): identity default brand, ex. theorchard/awal. - master_contact (bool): master contact flag. """ identity = fields.Nested(Identity, many=False, required=True) resource_access = fields.Nested(SettingsResourcesSchema, many=True, validate=Length(min=1)) create_auth0_user = fields.Bool(required=False, load_default=True) send_password_reset = fields.Bool(required=False, load_default=True) set_email_verified = fields.Bool(required=False, load_default=True) overwrite_existing_access = fields.Bool(required=False, load_default=True) brand = fields.Str(validate=OneOf(constants.PROFILE_BRANDS), required=False) master_contact = fields.Bool(required=False, load_default=False) user_metadata = fields.Dict(required=False, load_default={}) @pre_load def auth0_related_params(self, in_data, **kwargs): """Manage all auth0 related params.""" create_auth0_user = in_data.get('create_auth0_user') if create_auth0_user is not None and create_auth0_user is False: in_data['set_email_verified'] = False in_data['send_password_reset'] = False return in_data