from fansifter_common.exceptions import FansifterError, ObjectNotFoundError class AutomatedEmailNotFoundError(ObjectNotFoundError): code = "automated_email_not_found" message = "Automated Email not found" class AutomatedEmailUniqueNameError(FansifterError): code = "automated_email_unique_name" message = "Automated Email with this name already exists" status_code = 400 class AutomatedEmailSenderEmailNotValidError(FansifterError): code = "automated_email_sender_email_not_valid" message = "Automated email sender email is not valid" status_code = 400 class AutomatedEmailTypeChangeNotAllowedError(FansifterError): code = "automated_email_type_change_not_allowed" message = "Changing automated email type is not allowed" status_code = 400 class AutomatedEmailHasTriggerError(FansifterError): code = "email_campaign_has_trigger_error" message = "Remove connected forms to enable this action" status_code = 400 class InvalidSourceCampaignIdError(FansifterError): code = "invalid_source_campaign_id" message = "Invalid Source Campaign ID" status_code = 400 class SourceCampaignNotFoundError(ObjectNotFoundError): code = "source_campaign_not_found" message = "Source Campaign not found" class SourceCampaignSubscriptionOnlyRequiredError(FansifterError): code = "source_campaign_subscription_only_required" message = "OPT_IN automated emails require subscription_only connections" status_code = 400 class SourceCampaignConnectionsEmptyError(FansifterError): code = "source_campaign_connections_empty" message = "At least one source campaign connection is required" status_code = 400 class SourceCampaignVendorMismatchError(FansifterError): code = "source_campaign_vendor_mismatch" message = "Source campaign belongs to a different vendor than the automated email" status_code = 400 class SourceCampaignNotAttachedError(FansifterError): code = "source_campaign_not_attached" message = "Source campaign is not attached to this automated email" status_code = 400