
    _h                     R    d dl mZ dZdZdefdZdefdZd Zdd	d
ededz  fdZ	y)    )timezone)pricetitledescriptionimagessquare_footageprice_per_m2gffffff?returnc                     | yt        | t              rt        | j                               S t        | t        t
        t        t        f      rt        |       dkD  S y)NFr   T)	
isinstancestrboolstriplistdictsettuplelen)vals    ;/var/www/extractly/link_agregator/check_active/propagate.py_value_presentr   	   sI    
{#sCIIK  #dC/03x!|    c                      t         D cg c]  }t         |      s| }}|syt         fd|D              }|t        |      z  t        k\  S c c}w )NFc              3   P   K   | ]  }t        t        |d             sd  y w)N   )r   getattr).0finstances     r   	<genexpr>z!_calc_has_data.<locals>.<genexpr>   s"     QFqnWXq$5O&PFs   &&)FIELDS_THAT_MEAN_HAVE_DATAhasattrsumr   THRESHOLD_HAS_DATA)r   r   fieldsfilleds   `   r   _calc_has_datar'      sS    3L3Awx7Ka3FLQFQQFS[ %777	 Ms
   AAc                     | j                   j                         D ch c]  }t        |dd      s|j                   }}|D cg c]	  }||v s| }}| j	                  |r|       y d        y c c}w c c}w )NconcreteF)update_fields)_meta
get_fieldsr   namesave)r   r*   r   r)   ufs        r   
_safe_saver0      so     ( 9 9 ;] ;1wq*V[?\ ;H]"	4]a8m!]B	4MMbM3dM3 ^	4s   A1A1	A6A6N)reason	is_activer1   c                   t        j                         }|j                         }|rd| _        d| _        n4d| _        || _        | j
                  xs i | _        |r|| j
                  d<   t        | g d       g }t        | dd      r|j                  | j                         t        | dd      r|j                  | j                         |D ]  }t        |d      r||_        |rt        |d	d      rd|_        |rd|_        d|_        nd|_        ||_        t        |d
      rt        |      |_        t        |d      rd|_        t        |d	      rd|_        t        |g d        y)a  
    Status-only propagate:
    - NIE tykamy check_active/check_active_date na NetworkMonitoredPage (bo ich tu nie ma).
    - Na stronie ustawiamy tylko is_active/inactive_date (+reason w meta).
    - Na Ads/AdsManual ustawiamy check_active_date, resetujemy flagi, liczymy has_data.
    TNFinactive_reason)r2   inactive_datemetanetwork_ad_idnetwork_ad_manual_idcheck_active_datecheck_active_from_imagehas_datacheck_active)r2   r5   r9   r<   r:   processed_without_imager;   )r   nowdater2   r5   r6   r0   r   append
network_adnetwork_ad_manualr"   r9   r=   r'   r;   r<   r:   )page_objr2   r1   now_dttodayrelatedads          r   propagate_from_pagerH      sV    \\^FKKME !!%"!' +/5HMM+,x?@ Gx$/x**+x/6x1122*+#(B  %>F)-B& BL#B BL%B 2z"(,BK 2~&#BO201).B&2 
 	7 r   )
django.utilsr   r!   r$   r   r   r'   r0   r   rH    r   r   <module>rK      sS    !   4 8 84 LP = =cDj =r   