
    h
                        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e      Z
 G d	 d
ej                        Zedd       Zy)    )annotations)	lru_cache)forms)AutocompleteSelect   )versionablesc                      e Zd ZdddZy)VersionAutocompleteSelectNc           	     `    d g df}|d   j                  | j                  |dddd             |gS )Nr   r    F)appendcreate_option)selfnamevalueattrdefaults        J/home/dcms/DCMS/lib/python3.12/site-packages/djangocms_versioning/forms.py	optgroupsz#VersionAutocompleteSelect.optgroups   s:    Q-
$,,T2r5!DEy    )N)r   strr   r   r   zdict | None)__name__
__module____qualname__r    r   r   r
   r
      s    r   r
   c                  4     e Zd ZdZddd fd
Z fdZ xZS )VersionContentChoiceFieldz6Form field used to display a list of grouper instancesN)model
admin_sitec          
     n   |j                  d      | _        |j                  d      | _        t        |j                  j                  |      dg       rS|j                  dt        |j                  j                  t        j                  |      j                        |             t        | 8  |i | y )Nlanguageoption_label_overridesearch_fieldswidget)r   )popr!   predefined_label_methodgetattr	_registryget
setdefaultr
   _meta	get_fieldr   for_contentgrouper_field_namesuper__init__)r   r   r   argskwargs	__class__s        r   r0   z"VersionContentChoiceField.__init__   s    

:.'-zz2I'J$:''++E2ORHh(A%%l&>&>u&E&X&XY%)  	$)&)r   c                r    | j                   r| j                  || j                        S t        |   |      S )z:Overridden to allow customizing the labels of the groupers)r&   r!   r/   label_from_instance)r   objr3   s     r   r5   z-VersionContentChoiceField.label_from_instance    s3    ''//T]]CC7.s33r   )r   r   r   __doc__r0   r5   __classcell__)r3   s   @r   r   r      s    @$(T 	*4 4r   r   Nc                |   |ddl m} |}t        j                  |       }t	        | j
                  dz   t        j                  fd| |j                  t        |j                  j                  j                  j                         |j                  j                  j                         |j                   || |      i      S )a  Returns a form class used for selecting a grouper to see versions of.
    Form has a single field - grouper - which is a model choice field
    with available grouper objects for specified content model.

    :param content_model: Content model class
    :param language: Language
    r   )siteGrouperForm_content_model)labelquerysetr"   r   r   r!   )django.contrib.adminr:   r   r-   typer   r   Formr.   r   grouper_modelr+   verbose_name
capitalizeobjectsallgrouper_selector_option_label)content_modelr!   r   r:   versionables        r   grouper_form_factoryrJ   (   s     -
**=9K.	m**,E!//55BBMMO$22::>>@&1&O&O%#!-
	
 r   )NN)
__future__r   	functoolsr   djangor   django.contrib.admin.widgetsr   r   r   r
   ModelChoiceFieldr   rJ   r   r   r   <module>rP      sG    "   ;  2 4 6 6 4,  r   