a
    Dg                     @   s   d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ ddlmZ dd	lmZ dd
lmZ G dd deZdS )    N)forms)DELETION_FIELD_NAMEORDERING_FIELD_NAME)cached_property)capfirst)compare   )Panel)MultiFieldPanel)*extract_panel_definitions_from_model_classc                       sp   e Zd Zd fdd	Z fddZedd Zed	d
 Zdd Zdd Z	 fddZ
G dd dejZ  ZS )InlinePanelN c           	         sN   t  j|i | || _|| _|p4|p4t|dd| _|| _|| _|| _	d S )N_ )
super__init__relation_namepanelsr   replaceheadinglabelmin_nummax_num)	selfr   r   r   r   r   r   argskwargs	__class__ `/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/panels/inline_panel.pyr      s    zInlinePanel.__init__c                    s,   t   }|j| j| j| j| j| jd |S )N)r   r   r   r   r   )r   clone_kwargsupdater   r   r   r   r   )r   r   r   r   r   r    #   s    
zInlinePanel.clone_kwargsc                 C   s(   | j d ur| j S t| jj| jjjgdS )N)exclude)r   r   db_fieldrelated_modelfieldnamer   r   r   r   panel_definitions.   s
    
zInlinePanel.panel_definitionsc                 C   s"   | j }t|| jd}|| jjS )N)r   )r(   r
   r   Zbind_to_modelr#   r$   )r   r   child_edit_handlerr   r   r   r)   8   s    zInlinePanel.child_edit_handlerc                 C   sN   | j  }d| j|dg |di | j| jd u| j| jd u|ddiiS )Nformsetsfieldswidgets)r+   r,   r   Zvalidate_minr   Zvalidate_maxr*   )r)   get_form_optionsr   getr   r   )r   Zchild_form_optsr   r   r   r-   >   s    


zInlinePanel.get_form_optionsc                 C   s2   t | j| j}|j| _| js.t| jjjj	| _d S )N)
getattrmodelr   relr#   r   r   r$   Z_metaZverbose_name)r   managerr   r   r   on_model_boundN   s    zInlinePanel.on_model_boundc                    s   t   dg S )Nzw-panel--nested)r   classesr'   r   r   r   r4   T   s    zInlinePanel.classesc                       s6   e Zd ZdZ fddZdd Zd	 fdd	Z  ZS )
zInlinePanel.BoundPanelz%wagtailadmin/panels/inline_panel.htmlc              
      s.  t  jf i | | jj| _| jd u r*d S | jj| jj | _| jj| _g | _	t
| jjD ]Z\}}t |jt _| jjrt |jt _| j	| jj|j| j|d| j|f d qX| jjr| j r| j	jdd d | jj}t |jt _| jjr
t |jt _| jj|j| j|d| j d| _d S )N%s-%dinstancerequestformprefixc                 S   s   | j jt pdS )Nr   )r9   Zcleaned_datar   )childr   r   r   <lambda>{       z1InlinePanel.BoundPanel.__init__.<locals>.<lambda>)keyz%s-__prefix__)r   r   panelr   r9   r*   r   formsetr)   children	enumerater   ZHiddenInputr+   r   Zwidget	can_orderr   appendget_bound_panelr7   r8   r:   Zis_validsort
empty_formZempty_child)r   r   indexZsubformrG   r   r   r   r   Z   sB    



zInlinePanel.BoundPanel.__init__c              
   C   s`   g }t | jjjD ]0\}}||jd | jd d| j|f d  qt	j
tj| jj|| jdgS )Nr5   r6   )r   )rB   r?   r)   rA   extendrE   r8   r:   get_comparison	functoolspartialr   ZChildRelationComparisonr#   r   )r   Zfield_comparisonsrH   r?   r   r   r   rJ      s"    
z%InlinePanel.BoundPanel.get_comparisonNc                    s   t  |}| jj|d< |S )NrC   )r   get_context_datar@   rC   )r   Zparent_contextcontextr   r   r   rM      s    z'InlinePanel.BoundPanel.get_context_data)N)__name__
__module____qualname__Ztemplate_namer   rJ   rM   __classcell__r   r   r   r   
BoundPanelW   s   0rS   )Nr   r   NN)rO   rP   rQ   r   r    r   r(   r)   r-   r3   r4   r	   rS   rR   r   r   r   r   r      s        
	
r   )rK   Zdjangor   Zdjango.forms.formsetsr   r   Zdjango.utils.functionalr   Zdjango.utils.textr   Zwagtail.adminr   baser	   groupr
   Zmodel_utilsr   r   r   r   r   r   <module>   s   