
    *j	                         d Z ddlZej                  j                  dej                  j                        Zd Zd Zd Zd Z	y)uN   Версии метаданных пользовательских полей.    Nc                    t        | d|       } | yt        | t              r2| j                  dd      } 	 t        j                  j                  |       } t        | t        j                        rRt        | t        j                        s8t        j                  j                  | t        j                  j                        } t        | t        j                        sy| j                  *| j                  t        j                  j                        } | j                  t        j                  j                        S # t        $ r Y yw xY w)uo   Вернуть UTC datetime для сравнения версий пользовательских полей.valueNZz+00:00)tzinfo)getattr
isinstancestrreplacedatetimefromisoformat
ValueErrordatecombinetimeminr   timezoneutc
astimezone)r   s    ./cmf/snapshot_version.pynormalize_cf_versionr      s    E7E*E}%c8,	%%33E:E %'
5(BSBS0T!!))%1B1BCeX../||X%6%6%:%:;H--1122  		s   D9 9	EEc                 >    t        |       }|y|j                         S )u\   Форматировать CmfCustField.cmf_modified_at для Python-класса поля.N)r   	isoformat)r   versions     r   format_cf_field_versionr      s#    "5)G    c            	         ddl m}  t        }t        |       j	                         D ]d  }t        |dd      }t        |t              s!|j	                         D ]1  }t        |dd      st        t        |dd            }|*||kD  s0|}3 f |S )ut   Прочитать максимальный cf_field_version из уже загруженной меты полей.r   modelsfieldsNcustomFcf_field_version)	cmf.includer   CF_VERSION_EPOCHvarsvaluesr   r   dictr   )r   r   	model_clsr   	field_clsfield_versions         r   read_cf_versionr*   $   s    "G&\((* 	(	Hd3&$' 	(I9h60DVX\1]^M(]W-D'	(		( Nr   c                      ddl m}  | j                  j                  dgdgdd      }|t        S t        t        |dd            xs t        S )ur   Прочитать текущий max(cmf_modified_at) пользовательских полей через ORM.r   r   cmf_modified_atz-cmf_modified_atT)r   order_byinclude_deletedTECHCOM_nocacheN)r"   r   CmfCustFieldgetr#   r   r   )r   
cust_fields     r   read_db_cf_versionr3   6   s[    "$$((!"$%	 ) J 
4Et LMaQaar   )
__doc__r   fromtimestampr   r   r#   r   r   r*   r3    r   r   <module>r7      sG    T  $$221h6G6G6K6KL 3($br   