
    hX
                     v    d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 ddl
mZ  G d dee      Z G d	 d
e      Zy)    )GenericInlineModelAdmin)ContentType)cached_property)#BaseGenericPolymorphicInlineFormSetGenericPolymorphicFormSetChildpolymorphic_child_forms_factory   )PolymorphicInlineModelAdminc                   F    e Zd ZdZeZddZ G d dej                        Zy)"GenericPolymorphicInlineModelAdminzL
    Base class for variation of inlines based on generic foreign keys.
    Nc                 |    t        j                  | |fd|i|}t        | j                  ||            |_        |S )z=
        Construct the generic inline formset class.
        obj)r   )formset_children)r   get_formsetr   get_formset_childrenchild_forms)selfrequestr   kwargsFormSets        I/home/dcms/DCMS/lib/python3.12/site-packages/polymorphic/admin/generic.pyr   z.GenericPolymorphicInlineModelAdmin.get_formset   sH     *55dGWWPVW=!66wC6H
     c                   @     e Zd ZdZeZdZdZed        Z	d fd	Z
 xZS )(GenericPolymorphicInlineModelAdmin.Childz0
        Variation for generic inlines.
        content_type	object_idc                 X    t         j                  j                  | j                  d      S )z
            Expose the ContentType that the child relates to.
            This can be used for the ``polymorphic_ctype`` field.
            F)for_concrete_model)r   objectsget_for_modelmodel)r   s    r   r   z5GenericPolymorphicInlineModelAdmin.Child.content_type.   s%     &&44TZZTY4ZZr   c                     | j                   | j                  d}|j                  |       t        t        j
                  |   |fd|i|S )N)ct_fieldfk_fieldr   )r#   ct_fk_fieldupdatesuperr   Childget_formset_child)r   r   r   r   defaults	__class__s        r   r)   z:GenericPolymorphicInlineModelAdmin.Child.get_formset_child6   sS     %)MMt?O?OPHOOF#;AA4Z $, r   N)__name__
__module____qualname____doc__r   formset_childr#   r%   r   r   r)   __classcell__)r+   s   @r   r(   r   $   s7    	
 7!!		[ 
	[	 	r   r(   r,   )	r-   r.   r/   r0   r   formsetr   r
   r(    r   r   r   r      s&    
 2G+11 r   r   c                       e Zd ZdZdZy)GenericStackedPolymorphicInlinez1
    The stacked layout for generic inlines.
    z*admin/polymorphic/edit_inline/stacked.htmlN)r-   r.   r/   r0   templater4   r   r   r6   r6   @   s    
 <Hr   r6   N)!django.contrib.contenttypes.adminr   "django.contrib.contenttypes.modelsr   django.utils.functionalr   polymorphic.formsetsr   r   r   inlinesr
   r   r6   r4   r   r   <module>r=      s;    E : 3  1/)DF] /d<&H <r   