a
    Dg                    @   sT  d dl Z d dlZd dlZ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mZ d dlmZ d dlmZ d dl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 d dlmZ d dl m!Z!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC d dlDmEZE d dlFmGZGmHZH d dlImJZJmKZKmLZLmMZM d dlNmOZO d dlPmQZQ d dlRmSZSmTZTmUZU d dlVmWZW d dlXmYZY d dlZm[Z[ d d l\m]Z] d d!l^m_Z_m`Z` d d"lambZbmcZc d d#ldmeZe d d$lfmgZgmhZh d d%limjZjmkZkmlZl d d&lmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZy d d'lzm{Z{ d d(l|m}Z} d d)l~mZ d*d+lmZmZ d,ed-fd.ed/ffZd0Zd1d2d3d4d5d6d6d7d8d5gZG d9d: d:ejZG d;d< d<eZG d=d> d>eZG d?d@ d@eqZG dAdB dBeqZG dCdD dDeqZG dEdF dFeqZG dGdH dHejZG dIdJ dJeqZG dKdL dLeqZG dMdN dNeqZG dOdP dPexepeZG dQdR dRexepeZG dSdT dTexepejZG dUdV dVexepee$ZG dWdX dXexejZG dYdZ dZe.ZG d[d\ d\eqZG d]d^ d^ejZG d_d` d`eqZG dadb dbeZG dcdd ddeWZG dedf dfeqZG dgdh dheLZG didj djeKZG dkdl dle0ZG dmdn dneLZG dodp dpeKZG dqdr dreLZG dsdt dteKZG dudv dveHZG dwdx dxeKZG dydz dzeLZG d{d| d|eMZG d}d~ d~eLZG dd deKZeJd ZG dd deLZG dd deGZG dd deKZG dd dejZG dd de*ZG dd de$Zee G dd de$Zee G dd de{je$Zee G dd dejZee G dd dejZG dd dejZee G dd devejZG dd deZG dd deZG dd deneoevejZG dd denevejZee G dd deue$Zee G dd deuejZee G dd deuevejZee G dd deuevejZee G dd deoejZee G dd deyenevejZG dd deueyeneoevexe{jej
Zdd ZG dd dejZG dd deqZG dd deqZe;e9ejdde9ejdde9ejdde9e5dgddge.de_G dd deqZG dd deqZG ddĄ deqZG ddƄ deqZG ddȄ deqZG ddʄ de*ZG dd̄ deqZG dd΄ de҃ZG ddЄ deӃZG dd҄ deqZG ddԄ deqZG ddք dejZG dd؄ dejZG ddڄ dejZG dd܄ dejZG ddބ dejZG dd dekZG dd dejZG dd dekZG dd de_ZG dd de_ZG dd dejZG dd dejZG dd dejZG dd dehZG dd deqZG dd deqZG dd deqZG dd deqZG dd deZG dd deqZG dd deqZG dd  d eqZeUG dd deTZeUG dd deSZeUG dd deSZeUG dd deTZeUG d	d
 d
eTZeUddG dd deSZeUddG dd deTZeUddG dd deSZG dd deTZG dd deSZeUG dd deTZeUG dd deSZG dd dejZG dd  d ejZG d!d" d"eqZG d#d$ d$eqZG d%d& d&eqZG d'd( d(ejZG d)d* d*etZer eZG d+d, d,eqZG d-d. d.eqZG d/d0 d0eZG d1d2 d2eqZG d3d4 d4eqZG d5d6 d6eqZG d7d8 d8eqZG d9d: d:eqZG d;d< d<eqZ	G d=d> d>epZ
G d?d@ d@eqZG dAdB dBepZG dCdD dDeqZG dEdF dFeqZG dGdH dHejZG dIdJ dJeZG dKdL dLeZG dMdN dNeZG dOdP dPeZG dQdR dReqZG dSdT dTeqZG dUdV dVeqZG dWdX dXeqZG dYdZ dZeqZG d[d\ d\eqZG d]d^ d^eqZG d_d` d`eqZG dadb dbe{je$epZG dcdd dde*ZG dedf dfe{je$ZG dgdh dheqZG didj dje)Z G dkdl dle(Z!G dmdn dnewZ"G dodp dpej#Z$G dqdr dre>Z%G dsdt dteqZ&ee Z'e[ Z(G dudv dve(Z)G dwdx dxe_Z*G dydz dze(Z+G d{d| d|ejZ,G d}d~ d~ejZ-G dd dejZ.G dd deqZ/G dd depZ0G dd deZ1G dd deZ2dd Z3G dd de{jejZ4G dd dejZ5G dd dejZ6G dd desZ7G dd deqZ8G dd dejZ9ee9 dS (      N)forms)settings)GenericForeignKeyGenericRelation)ContentType)ValidationError)	EmptyPagePageNotAnInteger	Paginator)models)redirect)TemplateResponse)gettext_lazy)ClusterTaggableManager)ParentalKeyParentalManyToManyField)ClusterableModel)TaggableManager)ItemBaseTagBaseTaggedItemBase)widgets)WagtailAdminPageForm)CopyForm)	send_mail)
FieldPanel	HelpPanelInlinePanelMultiFieldPanelMultipleChooserPanel
ObjectListPublishingPanelTabbedInterface)	CharBlock
FieldBlock	ListBlockRawHTMLBlockRichTextBlockStreamBlockStructBlock)
HTTPMethod)FormBuilderWagtailAdminFormPageForm)FORM_FIELD_CHOICESAbstractEmailFormAbstractFormFieldAbstractFormSubmission)FormSubmissionsPanel)SubmissionsListView)BaseGenericSettingBaseSiteSettingregister_setting)Sitemap)
TableBlock)get_document_model)DocumentChooserBlock)AbstractDocumentDocument)RichTextFieldStreamField)get_image_model)
ImageBlockImageChooserBlock)AbstractImageAbstractRenditionImage)DraftStateMixinLockableMixin	OrderablePagePageManagerPagePermissionTesterPageQuerySetPreviewableMixinRevisionMixinTaskTranslatableMixinWorkflowMixin)index)SnippetChooserBlock)register_snippet   ) FormClassAdditionalFieldPageFormValidatedPageFormpublicZPublicprivateZPrivate)slug	seo_titleZshow_in_menusZsearch_descriptionzcustom-mobilez
mobile-alti  zCustom mobile preview)nameiconZdevice_widthlabeldesktopi   zOriginal desktopc                   @   sv   e Zd ZejdddZejddddejdZejddddejdZ	e
dd	 Zed
ededgZG dd dZdS )
LinkFieldszExternal linkTblankwagtailcore.Page+)nullr`   related_name	on_deletewagtaildocs.Documentc                 C   s&   | j r| j jS | jr| jjS | jS d S N)	link_pageurllink_documentlink_externalself rn   Z/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/test/testapp/models.pylink   s
    zLinkFields.linkrk   rh   rj   c                   @   s   e Zd ZdZdS )zLinkFields.MetaTN__name__
__module____qualname__Zabstractrn   rn   rn   ro   Meta   s   ru   N)rr   rs   rt   r   URLFieldrk   
ForeignKeyCASCADErh   rj   propertyrp   r   panelsru   rn   rn   rn   ro   r^   v   s,   
	r^   c                   @   s`   e Zd ZejdddejddZejdddZej	dddZ
d	d
deejdgZG dd dZdS )CarouselItemwagtailimages.ImageTrb   rc   r`   re   rd   z	Embed URLr_      
max_lengthr`   image	embed_urlcaptionLinkc                   @   s   e Zd ZdZdS )zCarouselItem.MetaTNrq   rn   rn   rn   ro   ru      s   ru   N)rr   rs   rt   r   rw   SET_NULLr   rv   r   	CharFieldr   r   r^   rz   ru   rn   rn   rn   ro   r{      s   
r{   c                   @   s8   e Zd ZejdddZdeejdgZG dd dZ	dS )	RelatedLinkr~   z
Link title)r   	help_texttitler   c                   @   s   e Zd ZdZdS )zRelatedLink.MetaTNrq   rn   rn   rn   ro   ru      s   ru   N)
rr   rs   rt   r   r   r   r   r^   rz   ru   rn   rn   rn   ro   r      s
   
r   c                       s<   e Zd Ze ZdZedddedgZ fddZ	  Z
S )
SimplePagezA simple page descriptionr   	classnamecontentc                    s   dt    S )Nz%s (simple page)superget_admin_display_titlerl   	__class__rn   ro   r      s    z"SimplePage.get_admin_display_title)rr   rs   rt   r   	TextFieldr   page_descriptionr   content_panelsr   __classcell__rn   rn   r   ro   r      s   
r   c                       sF   e Zd ZdddZed Zedd Zedd Z fd	d
Z  Z	S )MultiPreviewModesPagetests/simple_page.htmlztests/simple_page_alt.html)originalalt#1r   c                 C   s   ddgS )N)r   ZOriginalr   Z	Alternatern   rl   rn   rn   ro   preview_modes   s    z#MultiPreviewModesPage.preview_modesc                 C   s   dS Nr   rn   rl   rn   rn   ro   default_preview_mode   s    z*MultiPreviewModesPage.default_preview_modec                    s"   || j v r| j | S t ||S rg   )preview_templatesr   get_preview_templaterm   request	mode_namer   rn   ro   r      s    

z*MultiPreviewModesPage.get_preview_template)
rr   rs   rt   r   templatery   r   r   r   r   rn   rn   r   ro   r      s   

r   c                   @   s(   e Zd ZdZedd Zedd ZdS )CustomPreviewSizesPager   c                 C   s   t S rg   CUSTOM_PREVIEW_SIZESrl   rn   rn   ro   preview_sizes   s    z$CustomPreviewSizesPage.preview_sizesc                 C   s   dS Nr]   rn   rl   rn   rn   ro   default_preview_size   s    z+CustomPreviewSizesPage.default_preview_sizeN)rr   rs   rt   r   ry   r   r   rn   rn   rn   ro   r      s
   
r   c                   @   sD   e Zd Ze ZejddddZdgZe	ddde	de	dgZ
d	S )
PageWithExcludedCopyFieldTr~   zVery Special)r`   r   defaultspecial_fieldr   r   r   N)rr   rs   rt   r   r   r   r   r   Zexclude_fields_in_copyr   r   rn   rn   rn   ro   r      s   
r   c                   @   s.   e Zd ZejeejdZe Z	e
ddZdS )RelatedGenericRelationre   content_type	object_idN)rr   rs   rt   r   rw   r   rx   r   ZPositiveBigIntegerFieldr   r   content_objectrn   rn   rn   ro   r      s   r   c                   @   s   e Zd ZedZdS )PageWithGenericRelationztests.RelatedGenericRelationN)rr   rs   rt   r   Zgeneric_relationrn   rn   rn   ro   r     s   r   c                   @   s$   e Zd ZdZe ZdZdd ZdS )PageWithOldStyleRouteMethodz
    Prior to Wagtail 0.4, the route() method on Page returned an HttpResponse
    rather than a Page instance. As subclasses of Page may override route,
    we need to continue accepting this convention (albeit as a deprecated API).
    r   c                 C   s
   |  |S rg   )serverm   r   Zpath_componentsrn   rn   ro   route  s    z!PageWithOldStyleRouteMethod.routeN)	rr   rs   rt   __doc__r   r   r   r   r   rn   rn   rn   ro   r   
  s   r   c                   @   s.   e Zd Ze ZedddededgZdS )FilePager   r   zremember to check for viruses
file_fieldN)	rr   rs   rt   r   	FileFieldr   r   r   r   rn   rn   rn   ro   r     s
   
r   c                   @   s2   e Zd ZeddejdZG dd deje	jZdS )EventPageCarouselItemtests.EventPagecarousel_itemsrd   re   c                   @   s   e Zd ZdS )zEventPageCarouselItem.MetaNrr   rs   rt   rn   rn   rn   ro   ru   +  s   ru   N
rr   rs   rt   r   r   rx   pagerN   ru   rF   rn   rn   rn   ro   r   &  s   r   c                   @   s2   e Zd ZeddejdZG dd deje	jZdS )EventPageRelatedLinkr   related_linksr   c                   @   s   e Zd ZdS )zEventPageRelatedLink.MetaNr   rn   rn   rn   ro   ru   4  s   ru   Nr   rn   rn   rn   ro   r   /  s   r   c                   @   sV   e Zd ZeddejdZejdddZej	dddZ
d	d
gZG dd dejejZdS )EventPageSpeakerAwardztests.EventPageSpeakerawardsr   z
Award namer~   r   Trc   r`   rZ   date_awardedc                   @   s   e Zd ZdS )zEventPageSpeakerAward.MetaNr   rn   rn   rn   ro   ru   A  s   ru   N)rr   rs   rt   r   r   rx   speakerr   rZ   	DateFieldr   rz   rN   ru   rF   rn   rn   rn   ro   r   8  s   r   c                   @   s   e Zd ZedddejdZejddddZejd	dddZ	ej
d
ddejddZedd ZdddeejdedddgZG dd dejejZdS )EventPageSpeakerr   speakersr   )rd   related_query_namere   Namer~   Tr   ZSurnamer|   rb   r}   c                 C   s   | j d | j S )N )
first_name	last_namerl   rn   rn   ro   name_displayV  s    zEventPageSpeaker.name_displayr   r   r   r   r   ZAwardsr\   c                   @   s   e Zd ZdS )zEventPageSpeaker.MetaNr   rn   rn   rn   ro   ru   b  s   ru   N)rr   rs   rt   r   r   rx   r   r   r   r   rw   r   r   ry   r   r   r^   rz   r   rN   ru   rF   rn   rn   rn   ro   r   E  s0   


r   c                   @   s"   e Zd ZejdddZdd ZdS )EventCategoryr   r~   r   c                 C   s   | j S rg   rZ   rl   rn   rn   ro   __str__i  s    zEventCategory.__str__N)rr   rs   rt   r   r   rZ   r   rn   rn   rn   ro   r   f  s   r   c                       s   e Zd Z fddZ  ZS )EventPageFormc                    s6   t   }|d }|d }|r2|r2||kr2td|S )N	date_fromdate_toz)The end date must be after the start date)r   cleanr   )rm   cleaned_dataZ
start_dateend_dater   rn   ro   r   r  s    
zEventPageForm.clean)rr   rs   rt   r   r   rn   rn   r   ro   r   q  s   r   c                   @   sV  e Zd ZejdddZejdddddZejddddZejd	dddZ	ej
d
edZej
d
dZeddZej
d
dZejddZejdddejddZeeddZejededededg ZdZeZ e!dddddddde!ddddd e"d!d"d#de"d$d%d&d'd(e"d)d*d#d+e"d,d-d#gZ#e$e%d.d/de!d0gZ&G d1d2 d2Z'd3S )4	EventPagez
Start dateT)rc   zEnd datez(Not required if event is on a single day)rc   r`   r   z
Start timer   zEnd timer~   r   choicesr   r_   r|   rb   r}   Zget_audience_displaylocationbodyZurl_pathz'tests/event_page_password_required.htmlr   r   r   r   	time_fromtime_toaudiencezWho this event is forr   costsignup_linkr   zCarousel itemsr   r   ZSpeakerzSpeaker lineupzPut the keynote speaker first)r\   headingr   r   zRelated links
categorieshead_countszHead CountszCommon page configurationzFor SEO nerds only
feed_imagec                   @   s   e Zd ZddgZdS )zEventPage.Meta)Zcustom_see_panel_settingCan see the panel.)Zother_custom_see_panel_settingr   Nrr   rs   rt   permissionsrn   rn   rn   ro   ru     s   ru   N)(rr   rs   rt   r   r   r   r   Z	TimeFieldr   r   r   EVENT_AUDIENCE_CHOICESr   r   r<   r   r   rv   r   rw   r   r   r   r   r   rG   search_fieldsrP   SearchFieldFilterFieldZpassword_required_templater   base_form_classr   r   r   r   COMMON_PANELSpromote_panelsru   rn   rn   rn   ro   r   ~  sr   





r   c                   @   s>   e Zd ZdZejddZeeej	ddZ
e ZedgZdS )HeadCountRelatedModelUsingPKz8Related model that uses a custom primary key (pk) not idT)primary_keyr   re   rd   
head_countN)rr   rs   rt   r   r   Z	AutoField	custom_idr   r   rx   Z
event_pageIntegerFieldr   r   rz   rn   rn   rn   ro   r     s   r   c                   @   sF   e Zd ZejddZeddZedddededed	gZ	e
Zd
S )FormClassAdditionalFieldPager~   r   Tr_   r   r   r   r   codeN)rr   rs   rt   r   r   r   r<   r   r   r   rT   r   rn   rn   rn   ro   r     s   

r   c                       sX   e Zd ZejdddddZd fdd	Z fdd	Z fd
dZe	dge
j Z  ZS )SingleEventPager~   Tz0Short text to describe what is this action about)r   r`   rc   r   Nc                    s6   t  j|d}|d u rd S |\}}}|||d fS d S )Nr   zpointless-suffix/)r   get_url_parts)rm   r   Z	url_partsZsite_idZroot_urlZ	page_pathr   rn   ro   r    s
    
zSingleEventPage.get_url_partsc                    s*   |dgkrt  |g S t  ||S d S )Nzpointless-suffix)r   r   r   r   rn   ro   r     s    
zSingleEventPage.routec                    s   dt    S )Nz%s (single event)r   rl   r   rn   ro   r     s    z'SingleEventPage.get_admin_display_titleexcerpt)N)rr   rs   rt   r   r   r  r  r   r   r   r   r   r   rn   rn   r   ro   r     s   r   c                   @   s   e Zd ZdS )EventSitemapNr   rn   rn   rn   ro   r    s   r  c                       s   e Zd ZedddZdZejdgZdd Z	dd	 Z
d fdd	Z fddZd fdd	Z fddZedddedgZ  ZS )
EventIndexT2   )r`   r   z!tests/includes/event_listing.htmlOPTIONSc                 C   s   |    tS rg   )Zget_childrenlivetyper   rl   rn   rn   ro   
get_events  s    zEventIndex.get_eventsc                 C   s   t |  dS )N   )r
   r	  rl   rn   rn   ro   get_paginator  s    zEventIndex.get_paginatorrS   c                    sh   |   }z||}W n8 ty2   |d}Y n tyN   ||j}Y n0 t |}||d< |S )NrS   events)r  r   r	   r   Z	num_pagesr   get_context)rm   r   r   Z	paginatorr  contextr   rn   ro   r    s    zEventIndex.get_contextc              	      sP   | j rBt|dkrBz| j|t|d dW S  ttfy@   Y n0 t ||S )NrS   r   )r   )r  lenr   int	TypeError
ValueErrorr   r   r   r   rn   ro   r   #  s    zEventIndex.routeNc                    s"   t  j|d| jd | jdg S )Nr   zpast/)r   Zlastmod)r   get_sitemap_urlsfull_urlZlatest_revision_created_at)rm   r   r   rn   ro   r  ,  s
    zEventIndex.get_sitemap_urlsc                    s   t   dg S )Nz/past/)r   get_cached_pathsrl   r   rn   ro   r  5  s    zEventIndex.get_cached_pathsr   r   intro)rS   )N)rr   rs   rt   r<   r  Zajax_templater*   GETZallowed_http_methodsr	  r  r  r   r  r  r   r   r   rn   rn   r   ro   r    s   
		
r  c                   @   s   e Zd ZeddejdZdS )	FormFieldFormPageform_fieldsr   Nrr   rs   rt   r   r   rx   r   rn   rn   rn   ro   r  >  s   r  c                       sV   e Zd Z fddZeZedddedddeeded	ed
gde	 gZ
  ZS )r  c                    s   t  |}d|d< |S Nzhello worldZgreetingr   r  rm   r   r  r   rn   ro   r  C  s    zFormPage.get_contextr   r   r  Form fieldsr   
to_addressfrom_addresssubjectEmail)rr   rs   rt   r  r2   Zsubmissions_list_view_classr   r   r   r1   r   r   rn   rn   r   ro   r  B  s   


r  c                       s   e Zd Z fddZ  ZS )CustomCopyFormc                    s   t  j|i | d}| j }| jjrlz(t| jjd d }| jjd d }W n tyj   | jj}Y n0 |d|  }t||s|d7 }| d| }| qzt	t
dd}tj|td|tjjd	| jd
< d S )N   rS   -ZWAGTAIL_ALLOW_UNICODE_SLUGSTzNew slug)initialr\   allow_unicodewidgetZnew_slug)r   __init__r   Z
get_parentrX   r  r  rG   Z_slug_is_availablegetattrr   r   Z	SlugField_r   Z	SlugInputfields)rm   argskwargssuffixZparent_pageZ	base_slugZcandidate_slugr*  r   rn   ro   r,  b  s*    
zCustomCopyForm.__init__rr   rs   rt   r,  r   rn   rn   r   ro   r$  a  s   r$  c                   @   s   e Zd ZeddejdZdS )JadeFormFieldJadeFormPager  r   Nr  rn   rn   rn   ro   r4    s   r4  c                   @   sB   e Zd ZdZedddedddeededed	gd
gZdS )r5  ztests/form_page.jader   r   r  r  r   r   r!  r"  r#  N)rr   rs   rt   r   r   r   r   r   rn   rn   rn   ro   r5    s   

r5  c                   @   s   e Zd ZeddejdZdS )RedirectFormFieldFormPageWithRedirectr  r   Nr  rn   rn   rn   ro   r6    s   r6  c                       sx   e Zd ZejdddejddZ fddZd fdd		Ze	d
d
de	de
dddee	de	de	dgdgZ  ZS )r7  ra   Trb   r}   c                    s   t  |}d|d< |S r  r  r  r   rn   ro   r    s    z FormPageWithRedirect.get_contextNc                    s2   | j rt| j jddS t j||g|R i |S )zj
        Renders the landing page OR if a receipt_page_redirect is chosen redirects to this page.
        F)Z	permanent)thank_you_redirect_pager   ri   r   render_landing_page)rm   r   form_submissionr0  r1  r   rn   ro   r9    s    z(FormPageWithRedirect.render_landing_pager   r   r8  r  r  r   r   r!  r"  r#  )N)rr   rs   rt   r   rw   r   r8  r  r9  r   r   r   r   r   rn   rn   r   ro   r7    s(   


r7  c                       s    e Zd ZdZ fddZ  ZS ) FormPageWithCustomSubmissionFormzq
    Used to validate that admin forms can validate the page's submissions via
    extending the form class.
    c                    s,   t   }|d}|r(d|v r(td|S )Nr!  zexample.comz Email cannot be from example.com)r   r   getr   )rm   r   r!  r   rn   ro   r     s
    

z&FormPageWithCustomSubmissionForm.clean)rr   rs   rt   r   r   r   rn   rn   r   ro   r;    s   r;  c                	       s   e Zd ZdZeddZeddZeZ fddZ	dd Z
 fdd	Zd
d Zdd Z fddZedddededddedeedededgdgZ  ZS )FormPageWithCustomSubmissiona  
    A ``FormPage`` with a custom FormSubmission and other extensive customizations:

    * A custom submission model
    * A custom related_name (see `FormFieldWithCustomSubmission.page`)
    * Saves reference to a user
    * Doesn't render html form, if submission for current user is present
    * A custom clean method that does not allow the ``from_address`` to be set to anything including example.com
    Tr_   c                    s   t  |}d|d< |S r  r  )rm   r   r0  r1  r  r   rn   ro   r    s    z(FormPageWithCustomSubmission.get_contextc                 C   s
   | j  S rg   )custom_form_fieldsallrl   rn   rn   ro   get_form_fields  s    z,FormPageWithCustomSubmission.get_form_fieldsc                    s   dg}|t   7 }|S N)	useremailz
User emailr   get_data_fieldsrm   Zdata_fieldsr   rn   ro   rD    s    z,FormPageWithCustomSubmission.get_data_fieldsc                 C   s   t S rg   CustomFormPageSubmissionrl   rn   rn   ro   get_submission_class  s    z1FormPageWithCustomSubmission.get_submission_classc                    sj   |   jj j|  jd}| jrfdd | jdD }d fdd j	 D }t
| j||| j |S )N)	form_datar   userc                 S   s   g | ]}|  qS rn   )strip.0xrn   rn   ro   
<listcomp>      zHFormPageWithCustomSubmission.process_form_submission.<locals>.<listcomp>,
c                    s.   g | ]&}|d  j d t j|d  qS )rS   z: r   )r\   strdatar<  rL  formrn   ro   rO    s   )rH  objectscreater   rJ  r   splitjoinr/  itemsr   r"  r!  )rm   rV  r:  	addressesr   rn   rU  ro   process_form_submission  s&    

z4FormPageWithCustomSubmission.process_form_submissionc                    sJ   |   jj| |jjd r0t|| j| |S t	 j
|g|R i |S )N)r   Zuser__pk)rH  rW  filterrJ  pkexistsr   r   r  r   r   )rm   r   r0  r1  r   rn   ro   r     s    
z"FormPageWithCustomSubmission.server   r   r  r>  r  r   thank_you_textr   r!  r"  r#  )rr   rs   rt   r   r<   r  ra  r;  r   r  r@  rD  rH  r]  r   r   r   r   r   r   rn   rn   r   ro   r=    s,   




r=  c                   @   s   e Zd ZeeejddZdS )FormFieldWithCustomSubmissionr>  r   N)rr   rs   rt   r   r=  r   rx   r   rn   rn   rn   ro   rb  /  s
   rb  c                       s.   e Zd ZejejejdZ fddZ	  Z
S )rG  r   c                    s    t   }|d| jji |S )NrB  )r   get_dataupdaterJ  email)rm   rI  r   rn   ro   rc  :  s    
z!CustomFormPageSubmission.get_data)rr   rs   rt   r   rw   r   AUTH_USER_MODELrx   rJ  rc  r   rn   rn   r   ro   rG  7  s   rG  c                   @   s   e Zd ZeddejdZdS )FormFieldForCustomListViewPage$FormPageWithCustomSubmissionListViewr  r   Nr  rn   rn   rn   ro   rg  H  s
   rg  c                	       s   e Zd ZdZeddZeddZdd Zdd Z fdd	Z	e
d
d
de
deddde
dee
de
de
dgdgZ  ZS )rh  z2Form Page with customised submissions listing viewTr_   c                 C   s   ddl m} |S )NrS   )CustomSubmissionsListView)Zviewsri  )rm   ri  rn   rn   ro   get_submissions_list_view_classV  s    zDFormPageWithCustomSubmissionListView.get_submissions_list_view_classc                 C   s   t S rg   rF  rl   rn   rn   ro   rH  [  s    z9FormPageWithCustomSubmissionListView.get_submission_classc                    s   dg}|t   7 }|S rA  rC  rE  r   rn   ro   rD  ^  s    z4FormPageWithCustomSubmissionListView.get_data_fieldsr   r   r  r  r  r   ra  r   r!  r"  r#  )rr   rs   rt   r   r<   r  ra  rj  rH  rD  r   r   r   r   r   rn   rn   r   ro   rh  P  s$   

	

rh  ))	ipaddressz
IP Addressc                       s@   e Zd ZdZeddejdZejdde	dZ
 fdd	Z  ZS )
ExtendedFormFieldzc
    Override the field_type field with extended choices
    and a custom clean_name override.
    FormPageWithCustomFormBuilderr  r   z
field type   )verbose_namer   r   c                    s0   t   }| jdkrd| S d| jv r,dS |S )Nnumberznumber_field--Z	duplicateztest duplicate)r   get_field_clean_name
field_typer\   )rm   Z
clean_namer   rn   ro   rq    s    



z&ExtendedFormField.get_field_clean_name)rr   rs   rt   r   r   r   rx   r   r   EXTENDED_CHOICESrr  rq  r   rn   rn   r   ro   rl  {  s   rl  c                   @   s    e Zd ZdZdd Zdd ZdS )CustomFormBuilderz
    A custom FormBuilder that has an 'ipaddress' field with
    customised create_singleline_field with shorter max_length
    c                 C   s   d|d< t jf i |S )Nx   r   )r   r   rm   fieldoptionsrn   rn   ro   create_singleline_field  s    z)CustomFormBuilder.create_singleline_fieldc                 C   s   t jf i |S rg   )r   ZGenericIPAddressFieldrv  rn   rn   ro   create_ipaddress_field  s    z(CustomFormBuilder.create_ipaddress_fieldN)rr   rs   rt   r   ry  rz  rn   rn   rn   ro   rt    s   rt  c                   @   sF   e Zd ZdZeZedddedddeededed	gd
gZ	dS )rm  z
    A Form page that has a custom form builder and uses a custom
    form field model with additional field_type choices.
    r   r   r  r  r   r   r!  r"  r#  N)
rr   rs   rt   r   rt  Zform_builderr   r   r   r   rn   rn   rn   ro   rm    s   

rm  c                   @   s:   e Zd ZeddejdZejddejdZej	ddZ
dS )	AdvertPlacementra   advert_placementsr   ztests.Advertrb   r~   r   N)rr   rs   rt   r   r   rx   r   rw   advertr   Zcolourrn   rn   rn   ro   r{    s   r{  c                   @   s   e Zd ZeddejdZdS )	AdvertTagAdverttagged_itemsr   Nrr   rs   rt   r   r   rx   r   rn   rn   rn   ro   r~    s   r~  c                   @   sP   e Zd ZejdddZejddZee	ddZ
edededgZd	d
 ZdS )r  Tr   r~   r   throughr`   ri   texttagsc                 C   s   | j S rg   r  rl   rn   rn   ro   r     s    zAdvert.__str__N)rr   rs   rt   r   rv   ri   r   r  r   r~  r  r   rz   r   rn   rn   rn   ro   r    s   r  c                   @   sL   e Zd ZejdddZejdddZejddZe	de	dgZ
dd	 Zd
S )AdvertWithCustomPrimaryKeyr~   Tr   r   r   r   ri   r  c                 C   s   | j S rg   r  rl   rn   rn   ro   r     s    z"AdvertWithCustomPrimaryKey.__str__N)rr   rs   rt   r   r   	advert_idrv   ri   r  r   rz   r   rn   rn   rn   ro   r    s   r  c                   @   sv   e Zd ZejdejddZejdddZ	ej
ddZejeddejdZeded	ed
gZed	gZdd ZdS )AdvertWithCustomUUIDPrimaryKeyTF)r   r   editabler   r~   r   )rc   r`   re   ri   r  r   c                 C   s   | j S rg   r  rl   rn   rn   ro   r     s    z&AdvertWithCustomUUIDPrimaryKey.__str__N)rr   rs   rt   r   	UUIDFielduuiduuid4r  rv   ri   r   r  rw   rG   r   r   r   rz   rP   r   r   r   rn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZejdddZejddZejddZe	de	dgZ
e	dgZeee
dd	eed
ddgddZdd ZG dd dZdS )AdvertWithTabbedInterfaceTr   r~   r   ri   r  something_elser  r   ZOtherzOther panels help text)r   r   zTop-level help textr   c                 C   s   | j S rg   r  rl   rn   rn   ro   r      s    z!AdvertWithTabbedInterface.__str__c                   @   s   e Zd ZdZdS )zAdvertWithTabbedInterface.Metar  N)rr   rs   rt   Zorderingrn   rn   rn   ro   ru   #  s   ru   N)rr   rs   rt   r   rv   ri   r   r  r  r   Zadvert_panelsZother_panelsr"   r    edit_handlerr   ru   rn   rn   rn   ro   r    s$   

r  c                   @   s   e Zd ZdS )CustomManagerNr   rn   rn   rn   ro   r  *  s   r  c                   @   s   e Zd Ze ZdS )ModelWithCustomManagerN)rr   rs   rt   r  Z	instancesrn   rn   rn   ro   r  .  s   r  c                   @   s   e Zd Ze ZdS )RevisableModelN)rr   rs   rt   r   r   r  rn   rn   rn   ro   r  6  s   r  c                   @   s   e Zd ZejdddZdS )RevisableChildModelT )r`   r   N)rr   rs   rt   r   r   Zsecret_textrn   rn   rn   ro   r  :  s   r  c                   @   s   e Zd ZdS )RevisableGrandChildModelNr   rn   rn   rn   ro   r  @  s   r  c                   @   s   e Zd Ze Zdd ZdS )DraftStateModelc                 C   s   | j S rg   r  rl   rn   rn   ro   r   J  s    zDraftStateModel.__str__Nrr   rs   rt   r   r   r  r   rn   rn   rn   ro   r  E  s   r  c                   @   s>   e Zd ZejdddZe Zedede	 gZ
dd ZdS )	DraftStateCustomPrimaryKeyModelr~   Tr  r  first_published_atc                 C   s   | j S rg   r  rl   rn   rn   ro   r   X  s    z'DraftStateCustomPrimaryKeyModel.__str__N)rr   rs   rt   r   r   r   r   r  r   r!   rz   r   rn   rn   rn   ro   r  N  s   r  c                   @   s0   e Zd Ze ZeeddZdd Z	dd Z
dS )PreviewableModelTr_   c                 C   s   | j S rg   r  rl   rn   rn   ro   r   d  s    zPreviewableModel.__str__c                 C   s   dS Ntests/previewable_model.htmlrn   r   rn   rn   ro   r   g  s    z%PreviewableModel.get_preview_templateN)rr   rs   rt   r   r   r  r   r   r   r   r   rn   rn   rn   ro   r  `  s   r  c                   @   s,   e Zd Ze Zedd Zedd ZdS )CustomPreviewSizesModelc                 C   s   t S rg   r   rl   rn   rn   ro   r   q  s    z%CustomPreviewSizesModel.preview_sizesc                 C   s   dS r   rn   rl   rn   rn   ro   r   u  s    z,CustomPreviewSizesModel.default_preview_sizeN)	rr   rs   rt   r   r   r  ry   r   r   rn   rn   rn   ro   r  n  s
   
r  c                   @   s<   e Zd Ze Zdd Zedd Zedd Z	dd Z
d	S )
MultiPreviewModesModelc                 C   s   | j S rg   r  rl   rn   rn   ro   r     s    zMultiPreviewModesModel.__str__c                 C   s   ddgS )N)r  ZNormalr   rn   rl   rn   rn   ro   r     s    z$MultiPreviewModesModel.preview_modesc                 C   s   dS r   rn   rl   rn   rn   ro   r     s    z+MultiPreviewModesModel.default_preview_modec                 C   s   ddd}| ||d S )Nr  z tests/previewable_model_alt.html)r  r   r  )r<  )rm   r   r   Z	templatesrn   rn   ro   r     s    z+MultiPreviewModesModel.get_preview_templateN)rr   rs   rt   r   r   r  r   ry   r   r   r   rn   rn   rn   ro   r  }  s   

r  c                   @   s    e Zd Ze Zdd Zg ZdS )NonPreviewableModelc                 C   s   | j S rg   r  rl   rn   rn   ro   r     s    zNonPreviewableModel.__str__N)rr   rs   rt   r   r   r  r   r   rn   rn   rn   ro   r    s   r  c                   @   s   e Zd Ze Zdd ZdS )LockableModelc                 C   s   | j S rg   r  rl   rn   rn   ro   r     s    zLockableModel.__str__Nr  rn   rn   rn   ro   r    s   r  c                   @   s   e Zd Ze Zdd ZdS )ModeratedModelc                 C   s   | j S rg   r  rl   rn   rn   ro   r     s    zModeratedModel.__str__Nr  rn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZG dd dejZe Zejdej	ej
ddZejddZejdddZd	Zed
dddddZeddddddZededededgZdd Zdd Zdd Zdd Zdd Zde_de_G dd de j!Z!d S )!FullFeaturedSnippetc                   @   s   e Zd ZdZdZdZdS )zFullFeaturedSnippet.CountryCodeZIDZPHZUKN)rr   rs   rt   Z	INDONESIAZPHILIPPINESUNITED_KINGDOMrn   rn   rn   ro   CountryCode  s   r  r%  T)r   r   r   r`   )Zauto_nowr   )r   r`   z
some valuezwagtailcore.WorkflowStateZbase_content_typer   Zfull_featured_snippetF)Zcontent_type_fieldZobject_id_fieldr   Zfor_concrete_modelwagtailcore.Revisionr  country_codec                 C   s   | j S rg   r  rl   rn   rn   ro   r     s    zFullFeaturedSnippet.__str__c                 C   s
   | j d S )Nr%  r_  rl   rn   rn   ro   
modulo_two  s    zFullFeaturedSnippet.modulo_twoc                 C   s   d| j d  S )N)NTF   r  rl   rn   rn   ro   tristate  s    zFullFeaturedSnippet.tristatec                 C   s   dS r  rn   r   rn   rn   ro   r     s    z(FullFeaturedSnippet.get_preview_templatec                 C   s   d| j  S )NzFoo )r  rl   rn   rn   ro   get_foo_country_code  s    z(FullFeaturedSnippet.get_foo_country_codezcustom FOO columnc                   @   s   e Zd ZdZdZdS )zFullFeaturedSnippet.Metazfull-featured snippetzfull-featured snippetsNrr   rs   rt   ro  verbose_name_pluralrn   rn   rn   ro   ru     s   ru   N)"rr   rs   rt   r   ZTextChoicesr  r   r  r   r   r  r  r   Z	some_dater   Zsome_numberZsome_attributer   Zworkflow_statesZ	revisionsrP   r   AutocompleteFieldr   r   r   r  r  r   r  Zadmin_order_fieldZshort_descriptionrN   ru   rn   rn   rn   ro   r    sL   
	r  c                   C   s
   t j S rg   )r  rW  firstrn   rn   rn   ro   get_default_advert  s    r  c                   @   sr  e Zd Ze ZejeejddddZ	ejeej
ddddZejeejddddZejeejddddZejeejddeddZejeeeddddZejeejddddZejdej
ddddZejdej
ddddZejdejddddZejeejdddZejddd	Zed
dZe de!de"de#efde$ fgfde% fgfde& fde' fgZ(e)ddZ*dS )VariousOnDeleteModelTrb   )re   rc   r`   rd   )re   rc   r`   r   rd   r|   rf   ztests.FeatureCompleteToyre   rc   r`   r   r   r   Zadvertisement_contentZcaptioned_advertr}  r   	rich_textr   documentr_   N)+rr   rs   rt   r   r   r  rw   r  rx   Zon_delete_cascadePROTECTZon_delete_protectZRESTRICTZon_delete_restrictr   Zon_delete_set_nullZSET_DEFAULTr  Zon_delete_set_defaultZSETZon_delete_setZ
DO_NOTHINGZon_delete_do_nothingZprotected_imageZprotected_documentZcascading_toyr   r   r  r   r   r   r=   r(   r)   rQ   r#   r'   r@   r9   Zstream_fieldr<   r  rn   rn   rn   ro   r    s   


	r  c                   @   s>   e Zd ZdZegZedddedededddgZg Z	d	S )
StandardIndexzIndex for the siter   r   rY   rX   r|  ZAdvertsr   N)
rr   rs   rt   r   rG   parent_page_typesr   r   r   r   rn   rn   rn   ro   r  c  s   

r  c                   @   s   e Zd ZdS )StandardChildNr   rn   rn   rn   ro   r  t  s   r  ZContentr  ZPromoteZSettingszWatch out for asteroidsZ	Dinosaurs)r   c                   @   s   e Zd ZdZddgZdS )BusinessIndexz7Can be placed anywhere, can only have Business childrentests.BusinessChildztests.BusinessSubIndexN)rr   rs   rt   r   subpage_typesrn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZdZddgZdgZdS )BusinessSubIndexzBCan be placed under BusinessIndex, and have BusinessChild childrenr  ztests.BusinessNowherePagetests.BusinessIndexN)rr   rs   rt   r   r  r  rn   rn   rn   ro   r    s   r  c                   @   s$   e Zd ZdZg ZdegZedZdS )BusinessChildz>Can only be placed under Business indexes, no children allowedr  z&A lazy business child page descriptionN)	rr   rs   rt   r   r  r  r  r.  r   rn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZdZg ZdS )BusinessNowherePagez!Not allowed to be placed anywhereN)rr   rs   rt   r   r  rn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZeZdS )CustomCopyFormPageN)rr   rs   rt   r$  Zcopy_form_classrn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZeddejdZdS )TaggedPageTagztests.TaggedPager  r   Nr  rn   rn   rn   ro   r    s   r  c                   @   s8   e Zd ZeeddZedddedgZe	dgZ
dS )
TaggedPageTr  r   r   r  N)rr   rs   rt   r   r  r  r   r   rP   r   r   rn   rn   rn   ro   r    s   
r  c                   @   s   e Zd ZdS )TaggedChildPageNr   rn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZdS )TaggedGrandchildPageNr   rn   rn   rn   ro   r    s   r  c                       s    e Zd Ze fddZ  ZS )SingletonPagec                    s   t  |o| j  S rg   )r   can_create_atrW  r`  )clsparentr   rn   ro   r    s    zSingletonPage.can_create_at)rr   rs   rt   classmethodr  r   rn   rn   r   ro   r    s   r  c                   @   s   e Zd ZdZdS )SingletonPageViaMaxCountrS   N)rr   rs   rt   	max_countrn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZejddejdZdS )PageChooserModelra   	help textr   re   Nrr   rs   rt   r   rw   rx   r   rn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZejddejdZdS )EventPageChooserModelr   zmore help textr  Nr  rn   rn   rn   ro   r    s   r  c                   @   sD   e Zd ZejedejdZejeejddddZ	e
de
dgZdS )	SnippetChooserModelr  r  TzChosen snippet)re   rc   r`   ro  r}  full_featuredN)rr   rs   rt   r   rw   r  rx   r}  r  r  r   rz   rn   rn   rn   ro   r    s   	r  c                   @   s(   e Zd ZejedejdZedgZ	dS )'SnippetChooserModelWithCustomPrimaryKeyr  r  advertwithcustomprimarykeyN)
rr   rs   rt   r   rw   r  rx   r  r   rz   rn   rn   rn   ro   r    s
   r  c                   @   sJ   e Zd ZejdddZeddZejdddZe	j
d Z
G dd dZdS )	CustomImager~   Tr   r_   )r   fancy_captionc                   @   s   e Zd ZdgZdS )zCustomImage.Metar   Z
collectionNrr   rs   rt   Zunique_togetherrn   rn   rn   ro   ru     s   ru   N)rr   rs   rt   r   r   r   r<   r  Znot_editable_fieldrC   admin_form_fieldsru   rn   rn   rn   ro   r    s
   

r  c                   @   s,   e Zd ZejedejdZG dd dZdS )CustomRendition
renditionsr   c                   @   s   e Zd ZdZdS )zCustomRendition.Meta)r   Zfilter_specZfocal_point_keyNr  rn   rn   rn   ro   ru   
  s   ru   N)	rr   rs   rt   r   rw   r  rx   r   ru   rn   rn   rn   ro   r    s   r  c                   @   s"   e Zd ZejddZejd ZdS )CustomImageWithAuthorr~   r   authorN)rr   rs   rt   r   r   r  rC   r  rn   rn   rn   ro   r    s   r  c                   @   s,   e Zd ZejedejdZG dd dZdS )CustomRenditionWithAuthorr  r   c                   @   s   e Zd ZdZdS )zCustomRenditionWithAuthor.Metar  Nr  rn   rn   rn   ro   ru     s   ru   N)	rr   rs   rt   r   rw   r  rx   r   ru   rn   rn   rn   ro   r    s   r  c                   @   s:   e Zd ZejddZeddZej	d Z	G dd dZ
dS )CustomDocumentTr_   )descriptionfancy_descriptionc                   @   s   e Zd ZdgZdS )zCustomDocument.Metar  Nr  rn   rn   rn   ro   ru   &  s   ru   N)rr   rs   rt   r   r   r  r<   r  r;   r  ru   rn   rn   rn   ro   r    s   

r  c                   @   s"   e Zd ZejddZejd ZdS )CustomDocumentWithAuthorr~   r   r  N)rr   rs   rt   r   r   r  r;   r  rn   rn   rn   ro   r  +  s   r  c                   @   s:   e Zd Zede fde fde fgZG dd dZdS )JSONStreamModelr  r  r   c                   @   s   e Zd ZdZdS )zJSONStreamModel.MetazJSON stream modelNrr   rs   rt   ro  rn   rn   rn   ro   ru   :  s   ru   N)	rr   rs   rt   r=   r#   r'   r@   r   ru   rn   rn   rn   ro   r  1  s   r  c                   @   s2   e Zd Zede fde fde fgdddZdS )JSONMinMaxCountStreamModelr  r  r   r%     min_nummax_numNrr   rs   rt   r=   r#   r'   r@   r   rn   rn   rn   ro   r  >  s   r  c                   @   sF   e Zd Zede fde fde fgddiddiddddd	Zd
S )JSONBlockCountsStreamModelr  r  r   r  rS   r  r  )r  r  r   )Zblock_countsNr  rn   rn   rn   ro   r  J  s   r  c                       s"   e Zd ZdZd fdd	Z  ZS )ExtendedImageChooserBlockz
    Example of Block with custom get_api_representation method.
    If the request has an 'extended' query param, it returns a dict of id and title,
    otherwise, it returns the default value.
    Nc                    s:   t  j||d}d|v r6|d jddr6||jdS |S )N)r  r   extendedF)idr   )r   get_api_representationZquery_paramsr<  r   )rm   valuer  Zimage_idr   rn   ro   r  `  s    z0ExtendedImageChooserBlock.get_api_representation)N)rr   rs   rt   r   r  r   rn   rn   r   ro   r  Y  s   r  c                   @   s   e Zd Zede fde fde fdede fde fgfde fde	d	e fd
e fgfde
e fde fgZdZed	edgZg ZdS )
StreamPager  r  r   productrZ   ZpriceZraw_htmlbooksr   r  Z
title_listZimage_with_alt)r   r   N)rr   rs   rt   r=   r#   r'   r  r)   r&   r(   r%   r?   r   Z
api_fieldsr   r   r   rn   rn   rn   ro   r  i  s<   	
 r  c                   @   s@   e Zd Zede fde fde fgddZededgZ	dS )	DefaultStreamPager  r  r   r  r   r   r   N)
rr   rs   rt   r=   r#   r'   r@   r   r   r   rn   rn   rn   ro   r    s   
r  c                   @   s^   e Zd Zede fde fdede fde fgfgddddgfgd	Zeded
gZ	dS )ComplexDefaultStreamPager  r  r  r   r  )r  z<p>My <i>lovely</i> books</p>)r   zThe Great Gatsby)r  zF. Scott Fitzgeraldr  r   N)
rr   rs   rt   r=   r#   r'   r(   r   r   r   rn   rn   rn   ro   r    s(   r  c                   @   s   e Zd ZdZG dd dZdS )MTIBasePageFc                   @   s   e Zd ZdZdS )zMTIBasePage.MetazMTI Base pageNr  rn   rn   rn   ro   ru     s   ru   N)rr   rs   rt   Zis_creatableru   rn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZdS )MTIChildPageNr   rn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZegZdS )NoCreatableSubpageTypesPageN)rr   rs   rt   r  r  rn   rn   rn   ro   r    s   r  c                   @   s   e Zd Zg ZdS )NoSubpageTypesPageNrr   rs   rt   r  rn   rn   rn   ro   r    s   r  c                   @   s   e Zd ZG dd dZdS )AbstractPagec                   @   s   e Zd ZdZdS )zAbstractPage.MetaTNrq   rn   rn   rn   ro   ru     s   ru   N)rr   rs   rt   ru   rn   rn   rn   ro   r    s   r  c                   @   s$   e Zd ZejddZejddZdS )TestSiteSettingd   r   r  Nrr   rs   rt   r   r   r   
EmailFieldre  rn   rn   rn   ro   r    s   r  c                   @   s$   e Zd ZejddZejddZdS )TestGenericSettingr  r   r  Nr  rn   rn   rn   ro   r    s   r  c                   @   sF   e Zd ZejddZejddZededddgZ	G dd	 d	Z
d
S )TestPermissionedGenericSettingr  r   r  r   sensitive_emailz.tests.can_edit_sensitive_email_generic_settingZ
permissionc                   @   s   e Zd ZdgZdS )z#TestPermissionedGenericSetting.Meta)Z(can_edit_sensitive_email_generic_settingz)Can edit sensitive email generic setting.Nr   rn   rn   rn   ro   ru     s   ru   Nrr   rs   rt   r   r   r   r  r  r   rz   ru   rn   rn   rn   ro   r    s   r  c                   @   sF   e Zd ZejddZejddZededddgZ	G dd	 d	Z
d
S )TestPermissionedSiteSettingr  r   r  r   r  z+tests.can_edit_sensitive_email_site_settingr	  c                   @   s   e Zd ZdgZdS )z TestPermissionedSiteSetting.Meta)Z%can_edit_sensitive_email_site_settingz&Can edit sensitive email site setting.Nr   rn   rn   rn   ro   ru   	  s   ru   Nr
  rn   rn   rn   ro   r    s   r  c                   @   sH   e Zd ZejdddejdZejdddejdZejdddejdZdS )ImportantPagesSiteSettingra   rb   Trd   rc   re   N)	rr   rs   rt   r   rw   r   sign_up_pagegeneral_terms_pageprivacy_policy_pagern   rn   rn   ro   r    s   


r  zimportant-pages-generic-settingr   c                   @   sV   e Zd ZejdddejdZejdddejdZejdddejdZG dd dZ	dS )ImportantPagesGenericSettingra   rb   Tr  c                   @   s   e Zd ZedZedZdS )z!ImportantPagesGenericSetting.MetazImportant pages settingsN)rr   rs   rt   r.  ro  r  rn   rn   rn   ro   ru   +  s   ru   N)
rr   rs   rt   r   rw   r   r  r  r  ru   rn   rn   rn   ro   r    s   


r  tag)r[   c                   @   s   e Zd ZdS )IconSiteSettingNr   rn   rn   rn   ro   r  0  s   r  c                   @   s   e Zd ZdS )IconGenericSettingNr   rn   rn   rn   ro   r  5  s   r  c                   @   s   e Zd ZdS )NotYetRegisteredSiteSettingNr   rn   rn   rn   ro   r  :  s   r  c                   @   s   e Zd ZdS )NotYetRegisteredGenericSettingNr   rn   rn   rn   ro   r  >  s   r  c                   @   s   e Zd Ze ZdS )FileSiteSettingNrr   rs   rt   r   r   filern   rn   rn   ro   r  B  s   r  c                   @   s   e Zd Ze ZdS )FileGenericSettingNr  rn   rn   rn   ro   r  G  s   r  c                   @   s   e Zd ZejdddZdS )BlogCategoryTP   )uniquer   N)rr   rs   rt   r   r   rZ   rn   rn   rn   ro   r  L  s   r  c                   @   s8   e Zd ZejedejdZeddejdZ	e
dgZdS )BlogCategoryBlogPagerb   r   ManyToManyBlogPager   categoryN)rr   rs   rt   r   rw   r  rx   r   r   r   r   rz   rn   rn   rn   ro   r  P  s   r  c                   @   sH   e Zd ZdZeddZejeddZ	eje
eddZejedg ZdS )r  z
    A page type with two different kinds of M2M relation.
    We don't formally support these, but we don't want them to cause
    hard breakages either.
    Tr_   r  r  N)rr   rs   rt   r   r<   r   r   ZManyToManyFieldr  Zadvertsr  r  Zblog_categoriesrG   settings_panelsr   rn   rn   rn   ro   r  \  s   
r  c                   @   s.   e Zd ZdZeddZejeddej	dZ
dS )OneToOnePagez+
    A Page containing a O2O relation.
    Tr_   rb   )Zparent_linkrd   re   N)rr   rs   rt   r   r'   r   r   OneToOneFieldrG   rx   Zpage_ptrrn   rn   rn   ro   r"  o  s
   

r"  c                   @   s<   e Zd ZdZejeejdddZej	dddZ
eddZdS )GenericSnippetPagez
    A page containing a reference to an arbitrary snippet (or any model for that matter)
    linked by a GenericForeignKey
    Tr  r   snippet_content_typesnippet_object_idN)rr   rs   rt   r   r   rw   r   r   r%  ZPositiveIntegerFieldr&  r   Zsnippet_content_objectrn   rn   rn   ro   r$  z  s   
r$  c                       s   e Zd Z fddZ  ZS )CustomImageFilePathc                    s   t  |}|tjj\}}| j }| jd t	
 }| jd}|sNqZ|| q<| }| j| tj||dd |S )a  Create a path that's file-system friendly.

        By hashing the file's contents we guarantee an equal distribution
        of files within our root directories. This also gives us a
        better chance of uploading images with the same filename, but
        different contents - this isn't guaranteed as we're only using
        the first three characters of the checksum.
        r      Nr  )r   get_upload_torY  ospathsepr  tellseekhashlibsha256readrd  	hexdigestrZ  )rm   filenameZoriginal_filepathZfolder_nameZoriginal_positionZhash256rT  Zchecksumr   rn   ro   r)    s    	
z!CustomImageFilePath.get_upload_to)rr   rs   rt   r)  r   rn   rn   r   ro   r'    s   r'  c                   @   s   e Zd Zdd ZdS )CustomPageQuerySetc                 C   s   | j ddS )NZspam)Ztitle__contains)r^  rl   rn   rn   ro   
about_spam  s    zCustomPageQuerySet.about_spamN)rr   rs   rt   r5  rn   rn   rn   ro   r4    s   r4  c                   @   s   e Zd Ze ZdS )CustomManagerPageN)rr   rs   rt   r  rW  rn   rn   rn   ro   r6    s   r6  c                   @   s$   e Zd ZdZe ZG dd dZdS )
MyBasePagezJ
    A base Page model, used to set site-wide defaults and overrides.
    c                   @   s   e Zd ZdZdS )zMyBasePage.MetaTNrq   rn   rn   rn   ro   ru     s   ru   N)rr   rs   rt   r   r  rW  ru   rn   rn   rn   ro   r7    s   r7  c                   @   s   e Zd ZdS )MyCustomPageNr   rn   rn   rn   ro   r8    s   r8  c                   @   s,   e Zd ZejddZeZej	e
dg Z	dS )ValidatedPager~   r   fooN)rr   rs   rt   r   r   r:  rU   r   rG   r   r   rn   rn   rn   ro   r9    s
   r9  c                   @   s&   e Zd Ze ZedddedgZdS )DefaultRichTextFieldPager   r   r   Nrr   rs   rt   r<   r   r   r   rn   rn   rn   ro   r;    s   
r;  c                   @   s,   e Zd Zede fgZejedg ZdS )DefaultRichBlockFieldPager  r   N)	rr   rs   rt   r=   r'   r   rG   r   r   rn   rn   rn   ro   r=    s
   r=  c                   @   s*   e Zd ZeddZedddedgZdS )CustomRichTextFieldPagecustomZeditorr   r   r   Nr<  rn   rn   rn   ro   r>    s   

r>  c                   @   s4   e Zd ZededdfgZedddedgZdS )CustomRichBlockFieldPager  r?  r@  r   r   r   N)rr   rs   rt   r=   r'   r   r   r   rn   rn   rn   ro   rA    s   
rA  c                   @   s.   e Zd Zeg ddZedddedgZdS )RichTextFieldWithFeaturesPage)Z	quotationembedzmade-up-feature)featuresr   r   r   Nr<  rn   rn   rn   ro   rB    s   
rB  c                   @   s,   e Zd ZeddejdZe Ze	dgZ
dS )SectionedRichTextPageSectionztests.SectionedRichTextPagesectionsr   r   N)rr   rs   rt   r   r   rx   r   r<   r   r   rz   rn   rn   rn   ro   rE     s
   rE  c                   @   s    e Zd ZedddedgZdS )SectionedRichTextPager   r   rF  Nrr   rs   rt   r   r   r   rn   rn   rn   ro   rG  	  s   
rG  c                   @   sF   e Zd ZeddejdZede fde	 fde
 fgZedgZdS )	InlineStreamPageSectionztests.InlineStreamPagerF  r   r  r  r   r   N)rr   rs   rt   r   r   rx   r   r=   r#   r'   r@   r   r   rz   rn   rn   rn   ro   rI    s   rI  c                   @   s    e Zd ZedddedgZdS )InlineStreamPager   r   rF  NrH  rn   rn   rn   ro   rJ    s   
rJ  c                   @   s&   e Zd Zede fgZedgZdS )TableBlockStreamPagetableN)rr   rs   rt   r=   r7   rL  r   r   rn   rn   rn   ro   rK  %  s   rK  c                   @   s*   e Zd ZejejejdZej	ddZ
dS )UserProfiler   r~   r   N)rr   rs   rt   r   r#  r   rf  rx   rJ  r   Zfavourite_colourrn   rn   rn   ro   rM  +  s   rM  c                   @   s   e Zd ZedgZdS )PanelSiteSettingsr   Nrr   rs   rt   r   rz   rn   rn   rn   ro   rN  1  s   rN  c                   @   s   e Zd ZedgZdS )PanelGenericSettingsr   NrO  rn   rn   rn   ro   rP  5  s   rP  c                   @   s4   e Zd ZeeedgddeedgddgZdS )TabbedSiteSettingsr   	First tabr  re  
Second tabNrr   rs   rt   r"   r    r   r  rn   rn   rn   ro   rQ  9  s
   rQ  c                   @   s4   e Zd ZeeedgddeedgddgZdS )TabbedGenericSettingsr   rR  r  re  rS  NrT  rn   rn   rn   ro   rU  B  s
   rU  c                   @   s   e Zd ZdZdS )AlwaysShowInMenusPageTN)rr   rs   rt   Zshow_in_menus_defaultrn   rn   rn   ro   rV  K  s   rV  c                   @   s   e Zd Zede fgZdS )"AddedStreamFieldWithoutDefaultPager   Nrr   rs   rt   r=   r#   r   rn   rn   rn   ro   rW  P  s   rW  c                   @   s    e Zd Zede fgddZdS )*AddedStreamFieldWithEmptyStringDefaultPager   r  r  NrX  rn   rn   rn   ro   rY  T  s   rY  c                   @   s    e Zd Zede fgg dZdS )(AddedStreamFieldWithEmptyListDefaultPager   r  NrX  rn   rn   rn   ro   rZ  X  s   rZ  c                   @   s6   e Zd Ze Ze Zeje	de	dddg ZdS )
SecretPageboring_datasecret_dataZ	superuserr	  N)
rr   rs   rt   r   r   r\  r]  rG   r   r   rn   rn   rn   ro   r[  \  s   
r[  c                   @   s   e Zd ZdgZdS )SimpleParentPageztests.SimpleChildPageNr   rn   rn   rn   ro   r^  f  s   r^  c                   @   s   e Zd ZdgZdZdS )SimpleChildPageztests.SimpleParentPagerS   N)rr   rs   rt   r  Zmax_count_per_parentrn   rn   rn   ro   r_  j  s   r_  c                   @   sP   e Zd ZejdddZejdddZeje	ddgddd	g ZG d
d dZ
dS )
PersonPager~   z
First Namer   ro  z	Last Namer   r   Personr\  social_linksc                   @   s   e Zd ZdZdZdS )zPersonPage.Metarb  ZPersonsNr  rn   rn   rn   ro   ru     s   ru   N)rr   rs   rt   r   r   r   r   rG   r   r   ru   rn   rn   rn   ro   r`  p  s&   r`  c                   @   sR   e Zd Zejdd dZedddZedddd	Z	e
d
e
dgZG dd dZdS )Addressr~   ra  ztests.AddressTagTr  tests.PersonPager\  rb  tord   ro  addressr  c                   @   s   e Zd ZdZdZdS )zAddress.Metard  Z	AddressesNr  rn   rn   rn   ro   ru     s   ru   N)rr   rs   rt   r   r   rh  r   r  r   personr   rz   ru   rn   rn   rn   ro   rd    s   rd  c                   @   s   e Zd ZedejddZdS )
AddressTagztests.Addressr  rg  re   rd   Nr  rn   rn   rn   ro   rj    s   rj  c                   @   sJ   e Zd Ze ZejdddgdZeddddZ	d	d
gZ
G dd dZdS )
SocialLink   )ZtwitterZTwitter)ZfacebookZFacebookr   re  rc  rb  rf  ri   kindc                   @   s   e Zd ZdZdZdS )zSocialLink.MetazSocial linkzSocial linksNr  rn   rn   rn   ro   ru     s   ru   N)rr   rs   rt   r   rv   ri   r   rn  r   ri  rz   ru   rn   rn   rn   ro   rl    s   rl  c                   @   s(   e Zd ZedddZejedg ZdS )RestaurantPageztests.TaggedRestaurantTr  r  N)rr   rs   rt   r   r  rG   r   r   rn   rn   rn   ro   ro    s   ro  c                   @   s   e Zd ZdZG dd dZdS )RestaurantTagFc                   @   s   e Zd ZdZdZdS )zRestaurantTag.MetaTagZTagsNr  rn   rn   rn   ro   ru     s   ru   N)rr   rs   rt   Zfree_taggingru   rn   rn   rn   ro   rp    s   rp  c                   @   s.   e Zd ZejedejdZedejddZ	dS )TaggedRestaurantZtagged_restaurantsr   ztests.RestaurantPager  rk  N)
rr   rs   rt   r   rw   rp  rx   r  r   r   rn   rn   rn   ro   rr    s   rr  c                   @   s   e Zd ZdS )
SimpleTaskNr   rn   rn   rn   ro   rs    s   rs  c                   @   s   e Zd Zedd ZdS )DeadlyTextInputc                 C   s   t dd S )Nz1BOOM! Attempted to evaluate DeadlyTextInput.media)	Exceptionrl   rn   rn   ro   media  s    zDeadlyTextInput.mediaN)rr   rs   rt   ry   rv  rn   rn   rn   ro   rt    s   rt  c                       s   e Zd Z fddZ  ZS )DeadlyCharBlockc                    s&   t jt d| _t j|i | d S )N)r+  )r   r   rt  rw  r   r,  )rm   r0  r1  r   rn   ro   r,    s    zDeadlyCharBlock.__init__r3  rn   rn   r   ro   rw    s   rw  c                   @   s,   e Zd Zede fgZejedg ZdS )DeadlyStreamPager   r   N)	rr   rs   rt   r=   rw  r   rG   r   r   rn   rn   rn   ro   rx    s   rx  c                   @   s0   e Zd ZejedejdZejdejddZdS )TaggedRestaurantDocumentZtagged_documentsr   ztests.CustomRestaurantDocumentr  rk  N	rr   rs   rt   r   rw   rp  rx   r  r   rn   rn   rn   ro   ry    s   ry  c                   @   s"   e Zd ZedddedZejZdS )CustomRestaurantDocumentNTr  r   r`   ro  r  )rr   rs   rt   r   ry  r  r;   r  rn   rn   rn   ro   r{  	  s   r{  c                   @   s0   e Zd ZejedejdZejdejddZdS )TaggedRestaurantImageZtagged_imagesr   ztests.CustomRestaurantImager  rk  Nrz  rn   rn   rn   ro   r}  	  s   r}  c                   @   s"   e Zd ZedddedZejZdS )CustomRestaurantImageNTr  r|  )rr   rs   rt   r   r}  r  rC   r  rn   rn   rn   ro   r~  	  s   r~  c                   @   s*   e Zd ZdZejdddZejddZdS )ModelWithStringTypePrimaryKeyzY
    This model intentionally uses `CharField` as a primary key for testing purpose.
    r~   Tr  r   N)rr   rs   rt   r   r   r   r   r   rn   rn   rn   ro   r  #	  s   r  c                   @   s$   e Zd ZdZeedddZe ZdS )ModelWithNullableParentalKeyz
    There's not really a valid use case for null parental keys, but their presence should not
    break things outright (e.g. when determining the object ID to store things under in the
    references index).
    T)r`   rc   N)	rr   rs   rt   r   r   rG   r   r<   r   rn   rn   rn   ro   r  ,	  s   r  c                   @   s"   e Zd Zejeddddg ZdS )GalleryPagegallery_imageszGallery imagesr   )r   Zchooser_field_nameN)rr   rs   rt   rG   r   r   rn   rn   rn   ro   r  7	  s
   r  c                   @   s.   e Zd ZeddejdZejdejddZdS )GalleryPageImageztests.GalleryPager  r   r|   rb   r   N)	rr   rs   rt   r   r   rx   r   rw   r   rn   rn   rn   ro   r  ?	  s   r  c                   @   s   e Zd ZdZdS )GenericSnippetNoIndexPageTN)rr   rs   rt   wagtail_reference_index_ignorern   rn   rn   ro   r  J	  s   r  c                   @   s&   e Zd ZejeejdddZde_dS )GenericSnippetNoFieldIndexPageTr  N)	rr   rs   rt   r   rw   r   r   Zsnippet_content_type_nonindexedr  rn   rn   rn   ro   r  N	  s   
r  c                     s.   d} | t jt jf d fddtdD S )Nz":/_#?;@&=+$,"[]<>%
\r  c                 3   s$   | ]}t  |t   V  qd S rg   )randomchoicer  )rM  i
componentsrn   ro   	<genexpr>X	  rP  z%random_quotable_pk.<locals>.<genexpr>
   )stringascii_lettersdigitsrZ  range)Z
quote_chrsrn   r  ro   random_quotable_pkU	  s    r  c                   @   sz   e Zd ZejddedZejddZeje	j
jdZededededgZdd	 Zd
d ZG dd dZdS )FeatureCompleteToyr~   T)r   r   r   r   r  rZ   release_datec                 C   s>   | j | j d d d krdS | j   }|d d d kr:d S dS )Nr&  TF)rZ   lower)rm   Zloweredrn   rn   ro   is_cooll	  s
    zFeatureCompleteToy.is_coolc                 C   s   | j  d| j dS )Nz ())rZ   r  rl   rn   rn   ro   r   s	  s    zFeatureCompleteToy.__str__c                   @   s   e Zd ZdgZdS )zFeatureCompleteToy.Meta)Zcan_set_release_datezCan set release dateNr   rn   rn   rn   ro   ru   v	  s   ru   N)rr   rs   rt   r   r   r  ZstridrZ   r   datetimedatetodayr  rP   r   r  r   r   r  r   ru   rn   rn   rn   ro   r  \	  s   r  c                   @   s   e Zd ZejdejddZdS ) PurgeRevisionsProtectedTestModelr  rb   r   N)rr   rs   rt   r   r#  r  revisionrn   rn   rn   ro   r  z	  s   r  c                   @   s8   e Zd ZejddZe ZededgZ	dd Z
dS )SearchTestModelr~   r   r   r   c                 C   s   | j S rg   )r   rl   rn   rn   ro   r   	  s    zSearchTestModel.__str__N)rr   rs   rt   r   r   r   r   r   r   rz   r   rn   rn   rn   ro   r  	  s   r  c                   @   s   e Zd Zdd ZdS )CustomPermissionTesterc                 C   s   dS )NFrn   rl   rn   rn   ro   can_view_revisions	  s    z)CustomPermissionTester.can_view_revisionsN)rr   rs   rt   r  rn   rn   rn   ro   r  	  s   r  c                   @   s   e Zd Zdd ZdS )CustomPermissionPagec                 C   s
   t || S rg   )r  )rm   rJ  rn   rn   ro   permissions_for_user	  s    z)CustomPermissionPage.permissions_for_userN)rr   rs   rt   r  rn   rn   rn   ro   r  	  s   r  c                   @   s&   e Zd ZejddZG dd dZdS )CustomPermissionModelZTailwagr  c                   @   s    e Zd ZdZdZdZg dZdS )zCustomPermissionModel.MetazADVANCED permission modelzADVANCED permission models)addZchangedeleteviewZbulk_update))Zcan_start_troublezCan start trouble)Zcause_chaosz)Cause chaos for advanced permission model)Zchange_textzChange text)controlzManage custom permission modelN)rr   rs   rt   ro  r  Zdefault_permissionsr   rn   rn   rn   ro   ru   	  s   	ru   N)rr   rs   rt   r   r   r  ru   rn   rn   rn   ro   r  	  s   r  (:  r  r/  r*  r  r  r  Zdjangor   Zdjango.confr   Z"django.contrib.contenttypes.fieldsr   r   Z"django.contrib.contenttypes.modelsr   Zdjango.core.exceptionsr   Zdjango.core.paginatorr   r	   r
   Z	django.dbr   Zdjango.shortcutsr   Zdjango.template.responser   Zdjango.utils.translationr   r.  Zmodelcluster.contrib.taggitr   Zmodelcluster.fieldsr   r   Zmodelcluster.modelsr   Ztaggit.managersr   Ztaggit.modelsr   r   r   Zwagtail.adminr   Zwagtail.admin.formsr   Zwagtail.admin.forms.pagesr   Zwagtail.admin.mailr   Zwagtail.admin.panelsr   r   r   r   r   r    r!   r"   Zwagtail.blocksr#   r$   r%   r&   r'   r(   r)   Zwagtail.compatr*   Zwagtail.contrib.forms.formsr+   r,   Zwagtail.contrib.forms.modelsr-   r.   r/   r0   Zwagtail.contrib.forms.panelsr1   Zwagtail.contrib.forms.viewsr2   Zwagtail.contrib.settings.modelsr3   r4   r5   Zwagtail.contrib.sitemapsr6   Z"wagtail.contrib.table_block.blocksr7   Zwagtail.documentsr8   Zwagtail.documents.blocksr9   Zwagtail.documents.modelsr:   r;   Zwagtail.fieldsr<   r=   Zwagtail.imagesr>   Zwagtail.images.blocksr?   r@   Zwagtail.images.modelsrA   rB   rC   Zwagtail.modelsrD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   Zwagtail.searchrP   Zwagtail.snippets.blocksrQ   Zwagtail.snippets.modelsrR   rT   rU   r   r   r   ZModelr^   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r$  r4  r5  r6  r7  r;  r=  rb  rG  rg  rh  rs  rl  rt  rm  r{  r~  r  r  ZIndexedr  r  Managerr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r!  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r$  r'  r4  Zfrom_querysetr6  r7  r8  r9  r;  r=  r>  rA  rB  rE  rG  rI  rJ  rK  rM  rN  rP  rQ  rU  rV  rW  rY  rZ  r[  r^  r_  r`  rd  rj  rl  ro  rp  rr  rs  Z	TextInputrt  rw  rx  ZReimportedImageModelZReimportedDocumentModelry  r{  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  rn   rn   rn   ro   <module>   s*  (
$	8

'		!H 7 )V(
		

IX	

	+		
				
		