a
    Dg$                     @   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.
    NZsnippetZChoosezChoose anotherZEditmultipleTZSearchZCreatec                    s(   t  j|i | | jd u r$| j| _d S N)super__init__
page_titlechoose_one_text)selfargskwargs	__class__ ]/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/viewsets/chooser.pyr   Y   s    
zChooserViewSet.__init__c                    s`   t  jf 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_fieldsZchosen_url_nameZchosen_multiple_url_nameZresults_url_nameZcreate_url_nameper_page)r   get_common_view_kwargsr   r    r!   r"   r#   r$   r%   r&   r'   get_url_namer(   )r   r   r   r   r   r)   ^   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_viewr,   r   r-   r.   r   Z
view_classr   r   r   choose_views   s    zChooserViewSet.choose_viewc                 C   s   |  | jdg}| |S )Nr+   )r/   choose_results_view_classr1   r2   r   r   r   choose_results_view   s    z"ChooserViewSet.choose_results_viewc                 C   s   |  | jS r   )r1   chosen_view_classr   r   r   r   chosen_view   s    zChooserViewSet.chosen_viewc                 C   s   |  | jS r   )r1   chosen_multiple_view_classr7   r   r   r   chosen_multiple_view   s    z#ChooserViewSet.chosen_multiple_viewc                 C   s   |  | jS r   )r1   create_view_classr7   r   r   r   create_view   s    zChooserViewSet.create_viewc                 C   s(   t | jtr| jdd S | jjS d S )N.)
isinstancer   strsplit__name__r7   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.
        NZChooserWidgetr=   r>   z%sChooserWidgetchoose)r   r   choose_another_textZlink_to_chosen_textZchooser_modal_url_namer,   )r   r?   r@   rA   rB   typebase_widget_classr   rE   edit_item_textr*   r,   )r   Zwidget_class_namerC   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}|rJ||_|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.
        Metar,   z%sChooserBlock)Ztarget_modelwidgetrJ   )rF   base_block_classZ_meta_classr,   rC   r   rI   
__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 rD   )rN   zresults/r   zchosen/<str:pk>/r   zchosen-multiple/r   zcreate/r   )r   get_urlpatternsr   r3   r5   r8   r:   r<   r7   r   r   r   rT      s    zChooserViewSet.get_urlpatternsc                 C   s@   | j r<| jr<tt| j d| jid | jr<|  }t|| j d S )NrK   )tooverride)r   register_widgetr   r   rI   widget_telepath_adapter_classregister_telepath_adapter)r   adapterr   r   r   on_register   s    zChooserViewSet.on_register)NN)8rB   rM   __qualname____doc__r   r,   _r   r   rE   rH   r   	UNDEFINEDr(   r!   r"   chooser_viewsZ
ChooseViewr0   ZChooseResultsViewr4   Z
ChosenViewr6   ZChosenMultipleViewr9   Z
CreateViewr;   r   rG   rX   r	   rL   rW   r%   r&   r'   r-   r#   r$   r.   r    r   r)   propertyr3   r5   r8   r:   r<   r   rC   rI   rR   rT   r[   __classcell__r   r   r   r   r      sh   







	r   N)Zdjango.db.modelsr   Zdjango.urlsr   Zdjango.utils.functionalr   Zdjango.utils.translationr   r^   Zwagtail.admin.forms.modelsr   Zwagtail.admin.views.genericr   r`   Zwagtail.admin.widgets.chooserr   Zwagtail.blocksr	   Zwagtail.telepathr
   rY   baser   r   r   r   r   r   <module>   s   