î

_ÝV®
  ã               @   sj  d  d l  m Z d  d l m Z d  d l m Z e d d g ƒ Z Gd d „  d e ƒ Z e d d d	 d
 g d d ƒ Z e d d g d d ƒ Z	 e d d d d d g d d ƒ Z
 e d d d d d d g d d ƒ Z e d d d g d d ƒ Z e d d d g d d ƒ Z e d d d d d d d g d d ƒ Z e d d d d d g ƒ Z e d d d d d g ƒ Z d S)é    )Úapps)ÚSignal)ÚsixZproviding_argsÚclassc                   sU   e  Z d  Z d Z ‡  f d d †  Z ‡  f d d †  Z d d d ‡  f d d	 † Z ‡  S)
ÚModelSignalzz
    Signal subclass that allows the sender to be lazily specified as a string
    of the `app_label.ModelName` form.
    c                s6   t  t |  ƒ j | | Ž  i  |  _ t j |  j ƒ d  S)N)Úsuperr   Ú__init__Úunresolved_referencesÚclass_preparedÚconnectÚ_resolve_references)ÚselfÚargsÚkwargs)Ú	__class__© ú:/tmp/pip-build-ghmbqnp_/Django/django/db/models/signals.pyr      s    	zModelSignal.__init__c       	         sŒ   | j  } | j | j f } y |  j j | ƒ } Wn t k
 rE YnC Xx? | D]7 \ } } } t t |  ƒ j | d | d | d | ƒqM Wd  S)NÚsenderÚweakÚdispatch_uid)	Z_metaÚ	app_labelZobject_namer	   ÚpopÚKeyErrorr   r   r   )	r   r   r   ÚoptsÚ	referenceZ	receiversÚreceiverr   r   )r   r   r   r      s    	zModelSignal._resolve_referencesNTc       	         sá   t  | t j ƒ rµ y | j d ƒ \ } } Wn t k
 rK t d ƒ ‚ Yn Xy t j | | ƒ } Wqµ t k
 r± | | f } |  j j	 | g  ƒ } | j
 | | | f ƒ d  SYqµ Xn  t t |  ƒ j | d | d | d | ƒd  S)NÚ.zZSpecified sender must either be a model or a model name of the 'app_label.ModelName' form.r   r   r   )Ú
isinstancer   Ústring_typesÚsplitÚ
ValueErrorr   Zget_registered_modelÚLookupErrorr	   Ú
setdefaultÚappendr   r   r   )	r   r   r   r   r   r   Z
model_nameÚrefÚrefs)r   r   r   r   !   s    zModelSignal.connect)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   )r   r   r   	   s   r   Úinstancer   r   Zuse_cachingTÚrawZusingZupdate_fieldsÚcreatedÚactionÚreverseÚmodelZpk_setZ
app_configÚ	verbosityÚinteractiveN)Zdjango.appsr   Zdjango.dispatchr   Zdjango.utilsr   r
   r   Zpre_initZ	post_initZpre_saveZ	post_saveZ
pre_deleteZpost_deleteZm2m_changedZpre_migrateZpost_migrater   r   r   r   Ú<module>   s    ,	$	