
    Ziu                         d dl 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 d d	lmZ d d
lmZ dZdZdZg dZdZdZd Zd Zd Z e        y)    N)close_old_connections)timezone)RateLimitExceeded)AccountSyncLogAdCreativeDataCreativeOverviewCreativeOverviewPrompt)fetch_ad_creative_data_task)!generate_creative_overviews_batch)refresh_onboarding_run)UpdateStatus)Accountz$0a61564f-6d44-4f04-946a-30575a6c2590z$e04601a7-1a68-4de1-a8a5-0f85ce92b83cz$86d75712-2c28-4f52-97e0-1e382761b003)	120227548866390710120230898681030710120233128477530710120233514266200710120233902613540710120234316277530710120234635607080710120234952733400710120235098359550710   Tc                 b   t         j                  j                  | j                        j	                  t
        i dddt        j                          t        j                  j                         d}t        dt        dz         D ]  }t                	 t        d| j                   d| dt                t!        j"                  | j                  t%        |j                        ||j&                  d	      }t        d| j                   d
|        |c S  t         j                  j                  | j                        j	                  dt        dz
   d| dt        j:                  j                         t%        |j                        | j                  dt%        |      dS # t(        $ rc}|}t+        t-        t/        |dd      xs d      d      }t        d| j                   d|dd       t1        j2                  |       Y d}~d}~wt4        $ r}|}|t        k  rPd|z  }t        d| j                   dt7        |      j8                   d
| d| d	       t1        j2                  |       n1t        d| j                   dt7        |      j8                   d
|        Y d}~#d}~ww xY w)zJRun the Celery task body in-process and emulate final failure bookkeeping.idNzmanual-sync-)account_sync_log_idad_metadataerror_message
error_typetask_idsync_status   z[creative] z
: attempt /zmanual-sync: retry_after   g      ?z: rate limited, sleeping z.1fs
   z: error z; sleeping z: final error zManual sync error after z
 retries: -)r   ad_overviewr!   FAILED)
account_idad_idstatusr   )r   objectsfilterr   updateLATEST_FAILED_RUN_IDuuiduuid4r   PENDINGvaluerangeMAX_TOTAL_ATTEMPTSr   printr-   r
   runstrplatformr   maxfloatgetattrtimesleep	Exceptiontype__name__r+   )rowaccountuser_idlast_excattemptresultexcwait_secondss           '/tmp/sync_grey_mackenzie_9_creatives.pyrun_fetch_syncrN   )   sl   !!SVV!,330tzz|n- ((.. 4  H.23	ZK		{*WIQ?Q>RST044		GJJ  F K		{"VH56M 46 !!SVV!,3301Ca1G0H
S[R\] ''-- 4  '**oX	 ' ! 	%HuWS-%D%JKSQLK		{*CLQTCUUVWXJJ|$$ 	ZH++!G|CII;htCy7I7I6J"SEQ\]i\jjklm

<(CII;nT#Y=O=O<PPRSVRWXY	Zs'   A>F$$	J.-AHJ.BJ))J.c           	         t        t        j                  j                  | |t        j
                  j                  d      j                  d            }|st        d       g S t        t        j                  j                  | dd            }|st        d       g S g }t               }|D ]  }|j                  }|r|j                  |v r!|j                  |j                         |D cg c]<  }|j                  |j                  |j                  k(  rt!        |j                        > }	}|	s&t        d|j                   d	|j                          |	D ]  }
t"        j                  j%                  ||
d
t        j&                  j                  i      \  }}|rE|j(                  t        j
                  j                  k7  smt        j&                  j                  |_        d |_        |j-                  d
dg        t/                t        d|j                   dt1        |	       d       t3        j4                  t!        |j                        |	      }t        d|j                   d|        |j7                  |        |S c c}w )NF)rF   	ad_id__inr!   creative_id__isnullcreativezB[overview] no successfully materialized creatives with creative_idT)rF   	is_active
is_defaultz-[overview] no active default overview promptsz[overview] z): no compatible default prompts for type=r!   )rR   overview_prompt_iddefaultsr   )update_fieldsz: generating z default overviewsr$   )listr   r/   r0   r   SUCCESSr6   select_relatedr9   r	   setrR   r   addcreative_typerC   r;   r   get_or_creater5   r!   r   saver   lenr   r:   append)rF   synced_ad_idsrowspromptsresultsseen_creative_idsrE   rR   prompt
prompt_ids	prompt_idoverviewcreatedrJ   s                 rM   generate_default_overviewsrl   ]   sX   %%#$,,22 %	 	& 	

 .
$D RS	&&-- 	. 	
G =>	G<<8;;*;;hkk* "
!##+v/C/Cx}}/T 		N! 	 

 K},UV^VcVcUdef#I 0 8 8 F F!#,')=)=)C)CD !G !Hg
 x33|7K7K7Q7QQ'3';';'A'A$)-&]O,LM $ 	HKK=c*o5FFXYZ266s8;;7GTHKK=6(34v= @ N5
s   +AJ
c                  L   t         j                  j                  t              } t        j                  j                  t
        |       }|j                  }t        j                  j                  | t        t        t        j                  j                        j                  d      }t        |      }|D cg c]  }|j                    }}t#        t%        t              t%        |      z
        }t#        t%        |      t%        t              z
        }t'        d| j(                   d| j*                   d       t'        d|        t'        d	t-        |              |rt/        d
|       |rt/        d|       t-        |      t-        t              k7  r't/        dt-        t               dt-        |             t1        j2                         }	g }
|D ]  }|
j5                  t7        || |               t        t        j                  j                  | t              j                  d      j9                  ddddd            }t'        d       |D ]  }t'        |        t:        rt=        | t               t?        |      }t'        d       t'        tA        |j*                        |jB                  |jD                  |jF                  |jH                  |jJ                  |	jM                         |jN                  r|jN                  jM                         nd d       y c c}w )Nr   )r   rF   )rF   rP   r   r!   r-   z	Account: z ()zUser: zRows found: zMissing expected pending rows: zUnexpected rows selected: z	Expected z rows, found )rF   rP   r!   r   creative_idr   z[creative] final rows:z[run] refreshed:)r   overall_statuscurrent_stagead_creative_sync_statusstats_sync_statusai_reports_status
started_atfinished_at)(r   r/   get
ACCOUNT_IDr   r2   triggered_by_idr   r0   TARGET_AD_IDSSTALE_RUN_IDr   r5   r6   order_byrX   r-   sortedr[   r9   ad_account_namer   r`   RuntimeErrorr   nowra   rN   values(GENERATE_DEFAULT_OVERVIEWS_SYNCHRONOUSLYrl   r   r;   rp   rq   rr   rs   rt   	isoformatrv   )rF   
latest_runrG   qsrc   rE   found_ad_idsmissingextraru   re   status_rows
status_rowrefreshed_runs                 rM   mainr      s   oo!!Z!0G''++/CW+UJ((G 	%%# ,$,,22	 	& 	
 
'	  8D)-.#CIIL.S'#l*;;<G3|$s='99:E	Ig--.bA
>?	F7)
	LT
$%<WIFGG7w?@@
4yC&&Ys='9&:-D	{STTJG~c7G<=  %%g%O	'		m_	UK
 

"#!
j " 0"7M:*:6M	
	m&&'+::*88'4'L'L!.!@!@!.!@!@$..0DQD]D]=44>>@cg		
C /s   7L!) r@   r3   	django.dbr   django.utilsr   common.exceptionsr   creative_module.modelsr   r   r   r	   &creative_module.tasks.ad_creative_taskr
   #creative_module.tasks.overview_taskr   +creative_module.services.onboarding_servicer   creative_module.typesr   organization_auth.modelsr   rx   r{   r2   rz   r8   r   rN   rl   r        rM   <module>r      sp      + ! /  O Q N . , 4
5= 
  +/ (1h:z;| r   