
    f%j                         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 dl	m
Z
mZmZmZmZmZ ddd	d
d
ddZh dZd Zd+dZd,d-d Zd.d%Zd&d'd/d*ZdS )0    )annotations)datetime)Any)HTTPException)Session)ActivityEventCreativeChangeMetadataVersion	PostDraft
VideoAssetnow_utctitledescriptioncaptionhashtagsschedule)r   r   r   hashtags_json	tags_jsonscheduled_at>   r   statusr   r   category_idr   r   r   metadata_jsonprivacy_statusplatform_account_idc                "   | dv rd S t          | t                    r| S t          | t                    rN|                     dd          }	 t          j        |          S # t
          $ r}t          dd          |d }~ww xY wt          dd          )NN Zz+00:00i  z!scheduled_at must be ISO datetime)
isinstancer   strreplacefromisoformat
ValueErrorr   )value
normalizedexcs      V/home/agent/projects/AutoShorts_Dashboard/backend/app/services/post_draft_mutations.pyparse_optional_datetimer(      s    
t%"" % S]]311
	S)*555 	S 	S 	S%HIIsR	S
@
A
AAs   
A 
A>(A99A>r$   r   return
str | Nonec                    | dv rd S t          | t                    rd                    d | D                       S t          | t                    r|                                 S t          |           S )Nr    c              3  4   K   | ]}t          |          V  d S N)r    ).0items     r'   	<genexpr>z_text.<locals>.<genexpr>)   s(      44dD		444444    )r   listjoinr   	isoformatr    )r$   s    r'   _textr6   %   ss    
t% 5xx44e444444%"" !   u::r2   Ncreatorsessionr   entity_typer    	entity_id
event_typelabelpayloaddict | None
created_byc           
     Z    |                      t          |||||pi |                     d S )N)r9   r:   r;   r<   payload_jsonr?   )addr   )r8   r9   r:   r;   r<   r=   r?   s          r'   add_activityrC   /   sI    KK]       r2   draftr   diffdictc                2   |                     d          p|                     d          }|                     d          }|                     d          p|                     d          pd}|                                D ]\  }}t                               |          }	|	s"|                     t	          |j        |j        d |	t          |                     d                    t          |                     d                    |p|	                                 d	||d

  
                   |rct          d |D                       sL|                     t	          |j        |j        |                     d          pd|||d                     d S d S d S )Nchange_note
changeNote
hypothesis	edited_byr?   r7   beforeafterz edited on review pagemetadata_version)
video_asset_idpost_draft_idtopic_idchange_typebefore_text
after_textrH   rJ   r?   sourcec              3  J   K   | ]}t                               |          V  d S r.   )FIELD_TO_CHANGE_TYPEget)r/   fields     r'   r1   z'add_creative_changes.<locals>.<genexpr>N   s1      QQ5377>>QQQQQQr2   rR   othermanual)rO   rP   rR   rH   rJ   r?   rU   )
rX   itemsrW   rB   r	   rO   idr6   r   any)
r8   rD   rE   r=   rH   rJ   r?   rY   changerR   s
             r'   add_creative_changesr`   :   s   ++m,,IL0I0IK\**J[))SW[[-F-FS)J  v*..u55 	N /(#fjj2233VZZ0011#U+*;*;*=*='U'U'U!!%
 
 
 	 	 	 	  	3QQDQQQQQ 	N /(M22=g#!!
 
 
 	 	 	 	 		 	 	 	r2   T)invalidate_uploadsra   boolc                 	
 |                     d          
|                                D ]4\  }}|t          v r&t          |||dk    rt	          |          n|           5t                      |_        |                     d          		
fdt          D             }|                     |           |r2|                     t          |j	        |
                    dd          |	                     t          | |||           t          | d|j	        d	d
dt          |                                          i|
                    dd                     | 
                    t          |j                  }|rUt          | d|j	        d	d
|j	        t          |                                          d|
                    dd                     |rddlm}  || |j	        d           |S )Njson)moder   c                    i | ]Z}                     |                               |          k    .|                     |                               |          d [S ))rL   rM   )rX   )r/   keyrM   rL   s     r'   
<dictcomp>z%apply_draft_patch.<locals>.<dictcomp>a   s      L  L  L#ioisistwixix  }B  }F  }F  GJ  }K  }K  jK  jKCFJJsOOeiinnEE  jK  jK  jKr2   rK   r7   )rP   rK   	diff_jsonsnapshot_json
post_draftmetadata_savedzMetadata savedchanged_fieldsvideo)rP   rm   r   )"invalidate_open_requests_for_draftzmetadata changed after approval)reason)
model_dumpr\   ALLOWED_DRAFT_FIELDSsetattrr(   r   
updated_atrB   r
   r]   rX   r`   rC   sortedkeysr   rO   (app.services.youtube_upload_orchestratorro   )r8   rD   r=   ra   rg   r$   rE   rn   ro   rM   rL   s            @@r'   apply_draft_patchrx   Z   s   6**Fmmoo d d
U&&&E3#BWBW 7 > > >]bcccyyE&))E L  L  L  L  LQe  L  L  LDKK 	lO%(gkkR]_hFiFiuy  JO  P  P  P  	Q  	Q  	QWeT7;;;WlEH6FHX[kmstxt}t}tt  nA  nA  [B  DK  DO  DO  P[  ]f  Dg  Dg  	h  	h  	hJ(<== 	B'585EGWkpks  HN  OS  OX  OX  OZ  OZ  H[  H[  Z\  Z\  ^e  ^i  ^i  ju  w@  ^A  ^A  B  B  B 	lcccccc..wIjkkkkKr2   )r$   r   r)   r*   )Nr7   )r8   r   r9   r    r:   r    r;   r    r<   r    r=   r>   r?   r    )r8   r   rD   r   rE   rF   r=   rF   )
r8   r   rD   r   r=   rF   ra   rb   r)   rF   )
__future__r   r   typingr   fastapir   sqlmodelr   app.models.corer   r	   r
   r   r   r   rW   rr   r(   r6   rC   r`   rx    r2   r'   <module>r      sH   " " " " " "             ! ! ! ! ! !       j j j j j j j j j j j j j j j j     |  |  | B B B          @ hl        r2   