
    i              	       0   d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
mZmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZmZ ddlmZ ddlmZmZ dZej:                  j<                  ZdZ dZ!dZ"dZ#d Z$d Z%d Z&ejN                  jQ                  ee      Z) e*e)jV                        e k7  r e,de)jV                   de         e$d        e-de"         e-de)jV                           e-de)j\                           e-de)j^                           e-de)j`                           e-de)jb                           e-de)jd                           e-de)jf                          ejN                  ji                  e)ejj                  jl                  ejn                  jp                         Z9ejN                  ji                  e)e!      Z:e:ji                  ejv                  jl                  ejx                  jl                  ejz                  jl                  g"      Z>ejN                  ji                  e)e!      Z?e?ji                  ejv                  jl                  ejx                  jl                  ejz                  jl                  g"      Z@e
jN                  ji                  e)ejv                  jl                  ejz                  jl                  g#      ZAejN                  ji                  e)ejv                  jl                  ejz                  jl                  g#      ZBe	jN                  ji                  e)ejv                  jl                  ejz                  jl                  g#      ZCejN                  ji                  e)ej                  j                  ej                  jx                  ej                  j                  g$      ZGejN                  ji                  e)ej                  j                  ej                  jx                  g%      ZIejN                  ji                  e)ej                  jv                  ej                  j                  ej                  j                  g&      ZM eN       ZOe)jf                  reOj                  e)jf                         eOj                   e&e>d'             eOj                   e&e@d'             eOj                   e&eAd(             eOj                   e&eBd(             eOj                   e&eCd(             eOj                   e&eId)             eOj                   e&eId*             eOj                   e&eMd(              eReO      ZO e$d+        e-d, e%e9               e-d- e%e>               e-d. e%e@               e-d/ e%eA               e-d0 e%eB               e-d1 e%eC               e-d2 e%eG               e-d3 e%eI               e-d4 e%eM               e-d5 eSeO              eOdd6 D ]  Z3 e-d7e3          eSeO      d6kD  r e-d8 eSeO      d6z
   d9       e"s e$d:        e-d;        eTd       ej                         ZU ej                         5  e9j                  ejn                  j                  eU<       ejN                  ji                  e)j                  =      j                  ejz                  jl                  d>       e>j                  ej                  jl                  eUe!d?       e@j                  ej                  jl                  eUe!d?       eAj                  ejz                  jl                  e!d@       eBj                  ejz                  jl                  e!d@       eCj                  ejz                  jl                  e!ddAB       eGj                  ej                  jz                  ej                  j                  ej                  jz                  ej                  jz                  ej                  jz                  eUC       eIj                  ej                  jz                  eUD       eMj                  ej                  jz                  eUD       ddd        e$dE       e#r>dZ]dZ^eOD ]&  Z3	 ej                  j                  e3dFdGH       e]dz  Z](  e-dKe] dLe^        n e-dM        e$dN        e-dO       y# 1 sw Y   jxY w# ea$ rZbe^dz  Z^ e-dIe3 dJeb        Y dZb[bzdZb[bww xY w)Pa"  
Stop retry/alert bleeding for one Facebook ad account.

Usage from repo root:
  uv run python manage.py shell < /tmp/stop_fb_account_336282307415329_spam.py

Dry-run is the default. Apply changes with:
  APPLY=1 uv run python manage.py shell < /tmp/stop_fb_account_336282307415329_spam.py
    N)current_app)transaction)timezone)AdCreativeDataAdIdsCacheDataAdMetricCacheDataAccountSyncLog)UpdateStatus)
SyncStatus)BreakdownSyncStatusPipelineSyncStatus)JobJobTask)UserRoleType)AccountUserAccount336282307415329z$4e7e1ec9-8754-459e-b8b7-7620db56f52czmSuppressed manually: Facebook returned (#200) missing ads_management/ads_read for ad account 336282307415329.   c                 F    t        d       t        |        t        d       y )NzQ
================================================================================zP================================================================================)print)titles    ,/tmp/stop_fb_account_336282307415329_spam.pyprint_sectionr   &   s    	/	%L	(O    c                 "    | j                         S )N)count)qss    r   r   r   ,   s    88:r   c           	          t          | j                  di | ddij                  di |dij                  |d      j                               S )N__isnullT )flat )listexcludevalues_listdistinct)r   
field_names     r   task_ids_from_qsr(   0   s\    	


5H-t45		%#	%	Zd	+		 r   )ad_account_idplatformz"Refusing to run: resolved account z, expected Targetzapply=zaccount_id=zad_account_id=zname=z	platform=zversion=zassets_update_status=zaccount.task_id=)accountrolestatus)r,   r*   )
status__in)r,   sync_status__in)r,   overall_status__in)r,   	state__in)job__accountr2   celery_task_idtask_idgroup_idchord_idzPlanned Changesz/active owner UserAccount rows to mark EXPIRED: z6pipeline rows PENDING/RUNNING/FAILED to mark SKIPPED: z7breakdown rows PENDING/RUNNING/FAILED to mark SKIPPED: zEAdIdsCacheData pending/failed rows to mark failed and clear task_id: zHAdMetricCacheData pending/failed rows to mark failed and clear task_id: zCAdCreativeData pending/failed rows to mark failed and cap retries: z)AccountSyncLog open rows to mark failed: z(Job queued/running rows to mark failed: z"JobTask open rows to mark failed: ztask ids to revoke: 2   z  z  ... z morezDry RunzENo changes made. Re-run with APPLY=1 to update rows and revoke tasks.)r.   last_token_check_time)pk)assets_update_statusr5   )r.   completed_at
last_errorr4   )sync_statuserror_messager5      )r>   r?   r5   creative_sync_retry_count)overall_statuscurrent_stagead_creative_sync_statusstats_sync_statusai_reports_statusfinished_at)staterG   zTask RevokeTSIGTERM)	terminatesignalzfailed to revoke z: zrevoked=z failed=zSkipped because REVOKE_TASKS=0DonezDSuppression applied for Facebook ad_account_id=336282307415329 only.)c__doc__osceleryr   	django.dbr   django.utilsr   creative_module.modelsr   r   r   r	   creative_module.typesr
   data_pipeline_module.constantsr   data_pipeline_module.modelsr   r   jobs.modelsr   r   organization_auth.constantsr   organization_auth.modelsr   r   AD_ACCOUNT_IDPlatformFACEBOOKPLATFORMEXPECTED_ACCOUNT_IDSUPPRESSION_REASONAPPLYREVOKE_TASKSr   r   r(   objectsgetr,   stridRuntimeErrorr   r)   ad_account_namer*   versionr;   r5   filterOWNERvalueUserAccountStatusACTIVEactive_owner_qspipeline_qsPENDINGRUNNINGFAILEDpipeline_open_qsbreakdown_qsbreakdown_open_qsad_ids_open_qsmetric_open_qscreative_open_qsOverallStatusQUEUEDRECONCILINGrun_open_qsJobStatejob_open_qs	TaskStateRECEIVEDSTARTEDjob_task_open_qssettask_idsaddupdatesortedlen
SystemExitnowatomicEXPIREDr:   SKIPPEDStage
CLICKHOUSEStageStatusrevokedfailedcontrolrevoke	Exceptionexcr"   r   r   <module>r      s   
  ! ! d d . 5 O $ 4 9 "$$< & 
 	
 //

MH

Mwzz?))
;GJJ<{SfRgh
ii h  ug  GJJ<  ! w,,-. / g%%&' ( 	'""#$ % !" # g::;< = )* +%%,,				!	!((// -  !((//(/S%%""((**<*<*B*BJDUDUD[D[\ &   #**11'H1U ''""((**<*<*B*BJDUDUD[D[\ (    ''..!))//1D1D1J1JK /  #**11!))//1D1D1J1JK 2  "))00!))//1D1D1J1JK 1  
 $$++$$++$$,,$$00 ,  kk  ||""CLL$8$89 !  ??))  (('*;*;*D*DgFWFWF_F_` *  
 5
??LL!  !13CD E  !24DE F  ; <  ; <  !19= >  j9 :  j9 :  !19= >(    7o8N7OP Q >uEU?V>WX Y ?FW@X?YZ [ MeTbNcMde f PQVWeQfPgh i KERbLcKde f 1%2D1EF G 0{1C0DE F *51A+B*CD E S]O, -}G	Bwi. x=2	F3x=2%&e
,-)	
QR
Q-hlln[,,44!  
 OOgjj)00)0066 1 
 !!''%	   !!''%	    ''--(  
  ''--(  
  ''--("#	   %33::$**55 . : : A A(44;;(44;;   ll!!   &&  m v m GF	8&&w$y&QqLG  
HWIXfX
./	
*+ f  L MW F  	8aKF%gYb677	8s%   7Hc'#c3'c03d8dd