ó
H`¾Tc           @   s\   d  Z  d d l m Z m Z m Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 S(
   sg   private module containing functions used for copying data
between instances based on join conditions.

i   (   t   exct   utilt
   attributesc      	   C   s1  |  j  } | j  } x| D]\ }	 }
 y6 | j |	 } |  j | j j j |  | t j ƒ } Wn* t j	 k
 r‡ t
 t | |	 | |
 ƒ n Xy4 | j |
 } | j | j j j | | | d  ƒ Wn* t j	 k
 rè t
 t | |	 | |
 ƒ n X| r |	 j r |
 j r |
 j |	 ƒ r t | j d | |
 f <q q Wd  S(   Nt   pk_cascaded(   t   dictt   _columntopropertyt   managert   keyt   implt   getR   t   PASSIVE_OFFR    t   UnmappedColumnErrort   _raise_col_to_propt   Falset   sett   Nonet   Truet   primary_keyt
   references(   t   sourcet   source_mappert   destt   dest_mappert   synchronize_pairst	   uowcommitt   flag_cascaded_pkst   source_dictt	   dest_dictt   lt   rt   propt   value(    (    sY   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/orm/sync.pyt   populate   s$    		'	c         C   s®   x§ | D]Ÿ \ } } | j  r\ | j |  |  j | ƒ d  k	 r\ t d | t j |  ƒ f ƒ ‚ n  y | j |  |  j | d  ƒ Wq t j	 k
 r¥ t
 t d  | | | ƒ q Xq Wd  S(   NsK   Dependency rule tried to blank-out primary key column '%s' on instance '%s'(   R   t   _get_state_attr_by_columnR   R   t   AssertionErrort   orm_utilt	   state_strt   _set_state_attr_by_columnR    R   R   R   (   R   R   R   R   R   (    (    sY   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/orm/sync.pyt   clear0   s    	c   	      C   sš   x“ | D]‹ \ } } y4 | j  |  j ƒ  | ƒ } | j |  |  j | ƒ } Wn* t j k
 rs t t | | d  | ƒ n X| | | j	 <| | | | j	 <q Wd  S(   N(
   t   _get_committed_attr_by_columnt   objR!   R   R    R   R   R   R   R   (	   R   R   R   t
   old_prefixR   R   R   t   oldvalueR   (    (    sY   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/orm/sync.pyt   updateA   s    c         C   sq   xj | D]b \ } } y | j  |  |  j | ƒ } Wn* t j k
 r[ t t | | d  | ƒ n X| | | j <q Wd  S(   N(   R!   R   R    R   R   R   R   R   (   R   R   t   dict_R   R   R   R   (    (    sY   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/orm/sync.pyt   populate_dictN   s    c         C   s‹   x„ | D]x \ } } y | j  | } Wn* t j k
 rP t t | | d | ƒ n X|  j | | j t j	 ƒ } t
 | j ƒ r t Sq Wt Sd S(   sp   return true if the source object has changes from an old to a
    new value on the given synchronize pairs

    N(   R   R    R   R   R   R   t   get_attribute_historyR   R   t   PASSIVE_NO_INITIALIZEt   boolt   deletedR   (   R   R   R   R   R   R   R   t   history(    (    sY   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/orm/sync.pyt   source_modifiedY   s    c         C   sB   |  r" t  j d | | f ƒ ‚ n t  j d | | | f ƒ ‚ d  S(   NsÑ   Can't execute sync rule for destination column '%s'; mapper '%s' does not map this column.  Try using an explicit `foreign_keys` collection which does not include this column (or use a viewonly=True relation).sØ   Can't execute sync rule for source column '%s'; mapper '%s' does not map this column.  Try using an explicit `foreign_keys` collection which does not include destination column '%s' (or use a viewonly=True relation).(   R    R   (   t   isdestR   t   source_columnR   t   dest_column(    (    sY   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/orm/sync.pyR   k   s    N(   t   __doc__t    R    R   R#   R   R    R&   R+   R-   R3   R   (    (    (    sY   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/orm/sync.pyt   <module>   s   	 				