
    i                        d Z ddlZddlZddlmZ ddlmZ ddl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 ej&                  j)                  d
      dk(  Zej&                  j)                  d      Zej&                  j)                  d      r eej&                  d         ndZdddddddddddddddddddddd d!d"dd#d$d%d&dd'd(d)d*dd+d,d-d.dd/d0d1d2dg	Zd3 Zd4 Zd5 ZdZdZdZdZ  e!d6erd
nd7         e!d8       eD ]L  Z"er	e"d9   ek7  rejF                  j)                  e"d9   :      Z$ejF                  j)                  e"d;   e$<      Z% ee"      Z&e e'e&      z  Z e!         e!e"d=    d>e$jP                   d?        e!d@e%jP                   dAe$jR                   dB e'e&               e!dCdDjU                  dE e&ddF D                      ese&D ]r  Z+ e!dGe+jX                          	  ee+        e         ejZ                   e.e+jX                         e.e$jP                         e.e%j^                        e$jR                  gdHI      Z0e0jc                         re dJz  Z  e!dKe0j`                          e	jF                  j)                  e+jP                  :      Z2e2jf                  ejh                  jj                  k(  redJz  Z ee+jP                        \  Z6Z7ee6z  Ze	jF                  j)                  e+jP                  :      Z2 e!dLe2jf                  dMe2jp                  dNe2jr                  dOe7dPe2jt                  
       u O  e!         e!dSe        er" e!dTe         e!dUe         e!dVe         y e!dW       y# e;$ r?Z<e dJz  Z  e!dQ e=e<      j|                   dRe<         ej~                          Y dZ<[<dZ<[<ww xY w)Xa  
Force a fresh ad-platform creative fetch and direct ClickHouse ad_creative push.

Default mode is dry-run. To run:

  APPLY=1 UV_CACHE_DIR=/tmp/uv-cache uv run python manage.py shell < /tmp/refetch_non_auth_creatives_direct_push.py

Optional env:
  MAX_PER_ACCOUNT=1        limit rows per account while testing
  ONLY_ACCOUNT_ID=<uuid>   restrict to one account

What this does:
  - Targets only the non-auth creative blockers from the failed onboarding check.
  - Includes remaining PENDING rows.
  - Also includes the one-row test rows that were flipped to success/empty_url.
  - Clears cached ad_metadata before fetching so fetch_ad_creative_data_task must
    call the ad platform API again.
  - Runs fetch_ad_creative_data_task locally/synchronously.
  - Pushes successful rows directly to ClickHouse via ad_creative_sync helpers.
  - Does not dispatch overview generation, AI reports, or label assignment.
    N)close_old_connections)timezone)AccountSyncLogAdCreativeData)fetch_ad_creative_data_task)UpdateStatus)build_ad_creative_rowpush_ad_creatives_to_clickhouse)AccountAPPLY1ONLY_ACCOUNT_IDMAX_PER_ACCOUNTz3CF_EMEA_ APEX.DE_ Stellantis-Opel_DE_Automotive_CL*z$ddc8c9a0-9cbb-4160-8fe5-e1c445da4439z$e4880251-5ecd-4efa-9e3d-53406ec551e4120236024957050730)name
account_idrun_id
test_ad_idz CF_EMEA_ APEX.IT_GSK_IT_CPG*CL 2z$326578b0-fd74-44eb-a25c-06c6ad23b26az$787fdb0b-3f3c-4bd3-8de6-f1551c1c938c120234520857230676zCCF EMEA_Brightfish.BE_Brightfish.BE_Belgium_Arts & Entertainment*CLz$2c46b0eb-217f-4dca-912b-8288aab015a3z$702112d6-532b-46f3-88c5-6bfcae75ba08120235323586060191z2CF_EMEA_Dentsu.HU_Zwack Inc_Hungary_Alcohol/LDA*CLz$55b54c1d-213f-42be-9557-4fe199a2ae0cz$7d23af7e-025d-49de-99eb-89fcc4fbabe1120231837700040571z8CF_EMEA_HandicapNL_IGM Network_Charitable Foundations*CLz$aab443ee-7f13-404f-91d9-004afdd20d81z$ade22646-896b-48d8-8af0-b1a8db16f949120233034287310500z;CF_EMEA_OMD.QA (974)_Qatar Central Bank_Travel & Tourism*CLz$dadfc906-8169-4b17-931c-1cd60aed79f1z$e8859667-436e-4bfa-b3c5-760806506762120240584487750136z<Meta_IN_Publicis-Groupe-IN_Cathay-Pacific_IN_Airline*AX-1022z$ec4cfcf6-0a97-4c9e-ba94-af3b41ba390bz$b65e559e-277f-4f94-8cbc-567dc4b1e410120229098671130773z9Meta_IN_Publicis-Groupe-IN_EFL_IN_Home-Appliances*AX-1022z$bceff4f0-d150-4d68-a0d6-8c23a5bc6403z$667de63a-72bb-474e-b275-c83f5493480d120230380531630674z	Platzi MXz$29ec4a5f-facd-466f-83d9-2fcd14488078z$5ae66125-74de-4654-aee9-ed62f7475b151862914546399265c                    t         j                  j                  | d   t        j                  j
                        j                  d      j                  dd      }t        rt        |d t               }nt        |      }t        t         j                  j                  | d   | d               }|D ci c]  }|j                  | }}|D ]  }|||j                  <    t        |j                               S c c}w )	Nr   )r   sync_statusT)ad_id__isnull
updated_atidr   )r   ad_id)r   objectsfilterr   PENDINGvalueexcludeorder_byr   listr!   values)target
pending_qspending_rows	test_rowsrow
rows_by_ids         ./tmp/refetch_non_auth_creatives_direct_push.pyrows_for_targetr2   f   s    	6,/\=Q=Q=W=W	X	t	$	,	%	  J'789J'%%l+& 	& 	
I *66##&&#+J6 
366 
!!#$$ 7s   5C:c                     t         j                  j                  | j                        j	                  i d d d d d d d d d t
        j                  j                  t        j                                y )Nr!   )ad_metadataad_overviewerror_message
error_type
pixel_hashcropped_hash	text_hashcreative_idtask_idch_pushed_atr   r    )
r   r#   r$   r!   updater   r%   r&   r   now)r/   s    r1   reset_for_platform_refetchrA      sc    !!SVV!,33 ((..<<> 4     c                    t         j                  j                  d      j                  |       }|j                  t
        j                  j                  k7  ryt        |      }|syt        |g      }|rPt         j                  j                  |j                        j                  t        j                                |dfS y)Ncreativer4   )r   not_success)r   no_buildable_row)r>   pushed)r   push_returned_0)r   r#   select_relatedgetr   r   SUCCESSr&   r	   r
   r$   r!   r?   r   r@   )row_idr/   ch_rowinserteds       r1   push_row_to_clickhouserO      s    

 
 
/
/

;
?
?6
?
JC
,..444"3'F$.x8H%%%077X\\^7T!!rB   zmode=DRY_RUNz4direct_fetch=1 direct_ch_push=1 labels=0 overviews=0r   r4   r   )r!   accountr   z ()z  run=z
 platform=z rows=z	  ad_ids=z, c              #   F   K   | ]  }t        |j                          y w)N)strr"   ).0r/   s     r1   	<genexpr>rV      s     D)3CII)s   !   z  refetch ad_id=F)argsthrow   z    fetch_failed=z    fetch_status=z creative_id=z error_type=z push_status=z ch_pushed_at=z    exception=z: ztotal_targeted=ztotal_success=ztotal_pushed=ztotal_failed=zdry_run_done=1)@__doc__os	traceback	django.dbr   django.utilsr   creative_module.modelsr   r   &creative_module.tasks.ad_creative_taskr   creative_module.typesr   .data_pipeline_module.services.ad_creative_syncr	   r
   organization_auth.modelsr   environrJ   r   r   intr   TARGETSr2   rA   rO   total_targetedtotal_successtotal_pushedtotal_failedprintr+   r#   rQ   runrowslenr!   platformjoinr/   r"   applyrT   triggered_by_idresultfailed	refreshedr   rK   r&   rN   push_statusr<   r8   r>   	Exceptionexctype__name__	print_exc rB   r1   <module>r~      sY  , 
  + ! A N . - 	

w3&**..!238:

GX8Y#bjj!234_c
 F<8*	 3<8*	 V<8*	 E<8*	 K<8*	 N<8*	 O<8*	 L<8*	 <8(	c7t%2"    gI./ 0 < =F6,/?Boo!!VL%9!:G

 
 
$
$x(8'
$
JC6"Dc$iN	G	VF^Bwzzl!
,-	F366(*W%5%5$6fSYK
HI	IdiiD$s)DDE
FG ,-$	"&s+!#6066		N

O++,$$	 F }}!)&--9:&..22cff2=I$$(<(<(B(BB"$:366$B!HkH$L&..22cff2=I ))))((**	3 # r  '( )	N=/
*+	M,
()	M,
()	
  	"ALN49#5#5"6b>?I!!	"s    7BNCNO4OO