From d39063b22ffb6442e275db39704361cdb9251793 Mon Sep 17 00:00:00 2001 From: Fringg Date: Tue, 17 Feb 2026 11:11:25 +0300 Subject: [PATCH] fix: unassign all campaigns when revoking partner status Previously revoke_partner only changed partner_status and commission, leaving campaigns orphaned with invalid partner_user_id. Now sets partner_user_id=NULL on all campaigns belonging to the revoked partner. --- app/services/partner_application_service.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/services/partner_application_service.py b/app/services/partner_application_service.py index e3bd7103..5a0d430c 100644 --- a/app/services/partner_application_service.py +++ b/app/services/partner_application_service.py @@ -5,10 +5,10 @@ import string from datetime import UTC, datetime import structlog -from sqlalchemy import desc, func, select +from sqlalchemy import desc, func, select, update from sqlalchemy.ext.asyncio import AsyncSession -from app.database.models import PartnerApplication, PartnerStatus, User +from app.database.models import AdvertisingCampaign, PartnerApplication, PartnerStatus, User logger = structlog.get_logger(__name__) @@ -164,6 +164,13 @@ class PartnerApplicationService: user.partner_status = PartnerStatus.NONE.value user.referral_commission_percent = None + # Отвязываем все кампании от бывшего партнёра + await db.execute( + update(AdvertisingCampaign) + .where(AdvertisingCampaign.partner_user_id == user_id) + .values(partner_user_id=None) + ) + await db.commit() logger.info(