U
    {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.
    NZsnippetZChoosezChoose anotherZEditZmultipleTZSearchZCreatec                    s$   t  j|| | jd kr | j| _d S N)super__init__
page_titlechoose_one_text)selfargskwargs	__class__ f/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/viewsets/chooser.pyr   Y   s    
zChooserViewSet.__init__c                    s\   t  jf | 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_classr0   r1   r   r   r   choose_results_view   s
     z"ChooserViewSet.choose_results_viewc                 C   s   |  | jS r   )r0   chosen_view_classr   r   r   r   chosen_view   s    zChooserViewSet.chosen_viewc                 C   s   |  | jS r   )r0   chosen_multiple_view_classr6   r   r   r   chosen_multiple_view   s    z#ChooserViewSet.chosen_multiple_viewc                 C   s   |  | jS r   )r0   create_view_classr6   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__r6   r   r   r   
model_name   s    zChooserViewSet.model_namec              
   C   sl   | j dk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?   r@   rA   typebase_widget_classr   rD   edit_item_textr)   r+   )r   Zwidget_class_namerB   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widgetrI   )rE   base_block_classZ_meta_classr+   rB   r   rH   
__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 rC   )rM   zresults/r   zchosen/<str:pk>/r   zchosen-multiple/r   zcreate/r   )r   get_urlpatternsr   r2   r4   r7   r9   r;   r6   r   r   r   rS      s    zChooserViewSet.get_urlpatternsc                 C   s@   | j r<| jr<tt| j d| jid | jr<|  }t|| j d S )NrJ   )tooverride)r   register_widgetr   r   rH   widget_telepath_adapter_classregister_telepath_adapter)r   adapterr   r   r   on_register   s      zChooserViewSet.on_register)NN)8rA   rL   __qualname____doc__r   r+   _r   r   rD   rG   r   Z	UNDEFINEDr'   r    r!   chooser_viewsZ
ChooseViewr/   ZChooseResultsViewr3   Z
ChosenViewr5   ZChosenMultipleViewr8   Z
CreateViewr:   r   rF   rW   r	   rK   rV   r$   r%   r&   r,   r"   r#   r-   r   r   r(   propertyr2   r4   r7   r9   r;   r   rB   rH   rQ   rS   rZ   __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
   rX   baser   r   r   r   r   r   <module>   s   