o
    hE                     @   sV   d dl mZ d dlmZ d dlmZmZ d dlmZ dddZ	ddd	Z
dd
dZdS )    )GenericRelation)models)ParentalKeyParentalManyToManyField)ClusterableModelNc                 C   s   |pg }i }| j  D ]Z}|j|v rq|jrqt|trq|jr<t|tr;t| |j}t	|dr;|
 }|r;|||j< qt|tjrG|jjrGqt|tjr\d||j< t| |j||j< qt| |j||j< q|S )z
    Get dictionaries representing the model's field data.

    This excludes many to many fields (which are handled by _copy_m2m_relations)'
    allN)_meta
get_fieldsnameauto_created
isinstancer   many_to_manyr   getattrhasattrr   r   OneToOneFieldremote_fieldparent_link
ForeignKeyattname)sourceexclude_fields	data_dictfieldparental_fieldvalues r   V/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/models/copying.py_extract_field_data   s0   





r   c              	      s   |pi }|pg } j  D ]K}|jrX|j|vrX|jsXt|tsXz fdd|jj  D }|r1W qW n	 ty;   Y nw |j|v rG||j }nt	 |j
 }t	||j| qdS )z5
    Copies non-ParentalManyToMany m2m relations
    c                    s(   g | ]}t |trt j|jr|qS r   )r   r   
issubclass	__class__related_model).0r   r   r   r   
<listcomp>L   s    z'_copy_m2m_relations.<locals>.<listcomp>N)r   r	   r   r
   r   r   r   throughAttributeErrorr   r   set)r   targetr   update_attrsr   through_model_parental_linksvaluer   r"   r   _copy_m2m_relations;   s4   



r+   c                 C   st   t | |d}| jdi |}|r$| D ]\}}||vrqt||| qt| tr4| j||d}||fS i }||fS )N)r   )excluder   )r   r   itemssetattrr   r   copy_all_child_relations)r   r   r(   r   r'   r   r*   child_object_mapr   r   r   _copy`   s   
r1   )N)NN)"django.contrib.contenttypes.fieldsr   	django.dbr   modelcluster.fieldsr   r   modelcluster.modelsr   r   r+   r1   r   r   r   r   <module>   s    

4%