a
    Dg!                     @   sD  d dl Z d dlZd dl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 d dlmZ d dlmZ d dlmZ d dlmZmZmZm Z m!Z!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+G dd dej,Z-e.dZ/e.dZ0G dd deeZ1dS )    N)defaultdict)forms)	Paginator)render_to_string)gettext)TemplateView)hooks)messages)
SearchForm)get_rich_text_editor_widget)versioned_static)WagtailAdminTemplateMixin)AdminAutoHeightTextInputAdminDateInputAdminDateTimeInputAdminPageChooserAdminTimeInputSwitchInput)AdminDocumentChooser)AdminImageChooser)Page)AdminSnippetChooserc                   @   s   e Zd ZdZdd ZdS )FakeAdminSnippetChoosera  
    AdminSnippetChooser can't be used on non-snippet models (because it fails when constructing the
    URL to the chooser modal), and we can't guarantee that any given Wagtail installation using
    this style guide will have any snippet models registered. We therefore override the
    get_chooser_modal_url method so that we can use it with Page as a stand-in for a real snippet.
    c                 C   s   dS )N/ selfr   r   _/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/contrib/styleguide/views.pyget_chooser_modal_url(   s    z-FakeAdminSnippetChooser.get_chooser_modal_urlN)__name__
__module____qualname____doc__r   r   r   r   r   r       s   r   c                       s&  e Zd Z fddZdZejdddZejddZejddZ	ej
ddZejdd	Ze Ze Ze Zejed
d dZejedZejeejdZejedZejeejdZejddZejddZejddZ ejddZ!ejddZ"ejddZ#ejddZ$e% fddZ&  Z'S )ExampleFormc                    s   t  j|i | t | jd _t | jd _t | jd _tt| jd _t	 | jd _t
 | jd _t | jd _t | jd _td	| jd
 _t | jd _tddid| jd _d S )Npage_chooserimage_chooserdocument_choosersnippet_chooserdatetimedatetimeauto_height_textdefaultdefault_rich_textswitchdisabledT)attrsdisabled_switch)super__init__r   fieldswidgetr   r   r   r   r   r   r   r   r   r   )r   argskwargs	__class__r   r   r3   -   s    zExampleForm.__init__))Zchoice1zchoice 1)Zchoice2z)choice 2 that is longer but pretty normal)Zchoice3a	  
            choice 3 that has a very long label that it cannot possibly fit within the
            width of the parent container but we're going to test it anyway to see
            what happens and how it wraps and whether it breaks the layout or not
            Tz	help text)required	help_text)r:      )
max_lengthN   )choices)r?   r5   Fc                    s   t  jtjdtdgid S )Nallz*wagtailstyleguide/css/animate-progress.css)css)r2   mediar   ZMediar   r   r8   r   r   rB   _   s    

zExampleForm.media)(r   r    r!   r3   ZCHOICESr   Z	CharFieldtextr+   r-   ZURLFieldurlZ
EmailFieldemailZ	DateFieldr(   Z	TimeFieldr)   ZDateTimeFieldr*   ZChoiceFieldselectZlong_selectZRadioSelectZradio_selectZMultipleChoiceFieldZmultiple_selectZCheckboxSelectMultipleZmultiple_checkboxZBooleanFieldbooleanr.   r1   r$   r%   r&   r'   propertyrB   __classcell__r   r   r8   r   r#   ,   s4   r#   zid=["']icon-([a-z0-9-]+)["']z<!--!(.*?)-->c                       s4   e Zd ZdZedZdZ fddZdd Z  Z	S )	IndexViewzwagtailstyleguide/base.htmlZ
Styleguideimagec              	      s   t  jf i |}tj| jtdtdtdtdtdgd tj| jtdtdtdtdtdgd tj| jtdtdtdtdtdgd | 	 |d< t
 |d	< tttd
dd|d< t |d< |S )NzSuccess message z	View liveZEdit)ZbuttonszWarning messagezError message	all_iconsZexample_formd   
   r>   Zexample_pageZsearch_form)r2   get_context_datar	   successrequest_buttonwarningerror	get_iconsr#   r   listrangepager
   )r   r7   contextr8   r   r   rP   t   s6    	

zIndexView.get_context_datac              	   C   s   t d}tjdd |D }tt}|D ]h}tj	|\}}t
|}t|}|r`|dnd }	t|}
|| |||	|
r|
dnd d q,| S )NZregister_iconsc                 s   s   | ]}|g V  qd S )Nr   ).0hookr   r   r   	<genexpr>   s   z&IndexView.get_icons.<locals>.<genexpr>   )folder	file_pathnamesource)r   Z	get_hooks	itertoolschainfrom_iterabler   rX   ospathsplitr   icon_id_patternsearchgroupicon_comment_patternappenditems)r   Z
icon_hooksZregistered_iconsrM   Z	icon_pathr`   filenameZiconZid_matchrb   Zsource_matchr   r   r   rW      s&    


zIndexView.get_icons)
r   r    r!   Ztemplate_namerS   Z
page_titleZheader_iconrP   rW   rI   r   r   r8   r   rJ   o   s
   #rJ   )2rd   rg   recollectionsr   Zdjangor   Zdjango.core.paginatorr   Zdjango.template.loaderr   Zdjango.utils.translationr   rS   Zdjango.views.generic.baser   Zwagtailr   Zwagtail.adminr	   Zwagtail.admin.forms.searchr
   Zwagtail.admin.rich_textr   Zwagtail.admin.staticfilesr   Zwagtail.admin.views.genericr   Zwagtail.admin.widgetsr   r   r   r   r   r   Zwagtail.documents.widgetsr   Zwagtail.images.widgetsr   Zwagtail.modelsr   Zwagtail.snippets.widgetsr   r   ZFormr#   compilerj   rm   rJ   r   r   r   r   <module>   s0    ?

