o
    h$                     @   s   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 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 )    )
ForeignKey)path)cached_property)gettext)register_form_field_override)chooser)BaseChooser)ChooserBlock)register   )ViewSetc                       s(  e Zd ZdZdZdZedZdZedZ	edZ
ejZdgZg ZejZejZejZejZejZeZdZeZdZ dZ!dZ"dZ#ed	Z$ed
Z%dZ&dZ'dZ( fddZ) fddZ*e+dd Z,e+dd Z-e+dd Z.e+dd Z/e+dd Z0e1dd Z2e1dd Z3d#ddZ4 fdd Z5d!d" Z6  Z7S )$ChooserViewSetzX
    A viewset that creates a chooser modal interface for choosing model instances.
    NsnippetChoosezChoose anotherEditmultipleTSearchCreatec                    s,   t  j|i | | jd u r| j| _d S d S N)super__init__
page_titlechoose_one_text)selfargskwargs	__class__ ^/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/viewsets/chooser.pyr   Y   s   
zChooserViewSet.__init__c                    s`   t  jdi | j| j| j| j| j| j| j| j	| j
| d| d| d| d| jd|S )Nchosenchosen_multiplechoose_resultscreate)modelpermission_policypreserve_url_parametersurl_filter_parameterscreate_action_labelcreate_action_clicked_labelcreation_form_classform_fieldsexclude_form_fieldschosen_url_namechosen_multiple_url_nameresults_url_namecreate_url_nameper_pager   )r   get_common_view_kwargsr$   r%   r&   r'   r(   r)   r*   r+   r,   get_url_namer1   )r   r   r   r   r   r2   ^   s&   
z%ChooserViewSet.get_common_view_kwargsc                 C   s,   |  | jdg}| j|| j| j| j| jdS )Nget_object_list)iconr   search_tab_labelcreation_tab_label)inject_view_methodschoose_view_classconstruct_viewr5   r   r6   r7   r   
view_classr   r   r   choose_views   s   zChooserViewSet.choose_viewc                 C   s   |  | jdg}| |S )Nr4   )r8   choose_results_view_classr:   r;   r   r   r   choose_results_view   s   
z"ChooserViewSet.choose_results_viewc                 C      |  | jS r   )r:   chosen_view_classr   r   r   r   chosen_view      zChooserViewSet.chosen_viewc                 C   r@   r   )r:   chosen_multiple_view_classrB   r   r   r   chosen_multiple_view   rD   z#ChooserViewSet.chosen_multiple_viewc                 C   r@   r   )r:   create_view_classrB   r   r   r   create_view   rD   zChooserViewSet.create_viewc                 C   s$   t | jtr| jdd S | jjS )N.)
isinstancer$   strsplit__name__rB   r   r   r   
model_name   s   zChooserViewSet.model_namec              
   C   sl   | j du rd}nt| j tr| j dd }n| j j}d| }t|| jf| j | j| j| j	| 
d| jdS )zA
        Returns the form widget class for this chooser.
        NChooserWidgetrI   rJ   z%sChooserWidgetchoose)r$   r   choose_another_textlink_to_chosen_textchooser_modal_url_namer5   )r$   rK   rL   rM   rN   typebase_widget_classr   rR   edit_item_textr3   r5   )r   widget_class_namerO   r   r   r   widget_class   s"   
zChooserViewSet.widget_classc                 C   sN   t d| jjfd| ji}t |pd| j | jf| j|  |d}|r%||_|S )af  
        Returns a StreamField ChooserBlock class using this chooser.

        :param name: Name to give to the class; defaults to the model name with "ChooserBlock" appended
        :param module_path: The dotted path of the module where the class can be imported from; used when
            deconstructing the block definition for migration files.
        Metar5   z%sChooserBlock)target_modelwidgetrZ   )rU   base_block_class_meta_classr5   rO   r$   rY   
__module__)r   namemodule_pathmetaclsr   r   r   get_block_class   s"   	zChooserViewSet.get_block_classc              
      sT   t   td| jddtd| jddtd| jddtd| jd	dtd
| jddg S )N rQ   )r`   zresults/r"   zchosen/<str:pk>/r    zchosen-multiple/r!   zcreate/r#   )r   get_urlpatternsr   r=   r?   rC   rF   rH   rB   r   r   r   rf      s   zChooserViewSet.get_urlpatternsc                 C   sL   | j r | jr"tt| j d| jid | jr$|  }t|| j d S d S d S d S )Nr\   )tooverride)r$   register_widgetr   r   rY   widget_telepath_adapter_classregister_telepath_adapter)r   adapterr   r   r   on_register   s   zChooserViewSet.on_register)NN)8rN   r_   __qualname____doc__r$   r5   _r   r   rR   rW   r   	UNDEFINEDr1   r&   r'   chooser_views
ChooseViewr9   ChooseResultsViewr>   
ChosenViewrA   ChosenMultipleViewrE   
CreateViewrG   r   rV   rj   r	   r]   ri   r*   r+   r,   r6   r(   r)   r7   r%   r   r2   propertyr=   r?   rC   rF   rH   r   rO   rY   rd   rf   rm   __classcell__r   r   r   r   r      sj    







	r   N)django.db.modelsr   django.urlsr   django.utils.functionalr   django.utils.translationr   rp   wagtail.admin.forms.modelsr   wagtail.admin.views.genericr   rr   wagtail.admin.widgets.chooserr   wagtail.blocksr	   wagtail.telepathr
   rk   baser   r   r   r   r   r   <module>   s    