U
    |h                     @   s  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lFmGZGmHZHmIZImJZJ d dlKmLZL d dlMmNZN d dlOmPZPmQZQmRZR d dlSmTZT d dlUmVZV d dlWmXZX d dlYmZZZ d d l[m\Z\m]Z] d d!l^m_Z_m`Z` d d"lambZb d d#lcmdZd d d$lemfZfmgZgmhZh d d%limjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZu d d&lvmwZw d d'lxmyZy d d(lzm{Z{ d)d*lm|Z|m}Z} d+ed,fd-ed.ffZ~e4d/e4d0e4d1e4d2fZG d3d4 d4ejZG d5d6 d6eZG d7d8 d8eZG d9d: d:emZG d;d< d<emZG d=d> d>emZG d?d@ d@ejZG dAdB dBemZG dCdD dDemZG dEdF dFemZG dGdH dHeteleZG dIdJ dJeteleZG dKdL dLetelejZG dMdN dNetelee$ZG dOdP dPetejZG dQdR dRe.ZG dSdT dTemZG dUdV dVejZG dWdX dXemZG dYdZ dZeZG d[d\ d\eTZG d]d^ d^emZG d_d` d`eIZG dadb dbeHZG dcdd dde0ZG dedf dfeIZG dgdh dheHZG didj djeIZG dkdl dleHZG dmdn dneHZG dodp dpeIZG dqdr dreJZG dsdt dteIZG dudv dveHZeGdw ZG dxdy dyeIZG dzd{ d{eEZG d|d} d}eHZG d~d dejZG dd de*ZG dd de$Ze{e G dd de$Ze{e G dd de$Ze{e G dd dejZe{e G dd dejZG dd dejZe{e G dd derejZG dd deZG dd deZG dd dejekerejZG dd dejerejZe{e G dd deqe$Ze{e G dd deqerejZe{e G dd deqerejZe{e G dd dekejZe{e G dd deuejerejZG dd deqeuejekeretewjej
Zdd ZG dd dejZG dd demZG dd demZe;e9ejdde9ejdde9ejdde9e5dgddge.de_G dd demZG dd demZG dd demZG dd demZG dd demZG dd de*ZG dd demZG dd deʃZG ddĄ de˃ZG ddƄ demZG ddȄ demZG ddʄ dejZG dd̄ dejZG dd΄ dejZG ddЄ dejZG dd҄ defZG ddԄ degZG ddք defZG dd؄ degZG ddڄ de\ZG dd܄ de\ZG ddބ dejZG dd dejZG dd dejZG dd dedZG dd demZG dd demZG dd demZG dd demZG dd deZG dd demZeRG dd deQZeRG dd dePZeRG dd dePZeRG dd deQZeRG dd deQZeRddG dd dePZeRdd G dd deQZeRdd G dd dePZG dd deQZG dd dePZeRG d	d
 d
eQZeRG dd dePZG dd dejZG dd dejZG dd demZG dd demZG dd demZG dd defZG dd depZeneZG dd demZG dd demZG dd  d eZG d!d" d"emZG d#d$ d$emZG d%d& d&emZG d'd( d(emZG d)d* d*emZG d+d, d,emZG d-d. d.elZ G d/d0 d0emZG d1d2 d2elZG d3d4 d4emZG d5d6 d6emZG d7d8 d8ejZG d9d: d:eZG d;d< d<eZG d=d> d>eZG d?d@ d@eZ	G dAdB dBemZ
G dCdD dDemZG dEdF dFemZG dGdH dHemZG dIdJ dJemZG dKdL dLemZG dMdN dNemZG dOdP dPemZG dQdR dRewje$elZG dSdT dTe*ZG dUdV dVewje$ZG dWdX dXemZG dYdZ dZe)ZG d[d\ d\e(ZG d]d^ d^esZG d_d` d`ejZG dadb dbe>ZG dcdd ddemZeb ZeX ZG dedf dfe(ZG dgdh dhe\Z G didj dje(Z!G dkdl dlefZ"G dmdn dnejZ#G dodp dpejZ$G dqdr dremZ%G dsdt dtelZ&G dudv dveZ'G dwdx dxeZ(dydz Z)G d{d| d|ewjejZ*G d}d~ d~ejZ+G dd dejZ,G dd deoZ-G dd demZ.G dd dejZ/e{e/ 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)FormBuilder)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)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_descriptionc                   @   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+)nullrY   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 rg   c/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/test/testapp/models.pylink|   s
    zLinkFields.linkrd   ra   rc   c                   @   s   e Zd ZdZdS )zLinkFields.MetaTN__name__
__module____qualname__Zabstractrg   rg   rg   rh   Meta   s   rn   N)rk   rl   rm   r   URLFieldrd   
ForeignKeyCASCADEra   rc   propertyri   r   panelsrn   rg   rg   rg   rh   rW   k   s,   
	rW   c                   @   sl   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
ed	ed
edeejdgZG dd dZdS )CarouselItemwagtailimages.ImageTr[   r\   rY   r^   r]   z	Embed URLrX      
max_lengthrY   image	embed_urlcaptionLinkc                   @   s   e Zd ZdZdS )zCarouselItem.MetaTNrj   rg   rg   rg   rh   rn      s   rn   N)rk   rl   rm   r   rp   SET_NULLrz   ro   r{   	CharFieldr|   r   r   rW   rs   rn   rg   rg   rg   rh   rt      s   
rt   c                   @   s<   e Zd ZejdddZedeej	dgZ	G dd dZ
dS )	RelatedLinkrw   z
Link title)ry   	help_texttitler}   c                   @   s   e Zd ZdZdS )zRelatedLink.MetaTNrj   rg   rg   rg   rh   rn      s   rn   N)rk   rl   rm   r   r   r   r   r   rW   rs   rn   rg   rg   rg   rh   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_titlere   	__class__rg   rh   r      s    z"SimplePage.get_admin_display_title)rk   rl   rm   r   	TextFieldr   page_descriptionr   content_panelsr   __classcell__rg   rg   r   rh   r      s   
r   c                       s8   e Zd ZdZedd Zedd Z fddZ  ZS )MultiPreviewModesPagetests/simple_page.htmlc                 C   s   ddgS )N)originalZOriginalalt#1Z	Alternaterg   re   rg   rg   rh   preview_modes   s    z#MultiPreviewModesPage.preview_modesc                 C   s   dS Nr   rg   re   rg   rg   rh   default_preview_mode   s    z*MultiPreviewModesPage.default_preview_modec                    s   |dkrdS t  ||S )Nr   ztests/simple_page_alt.html)r   get_preview_templaterf   request	mode_namer   rg   rh   r      s    z*MultiPreviewModesPage.get_preview_template)	rk   rl   rm   templaterr   r   r   r   r   rg   rg   r   rh   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 )
PageWithExcludedCopyFieldTrw   zVery Special)rY   ry   defaultspecial_fieldr   r   r   N)rk   rl   rm   r   r   r   r   r   Zexclude_fields_in_copyr   r   rg   rg   rg   rh   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r^   content_type	object_idN)rk   rl   rm   r   rp   r   rq   r   ZPositiveBigIntegerFieldr   r   content_objectrg   rg   rg   rh   r      s   r   c                   @   s   e Zd ZedZdS )PageWithGenericRelationztests.RelatedGenericRelationN)rk   rl   rm   r   Zgeneric_relationrg   rg   rg   rh   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 r`   )serverf   r   Zpath_componentsrg   rg   rh   route   s    z!PageWithOldStyleRouteMethod.routeN)	rk   rl   rm   __doc__r   r   r   r   r   rg   rg   rg   rh   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)	rk   rl   rm   r   	FileFieldr   r   r   r   rg   rg   rg   rh   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r]   r^   c                   @   s   e Zd ZdS )zEventPageCarouselItem.MetaNrk   rl   rm   rg   rg   rg   rh   rn     s   rn   N
rk   rl   rm   r   r   rq   pagerK   rn   rC   rg   rg   rg   rh   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   rg   rg   rg   rh   rn     s   rn   Nr   rg   rg   rg   rh   r     s     r   c                   @   s^   e Zd ZeddejdZejdddZej	dddZ
ed	ed
gZG dd dejejZdS )EventPageSpeakerAwardztests.EventPageSpeakerawardsr   z
Award namerw   ry   Tr\   rY   namedate_awardedc                   @   s   e Zd ZdS )zEventPageSpeakerAward.MetaNr   rg   rg   rg   rh   rn   )  s   rn   N)rk   rl   rm   r   r   rq   speakerr   r   	DateFieldr   r   rs   rK   rn   rC   rg   rg   rg   rh   r     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edededeejdedddgZG dd dejejZdS )EventPageSpeakerr   speakersr   )r]   related_query_namer^   Namerw   Trx   ZSurnameru   r[   rv   c                 C   s   | j d | j S )N )
first_name	last_namere   rg   rg   rh   name_display>  s    zEventPageSpeaker.name_displayr   r   rz   r}   r   ZAwardslabelc                   @   s   e Zd ZdS )zEventPageSpeaker.MetaNr   rg   rg   rg   rh   rn   J  s   rn   N)rk   rl   rm   r   r   rq   r   r   r   r   rp   r~   rz   rr   r   r   r   rW   rs   r   rK   rn   rC   rg   rg   rg   rh   r   -  s0   


r   c                   @   s"   e Zd ZejdddZdd ZdS )EventCategoryr   rw   r   c                 C   s   | j S r`   r   re   rg   rg   rh   __str__Q  s    zEventCategory.__str__N)rk   rl   rm   r   r   r   r   rg   rg   rg   rh   r   N  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   )rf   cleaned_dataZ
start_dateend_dater   rg   rh   r   Z  s    
zEventPageForm.clean)rk   rl   rm   r   r   rg   rg   r   rh   r   Y  s   r   c                   @   sz  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e!de!de!de!de!de!ddde!de!d e"d!d"d#e!de"d$d%d&d'd(e"d)d*d#e!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)r\   zEnd datez(Not required if event is on a single day)r\   rY   r   z
Start timer   zEnd timerw   ry   choicesr   rX   ru   r[   rv   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Speakersz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rk   rl   rm   permissionsrg   rg   rg   rh   rn     s   rn   N)(rk   rl   rm   r   r   r   r   Z	TimeFieldr   r   r   EVENT_AUDIENCE_CHOICESr   r   r:   r   r   ro   r   rp   r~   r   r   r   r   rD   search_fieldsrM   SearchFieldFilterFieldZpassword_required_templater   base_form_classr   r   r   r   COMMON_PANELSpromote_panelsrn   rg   rg   rg   rh   r   f  sv   





  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   r^   r]   
head_countN)rk   rl   rm   r   r   Z	AutoField	custom_idr   r   rq   Z
event_pageIntegerFieldr   r   rs   rg   rg   rg   rh   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 )FormClassAdditionalFieldPagerw   r   TrX   r   r   r   r   codeN)rk   rl   rm   r   r   r   r:   r   r   r   rQ   r   rg   rg   rg   rh   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 )SingleEventPagerw   Tz0Short text to describe what is this action about)ry   rY   r\   r   Nc                    s6   t  j|d}|d krd S |\}}}|||d fS d S )Nr   zpointless-suffix/)r   get_url_parts)rf   r   Z	url_partsZsite_idZroot_urlZ	page_pathr   rg   rh   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   rg   rh   r     s    
zSingleEventPage.routec                    s   dt    S )Nz%s (single event)r   re   r   rg   rh   r     s    z'SingleEventPage.get_admin_display_titleexcerpt)N)rk   rl   rm   r   r   r   r   r   r   r   r   r   r   rg   rg   r   rh   r     s   r   c                   @   s   e Zd ZdS )EventSitemapNr   rg   rg   rg   rh   r     s   r   c                       sx   e Zd ZedddZd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   )rY   ry   z!tests/includes/event_listing.htmlc                 C   s   |    tS r`   )Zget_childrenlivetyper   re   rg   rg   rh   
get_events  s    zEventIndex.get_eventsc                 C   s   t |  dS )N   )r
   r   re   rg   rg   rh   get_paginator  s    zEventIndex.get_paginatorrP   c                    sl   |   }z||}W n< tk
r4   |d}Y n  tk
rR   ||j}Y nX t |}||d< |S )NrP   events)r   r   r	   r   Z	num_pagesr   get_context)rf   r   r   Z	paginatorr   contextr   rg   rh   r     s    zEventIndex.get_contextc              	      sR   | j rDt|dkrDz| j|t|d dW S  ttfk
rB   Y nX t ||S )NrP   r   )r   )r   lenr   int	TypeError
ValueErrorr   r   r   r   rg   rh   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)rf   r   r   rg   rh   r    s
    zEventIndex.get_sitemap_urlsc                    s   t   dg S )Nz/past/)r   get_cached_pathsre   r   rg   rh   r    s    zEventIndex.get_cached_pathsr   r   intro)rP   )N)rk   rl   rm   r:   r	  Zajax_templater   r   r   r   r  r  r   r   r   rg   rg   r   rh   r     s   		
r   c                   @   s   e Zd ZeddejdZdS )	FormFieldFormPageform_fieldsr   Nrk   rl   rm   r   r   rq   r   rg   rg   rg   rh   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   rf   r   r  r   rg   rh   r   (  s    zFormPage.get_contextr   r   r  Form fieldsr   
to_addressfrom_addresssubjectEmail)rk   rl   rm   r   r0   Zsubmissions_list_view_classr   r   r   r/   r   r   rg   rg   r   rh   r  '  s   


r  c                       s   e Zd Z fddZ  ZS )CustomCopyFormc                    s   t  j|| d}| j }| jjrjz(t| jjd d }| jjd d }W n tk
rh   | jj}Y nX |d|  }t||s|d7 }| d| }| qxt	t
dd}tj|td|tjjd	| jd
< d S )N   rP   -ZWAGTAIL_ALLOW_UNICODE_SLUGSTzNew slug)initialr   allow_unicodewidgetZnew_slug)r   __init__r   Z
get_parentrU   r  r  rD   Z_slug_is_availablegetattrr   r   Z	SlugField_r   Z	SlugInputfields)rf   argskwargssuffixZparent_pageZ	base_slugZcandidate_slugr  r   rg   rh   r  G  s*    
zCustomCopyForm.__init__rk   rl   rm   r  r   rg   rg   r   rh   r  F  s   r  c                   @   s   e Zd ZeddejdZdS )JadeFormFieldJadeFormPager  r   Nr  rg   rg   rg   rh   r&  f  s
     r&  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 )r'  ztests/form_page.jader   r   r  r  r   r  r  r  r  N)rk   rl   rm   r   r   r   r   r   rg   rg   rg   rh   r'  l  s   

r'  c                   @   s   e Zd ZeddejdZdS )RedirectFormFieldFormPageWithRedirectr  r   Nr  rg   rg   rg   rh   r(    s
     r(  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 )r)  rZ   Tr[   rv   c                    s   t  |}d|d< |S r  r  r  r   rg   rh   r     s    z FormPageWithRedirect.get_contextNc                    s,   | j rt| j jddS t j||f||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   rb   r   render_landing_page)rf   r   form_submissionr"  r#  r   rg   rh   r+    s    z(FormPageWithRedirect.render_landing_pager   r   r*  r  r  r   r  r  r  r  )N)rk   rl   rm   r   rp   r~   r*  r   r+  r   r   r   r   r   rg   rg   r   rh   r)    s(   


r)  c                	       s   e Zd ZdZeddZedd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   
    This Form page:
        * Have custom submission model
        * Have custom related_name (see `FormFieldWithCustomSubmission.page`)
        * Saves reference to a user
        * Doesn't render html form, if submission for current user is present
    TrX   c                    s   t  |}d|d< |S r  r  )rf   r   r"  r#  r  r   rg   rh   r     s    z(FormPageWithCustomSubmission.get_contextc                 C   s
   | j  S r`   )custom_form_fieldsallre   rg   rg   rh   get_form_fields  s    z,FormPageWithCustomSubmission.get_form_fieldsc                    s   dg}|t   7 }|S N)	useremailz
User emailr   get_data_fieldsrf   Zdata_fieldsr   rg   rh   r4    s    z,FormPageWithCustomSubmission.get_data_fieldsc                 C   s   t S r`   CustomFormPageSubmissionre   rg   rg   rh   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 rg   )strip.0xrg   rg   rh   
<listcomp>  s     zHFormPageWithCustomSubmission.process_form_submission.<locals>.<listcomp>,
c                    s.   g | ]&}|d  j d t j|d  qS )rP   z: r   )r   strdatagetr<  formrg   rh   r?    s   )r8  objectscreater   r:  r  splitjoinr!  itemsr   r  r  )rf   rF  r,  	addressesr   rg   rE  rh   process_form_submission  s&    

z4FormPageWithCustomSubmission.process_form_submissionc                    sD   |   jj| |jjd r0t|| j| |S t	 j
|f||S )N)r   Zuser__pk)r8  rG  filterr:  pkexistsr   r   r   r   r   )rf   r   r"  r#  r   rg   rh   r     s    
 z"FormPageWithCustomSubmission.server   r   r	  r.  r  r   thank_you_textr  r  r  r  )rk   rl   rm   r   r:   r	  rQ  r   r0  r4  r8  rM  r   r   r   r   r   r   rg   rg   r   rh   r-    s*   



r-  c                   @   s   e Zd ZeeejddZdS )FormFieldWithCustomSubmissionr.  r   N)rk   rl   rm   r   r-  r   rq   r   rg   rg   rg   rh   rR    s
   rR  c                       s.   e Zd ZejejejdZ fddZ	  Z
S )r7  r   c                    s    t   }|d| jji |S )Nr2  )r   get_dataupdater:  email)rf   r9  r   rg   rh   rS    s    
 z!CustomFormPageSubmission.get_data)rk   rl   rm   r   rp   r   AUTH_USER_MODELrq   r:  rS  r   rg   rg   r   rh   r7  	  s   r7  c                   @   s   e Zd ZeddejdZdS )FormFieldForCustomListViewPage$FormPageWithCustomSubmissionListViewr  r   Nr  rg   rg   rg   rh   rW    s
   rW  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 )rX  z2Form Page with customised submissions listing viewTrX   c                 C   s   ddl m} |S )NrP   )CustomSubmissionsListView)ZviewsrY  )rf   rY  rg   rg   rh   get_submissions_list_view_class(  s    zDFormPageWithCustomSubmissionListView.get_submissions_list_view_classc                 C   s   t S r`   r6  re   rg   rg   rh   r8  -  s    z9FormPageWithCustomSubmissionListView.get_submission_classc                    s   dg}|t   7 }|S r1  r3  r5  r   rg   rh   r4  0  s    z4FormPageWithCustomSubmissionListView.get_data_fieldsr   r   r	  r  r  r   rQ  r  r  r  r  )rk   rl   rm   r   r:   r	  rQ  rZ  r8  r4  r   r   r   r   r   rg   rg   r   rh   rX  "  s$   

	

rX  ))	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_namery   r   c                    s0   t   }| jdkrd| S d| jkr,dS |S )Nnumberznumber_field--Z	duplicateztest duplicate)r   get_field_clean_name
field_typer   )rf   Z
clean_namer   rg   rh   ra  \  s    



z&ExtendedFormField.get_field_clean_name)rk   rl   rm   r   r   r   rq   r   r   EXTENDED_CHOICESrb  ra  r   rg   rg   r   rh   r\  M  s     r\  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 |S )Nx   ry   )r   r   rf   fieldoptionsrg   rg   rh   create_singleline_fieldp  s    z)CustomFormBuilder.create_singleline_fieldc                 C   s   t jf |S r`   )r   ZGenericIPAddressFieldrf  rg   rg   rh   create_ipaddress_fieldt  s    z(CustomFormBuilder.create_ipaddress_fieldN)rk   rl   rm   r   ri  rj  rg   rg   rg   rh   rd  j  s   rd  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 )r]  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)
rk   rl   rm   r   rd  Zform_builderr   r   r   r   rg   rg   rg   rh   r]  x  s   

r]  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 )	AdvertPlacementrZ   advert_placementsr   ztests.Advertr[   rw   r   N)rk   rl   rm   r   r   rq   r   rp   advertr   colourrg   rg   rg   rh   rk    s       rk  c                   @   s   e Zd ZeddejdZdS )	AdvertTagAdverttagged_itemsr   Nrk   rl   rm   r   r   rq   r   rg   rg   rg   rh   ro    s
     ro  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 )rp  Tr   rw   r   throughrY   rb   texttagsc                 C   s   | j S r`   ru  re   rg   rg   rh   r     s    zAdvert.__str__N)rk   rl   rm   r   ro   rb   r   ru  r   ro  rv  r   rs   r   rg   rg   rg   rh   rp    s   rp  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 )AdvertWithCustomPrimaryKeyrw   Try   r   r   r   rb   ru  c                 C   s   | j S r`   rw  re   rg   rg   rh   r     s    z"AdvertWithCustomPrimaryKey.__str__N)rk   rl   rm   r   r   	advert_idro   rb   ru  r   rs   r   rg   rg   rg   rh   rx    s   rx  c                   @   sP   e Zd Zejdej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 )AdvertWithCustomUUIDPrimaryKeyTF)r   r   editabler   rw   r   rb   ru  c                 C   s   | j S r`   rw  re   rg   rg   rh   r     s    z&AdvertWithCustomUUIDPrimaryKey.__str__N)rk   rl   rm   r   	UUIDFielduuiduuid4rz  ro   rb   r   ru  r   rs   r   rg   rg   rg   rh   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   rw   r   rb   ru  something_elserp  r   OtherzOther panels help text)r   r   zTop-level help textr   c                 C   s   | j S r`   rw  re   rg   rg   rh   r     s    z!AdvertWithTabbedInterface.__str__c                   @   s   e Zd ZdZdS )zAdvertWithTabbedInterface.Metarw  N)rk   rl   rm   Zorderingrg   rg   rg   rh   rn     s   rn   N)rk   rl   rm   r   ro   rb   r   ru  r  r   Zadvert_panelsZother_panelsr"   r    edit_handlerr   rn   rg   rg   rg   rh   r    s(   
  
r  c                   @   s   e Zd ZdS )CustomManagerNr   rg   rg   rg   rh   r    s   r  c                   @   s   e Zd Ze ZdS )ModelWithCustomManagerN)rk   rl   rm   r  Z	instancesrg   rg   rg   rh   r    s   r  c                   @   s   e Zd Ze ZdS )RevisableModelN)rk   rl   rm   r   r   ru  rg   rg   rg   rh   r    s   r  c                   @   s   e Zd ZejdddZdS )RevisableChildModelT )rY   r   N)rk   rl   rm   r   r   Zsecret_textrg   rg   rg   rh   r    s   r  c                   @   s   e Zd ZdS )RevisableGrandChildModelNr   rg   rg   rg   rh   r    s   r  c                   @   s   e Zd Ze Zdd ZdS )DraftStateModelc                 C   s   | j S r`   rw  re   rg   rg   rh   r     s    zDraftStateModel.__str__Nrk   rl   rm   r   r   ru  r   rg   rg   rg   rh   r    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 )	DraftStateCustomPrimaryKeyModelrw   Try  ru  first_published_atc                 C   s   | j S r`   rw  re   rg   rg   rh   r   $  s    z'DraftStateCustomPrimaryKeyModel.__str__N)rk   rl   rm   r   r   r   r   ru  r   r!   rs   r   rg   rg   rg   rh   r    s   r  c                   @   s0   e Zd Ze ZeeddZdd Z	dd Z
dS )PreviewableModelTrX   c                 C   s   | j S r`   rw  re   rg   rg   rh   r   0  s    zPreviewableModel.__str__c                 C   s   dS Ntests/previewable_model.htmlrg   r   rg   rg   rh   r   3  s    z%PreviewableModel.get_preview_templateN)rk   rl   rm   r   r   ru  r   r   r   r   r   rg   rg   rg   rh   r  ,  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 r`   rw  re   rg   rg   rh   r   =  s    zMultiPreviewModesModel.__str__c                 C   s   ddgS )N)r  ZNormalr   rg   re   rg   rg   rh   r   @  s    z$MultiPreviewModesModel.preview_modesc                 C   s   dS r   rg   re   rg   rg   rh   r   D  s    z+MultiPreviewModesModel.default_preview_modec                 C   s   ddd}| ||d S )Nr  z tests/previewable_model_alt.html)r  r   r  )rD  )rf   r   r   Z	templatesrg   rg   rh   r   H  s    z+MultiPreviewModesModel.get_preview_templateN)rk   rl   rm   r   r   ru  r   rr   r   r   r   rg   rg   rg   rh   r  :  s   

r  c                   @   s    e Zd Ze Zdd Zg ZdS )NonPreviewableModelc                 C   s   | j S r`   rw  re   rg   rg   rh   r   V  s    zNonPreviewableModel.__str__N)rk   rl   rm   r   r   ru  r   r   rg   rg   rg   rh   r  S  s   r  c                   @   s   e Zd Ze Zdd ZdS )LockableModelc                 C   s   | j S r`   rw  re   rg   rg   rh   r   e  s    zLockableModel.__str__Nr  rg   rg   rg   rh   r  b  s   r  c                   @   s   e Zd Ze Zdd ZdS )ModeratedModelc                 C   s   | j S r`   rw  re   rg   rg   rh   r   t  s    zModeratedModel.__str__Nr  rg   rg   rg   rh   r  q  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)rk   rl   rm   Z	INDONESIAZPHILIPPINESUNITED_KINGDOMrg   rg   rg   rh   CountryCode  s   r  r  T)ry   r   r   rY   )Zauto_nowr   )r   rY   z
some valuezwagtailcore.WorkflowStateZbase_content_typer   Zfull_featured_snippetF)Zcontent_type_fieldZobject_id_fieldr   Zfor_concrete_modelwagtailcore.Revisionru  country_codec                 C   s   | j S r`   rw  re   rg   rg   rh   r     s    zFullFeaturedSnippet.__str__c                 C   s
   | j d S )Nr  rO  re   rg   rg   rh   
modulo_two  s    zFullFeaturedSnippet.modulo_twoc                 C   s   d| j d  S )N)NTF   r  re   rg   rg   rh   tristate  s    zFullFeaturedSnippet.tristatec                 C   s   dS r  rg   r   rg   rg   rh   r     s    z(FullFeaturedSnippet.get_preview_templatec                 C   s   d| j  S )NzFoo )r  re   rg   rg   rh   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rk   rl   rm   r_  verbose_name_pluralrg   rg   rg   rh   rn     s   rn   N)"rk   rl   rm   r   ZTextChoicesr  r   ru  r   r   r  r  r   Z	some_dater   Zsome_numberZsome_attributer   Zworkflow_statesZ	revisionsrM   r   AutocompleteFieldr   r   r   r  r  r   r  Zadmin_order_fieldZshort_descriptionrK   rn   rg   rg   rg   rh   r  {  sL   
	r  c                   C   s
   t j S r`   )rp  rG  firstrg   rg   rg   rh   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 )VariousOnDeleteModelTr[   )r^   r\   rY   r]   )r^   r\   rY   r   r]   ru   r_   ztests.FeatureCompleteToyr^   r\   rY   r   r   r   Zadvertisement_contentZcaptioned_advertrm  r|   	rich_textrz   ZdocumentrX   N)+rk   rl   rm   r   r   ru  rp   rp  rq   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)   rN   r#   r'   r=   r7   Zstream_fieldr:   r  rg   rg   rg   rh   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   rV   rU   rl  ZAdvertsr   N)
rk   rl   rm   r   rD   parent_page_typesr   r   r   r   rg   rg   rg   rh   r     s   

r  c                   @   s   e Zd ZdS )StandardChildNr   rg   rg   rg   rh   r  1  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)rk   rl   rm   r   subpage_typesrg   rg   rg   rh   r  F  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)rk   rl   rm   r   r  r  rg   rg   rg   rh   r  L  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)	rk   rl   rm   r   r  r  r  r   r   rg   rg   rg   rh   r  U  s   r  c                   @   s   e Zd ZdZg ZdS )BusinessNowherePagez!Not allowed to be placed anywhereN)rk   rl   rm   r   r  rg   rg   rg   rh   r  ]  s   r  c                   @   s   e Zd ZeZdS )CustomCopyFormPageN)rk   rl   rm   r  Zcopy_form_classrg   rg   rg   rh   r  c  s   r  c                   @   s   e Zd ZeddejdZdS )TaggedPageTagztests.TaggedPagerq  r   Nrr  rg   rg   rg   rh   r  g  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 )
TaggedPageTrs  r   r   rv  N)rk   rl   rm   r   r  rv  r   r   rM   r   r   rg   rg   rg   rh   r  m  s   
r  c                   @   s   e Zd ZdS )TaggedChildPageNr   rg   rg   rg   rh   r  {  s   r  c                   @   s   e Zd ZdS )TaggedGrandchildPageNr   rg   rg   rg   rh   r    s   r  c                       s    e Zd Ze fddZ  ZS )SingletonPagec                    s   t  |o| j  S r`   )r   can_create_atrG  rP  )clsparentr   rg   rh   r    s    zSingletonPage.can_create_at)rk   rl   rm   classmethodr  r   rg   rg   r   rh   r    s   r  c                   @   s   e Zd ZdZdS )SingletonPageViaMaxCountrP   N)rk   rl   rm   	max_countrg   rg   rg   rh   r    s   r  c                   @   s   e Zd ZejddejdZdS )PageChooserModelrZ   	help textr   r^   Nrk   rl   rm   r   rp   rq   r   rg   rg   rg   rh   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  rg   rg   rg   rh   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)r^   r\   rY   r_  rm  full_featuredN)rk   rl   rm   r   rp   rp  rq   rm  r  r  r   rs   rg   rg   rg   rh   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)
rk   rl   rm   r   rp   rx  rq   r  r   rs   rg   rg   rg   rh   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 )	CustomImagerw   Trx   rX   )r|   fancy_captionc                   @   s   e Zd ZdgZdS )zCustomImage.Metar   Z
collectionNrk   rl   rm   Zunique_togetherrg   rg   rg   rh   rn     s   rn   N)rk   rl   rm   r   r   r|   r:   r  Znot_editable_fieldr@   admin_form_fieldsrn   rg   rg   rg   rh   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)rz   Zfilter_specZfocal_point_keyNr  rg   rg   rg   rh   rn     s   rn   N)	rk   rl   rm   r   rp   r  rq   rz   rn   rg   rg   rg   rh   r    s     r  c                   @   s"   e Zd ZejddZejd ZdS )CustomImageWithAuthorrw   r   authorN)rk   rl   rm   r   r   r  r@   r  rg   rg   rg   rh   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  rg   rg   rg   rh   rn     s   rn   N)	rk   rl   rm   r   rp   r  rq   rz   rn   rg   rg   rg   rh   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 )CustomDocumentTrX   )descriptionfancy_descriptionc                   @   s   e Zd ZdgZdS )zCustomDocument.Metar  Nr  rg   rg   rg   rh   rn     s   rn   N)rk   rl   rm   r   r   r  r:   r  r9   r  rn   rg   rg   rg   rh   r    s   

r  c                   @   s"   e Zd ZejddZejd ZdS )CustomDocumentWithAuthorrw   r   r  N)rk   rl   rm   r   r   r  r9   r  rg   rg   rg   rh   r    s   r  c                   @   s,   e Zd Zede fde fde fgZdS )JSONStreamModelru  r  rz   Nrk   rl   rm   r;   r#   r'   r=   r   rg   rg   rg   rh   r    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 )JSONMinMaxCountStreamModelru  r  rz   r     min_nummax_numNr  rg   rg   rg   rh   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 )JSONBlockCountsStreamModelru  r  rz   r  rP   r  r  )ru  r  rz   )Zblock_countsNr  rg   rg   rg   rh   r    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|kr6|d jddr6||jdS |S )N)r  r   extendedF)idr   )r   get_api_representationZquery_paramsrD  r   )rf   valuer  Zimage_idr   rg   rh   r    s     z0ExtendedImageChooserBlock.get_api_representation)N)rk   rl   rm   r   r  r   rg   rg   r   rh   r    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gZdZed	edgZg ZdS )
StreamPageru  r  rz   productr   ZpriceZraw_htmlbooksr   r  Z
title_list)r   r   N)rk   rl   rm   r;   r#   r'   r  r)   r&   r(   r%   r   Z
api_fieldsr   r   r   rg   rg   rg   rh   r  #  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 )	DefaultStreamPageru  r  rz   r  r   r   r   N)
rk   rl   rm   r;   r#   r'   r=   r   r   r   rg   rg   rg   rh   r  M  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 )ComplexDefaultStreamPageru  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)
rk   rl   rm   r;   r#   r'   r(   r   r   r   rg   rg   rg   rh   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 pageN)rk   rl   rm   r_  rg   rg   rg   rh   rn   ~  s   rn   N)rk   rl   rm   Zis_creatablern   rg   rg   rg   rh   r  {  s   r  c                   @   s   e Zd ZdS )MTIChildPageNr   rg   rg   rg   rh   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.MetaTNrj   rg   rg   rg   rh   rn     s   rn   N)rk   rl   rm   rn   rg   rg   rg   rh   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rk   rl   rm   r   r   r   
EmailFieldrU  rg   rg   rg   rh   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  rg   rg   rg   rh   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   rg   rg   rg   rh   rn     s   rn   Nrk   rl   rm   r   r   r   r  r  r   rs   rn   rg   rg   rg   rh   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   rg   rg   rg   rh   rn     s   rn   Nr  rg   rg   rg   rh   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 )ImportantPagesSiteSettingrZ   r[   Tr]   r\   r^   N)	rk   rl   rm   r   rp   r~   sign_up_pagegeneral_terms_pageprivacy_policy_pagerg   rg   rg   rh   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 )ImportantPagesGenericSettingrZ   r[   Tr  c                   @   s   e Zd ZedZedZdS )z!ImportantPagesGenericSetting.MetazImportant pages settingsN)rk   rl   rm   r   r_  r  rg   rg   rg   rh   rn     s   rn   N)
rk   rl   rm   r   rp   r~   r  r  r  rn   rg   rg   rg   rh   r    s&            r  zicon-setting-tag)iconc                   @   s   e Zd ZdS )IconSiteSettingNr   rg   rg   rg   rh   r    s   r  c                   @   s   e Zd ZdS )IconGenericSettingNr   rg   rg   rg   rh   r     s   r   c                   @   s   e Zd ZdS )NotYetRegisteredSiteSettingNr   rg   rg   rg   rh   r    s   r  c                   @   s   e Zd ZdS )NotYetRegisteredGenericSettingNr   rg   rg   rg   rh   r    s   r  c                   @   s   e Zd Ze ZdS )FileSiteSettingNrk   rl   rm   r   r   filerg   rg   rg   rh   r    s   r  c                   @   s   e Zd Ze ZdS )FileGenericSettingNr  rg   rg   rg   rh   r    s   r  c                   @   s   e Zd ZejdddZdS )BlogCategoryTP   )uniquery   N)rk   rl   rm   r   r   r   rg   rg   rg   rh   r    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 )BlogCategoryBlogPager[   r   ManyToManyBlogPager   categoryN)rk   rl   rm   r   rp   r  rq   r  r   r   r   rs   rg   rg   rg   rh   r
    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.
    TrX   rs  r  N)rk   rl   rm   r   r:   r   r   ZManyToManyFieldrp  Zadvertsr  r
  Zblog_categoriesrD   settings_panelsr   rg   rg   rg   rh   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.
    TrX   r[   )Zparent_linkr]   r^   N)rk   rl   rm   r   r'   r   r   OneToOneFieldrD   rq   Zpage_ptrrg   rg   rg   rh   r     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)rk   rl   rm   r   r   rp   r   r~   r  ZPositiveIntegerFieldr  r   Zsnippet_content_objectrg   rg   rg   rh   r  +  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_torI  ospathsepr  tellseekhashlibsha256readrT  	hexdigestrJ  )rf   filenameZoriginal_filepathZfolder_nameZoriginal_positionZhash256rC  Zchecksumr   rg   rh   r  ;  s    	
z!CustomImageFilePath.get_upload_to)rk   rl   rm   r  r   rg   rg   r   rh   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)rN  re   rg   rg   rh   
about_spamZ  s    zCustomPageQuerySet.about_spamN)rk   rl   rm   r!  rg   rg   rg   rh   r   Y  s   r   c                   @   s   e Zd Ze ZdS )CustomManagerPageN)rk   rl   rm   r  rG  rg   rg   rg   rh   r"  a  s   r"  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.MetaTNrj   rg   rg   rg   rh   rn   l  s   rn   N)rk   rl   rm   r   r  rG  rn   rg   rg   rg   rh   r#  e  s   r#  c                   @   s   e Zd ZdS )MyCustomPageNr   rg   rg   rg   rh   r$  p  s   r$  c                   @   s,   e Zd ZejddZeZej	e
dg Z	dS )ValidatedPagerw   r   fooN)rk   rl   rm   r   r   r&  rR   r   rD   r   r   rg   rg   rg   rh   r%  t  s
   r%  c                   @   s&   e Zd Ze ZedddedgZdS )DefaultRichTextFieldPager   r   r   Nrk   rl   rm   r:   r   r   r   rg   rg   rg   rh   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)	rk   rl   rm   r;   r'   r   rD   r   r   rg   rg   rg   rh   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(  rg   rg   rg   rh   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)rk   rl   rm   r;   r'   r   r   r   rg   rg   rg   rh   r-    s   
r-  c                   @   s0   e Zd ZedddgdZedddedgZdS )	RichTextFieldWithFeaturesPageZ	quotationZembedzmade-up-feature)featuresr   r   r   Nr(  rg   rg   rg   rh   r.    s   
r.  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)rk   rl   rm   r   r   rq   r   r:   r   r   rs   rg   rg   rg   rh   r0    s     r0  c                   @   s    e Zd ZedddedgZdS )SectionedRichTextPager   r   r1  Nrk   rl   rm   r   r   r   rg   rg   rg   rh   r2    s   
r2  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.InlineStreamPager1  r   ru  r  rz   r   N)rk   rl   rm   r   r   rq   r   r;   r#   r'   r=   r   r   rs   rg   rg   rg   rh   r4    s     r4  c                   @   s    e Zd ZedddedgZdS )InlineStreamPager   r   r1  Nr3  rg   rg   rg   rh   r5    s   
r5  c                   @   s&   e Zd Zede fgZedgZdS )TableBlockStreamPagetableN)rk   rl   rm   r;   r5   r7  r   r   rg   rg   rg   rh   r6    s   r6  c                   @   s*   e Zd ZejejejdZej	ddZ
dS )UserProfiler   rw   r   N)rk   rl   rm   r   r  r   rV  rq   r:  r   Zfavourite_colourrg   rg   rg   rh   r8    s   r8  c                   @   s   e Zd ZedgZdS )PanelSiteSettingsr   Nrk   rl   rm   r   rs   rg   rg   rg   rh   r9    s   r9  c                   @   s   e Zd ZedgZdS )PanelGenericSettingsr   Nr:  rg   rg   rg   rh   r;    s   r;  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  rU  
Second tabNrk   rl   rm   r"   r    r   r  rg   rg   rg   rh   r<    s
   r<  c                   @   s4   e Zd ZeeedgddeedgddgZdS )TabbedGenericSettingsr   r=  r  rU  r>  Nr?  rg   rg   rg   rh   r@    s
   r@  c                   @   s   e Zd ZdZdS )AlwaysShowInMenusPageTN)rk   rl   rm   Zshow_in_menus_defaultrg   rg   rg   rh   rA    s   rA  c                   @   s   e Zd Zede fgZdS )"AddedStreamFieldWithoutDefaultPager   Nrk   rl   rm   r;   r#   r   rg   rg   rg   rh   rB    s   rB  c                   @   s    e Zd Zede fgddZdS )*AddedStreamFieldWithEmptyStringDefaultPager   r  r  NrC  rg   rg   rg   rh   rD    s   rD  c                   @   s    e Zd Zede fgg dZdS )(AddedStreamFieldWithEmptyListDefaultPager   r  NrC  rg   rg   rg   rh   rE  	  s   rE  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)
rk   rl   rm   r   r   rG  rH  rD   r   r   rg   rg   rg   rh   rF    s   
rF  c                   @   s   e Zd ZdgZdS )SimpleParentPageztests.SimpleChildPageN)rk   rl   rm   r  rg   rg   rg   rh   rI    s   rI  c                   @   s   e Zd ZdgZdZdS )SimpleChildPageztests.SimpleParentPagerP   N)rk   rl   rm   r  Zmax_count_per_parentrg   rg   rg   rh   rJ    s   rJ  c                   @   sh   e Zd ZejdddZejdddZeje	e
de
dgdedd	d
eddd
g ZG dd dZdS )
PersonPagerw   z
First Namery   r_  z	Last Namer   r   PersonrL  Addressr   social_linksSocial linksc                   @   s   e Zd ZdZdZdS )zPersonPage.MetarM  ZPersonsNr  rg   rg   rg   rh   rn   7  s   rn   N)rk   rl   rm   r   r   r   r   rD   r   r   r   r   rn   rg   rg   rg   rh   rK  !  s&   

rK  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 )rN  rw   rL  ztests.AddressTagTrs  tests.PersonPagerL  rM  tor]   r_  addressrv  c                   @   s   e Zd ZdZdZdS )zAddress.MetarN  Z	AddressesNr  rg   rg   rg   rh   rn   N  s   rn   N)rk   rl   rm   r   r   rT  r   rv  r   personr   rs   rn   rg   rg   rg   rh   rN  <  s"     rN  c                   @   s   e Zd ZedejddZdS )
AddressTagztests.Addressrq  rS  r^   r]   Nrr  rg   rg   rg   rh   rV  S  s
     rV  c                   @   sR   e Zd Ze ZejdddgdZeddddZ	e
d	e
d
gZG dd dZdS )
SocialLink   )ZtwitterZTwitter)ZfacebookZFacebookr   rQ  rO  rM  rR  rb   kindc                   @   s   e Zd ZdZdZdS )zSocialLink.MetazSocial linkrP  Nr  rg   rg   rg   rh   rn   k  s   rn   N)rk   rl   rm   r   ro   rb   r   rZ  r   rU  r   rs   rn   rg   rg   rg   rh   rX  Y  s      rX  c                   @   s(   e Zd ZedddZejedg ZdS )RestaurantPageztests.TaggedRestaurantTrs  rv  N)rk   rl   rm   r   rv  rD   r   r   rg   rg   rg   rh   r[  p  s   r[  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  rg   rg   rg   rh   rn   {  s   rn   N)rk   rl   rm   Zfree_taggingrn   rg   rg   rg   rh   r\  x  s   r\  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.RestaurantPagerq  rW  N)
rk   rl   rm   r   rp   r\  rq   tagr   r   rg   rg   rg   rh   r^    s       r^  c                   @   s   e Zd ZdS )
SimpleTaskNr   rg   rg   rg   rh   r`    s   r`  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)	Exceptionre   rg   rg   rh   media  s    zDeadlyTextInput.mediaN)rk   rl   rm   rr   rc  rg   rg   rg   rh   ra    s   ra  c                       s   e Zd Z fddZ  ZS )DeadlyCharBlockc                    s"   t jt d| _t j|| d S )N)r  )r   r   ra  rg  r   r  )rf   r"  r#  r   rg   rh   r    s    zDeadlyCharBlock.__init__r%  rg   rg   r   rh   rd    s   rd  c                   @   s,   e Zd Zede fgZejedg ZdS )DeadlyStreamPager   r   N)	rk   rl   rm   r;   rd  r   rD   r   r   rg   rg   rg   rh   re    s   re  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.CustomRestaurantDocumentrq  rW  N	rk   rl   rm   r   rp   r\  rq   r_  r   rg   rg   rg   rh   rf    s     rf  c                   @   s"   e Zd ZedddedZejZdS )CustomRestaurantDocumentNTrv  r   rY   r_  rt  )rk   rl   rm   r   rf  rv  r9   r  rg   rg   rg   rh   rh    s   rh  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.CustomRestaurantImagerq  rW  Nrg  rg   rg   rg   rh   rj    s     rj  c                   @   s"   e Zd ZedddedZejZdS )CustomRestaurantImageNTrv  ri  )rk   rl   rm   r   rj  rv  r@   r  rg   rg   rg   rh   rk    s      rk  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.
    rw   Try  r   N)rk   rl   rm   r   r   r   r   r   rg   rg   rg   rh   rl    s   rl  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)rY   r\   N)	rk   rl   rm   r   r   rD   r   r:   r   rg   rg   rg   rh   rm    s   rm  c                   @   s    e Zd Zejedddg ZdS )GalleryPagegallery_imagesrz   )Zchooser_field_nameN)rk   rl   rm   rD   r   r   rg   rg   rg   rh   rn    s   
rn  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.GalleryPagero  r   ru   r[   r   N)	rk   rl   rm   r   r   rq   r   rp   rz   rg   rg   rg   rh   rp    s     rp  c                   @   s   e Zd ZdZdS )GenericSnippetNoIndexPageTN)rk   rl   rm   wagtail_reference_index_ignorerg   rg   rg   rh   rq    s   rq  c                   @   s&   e Zd ZejeejdddZde_dS )GenericSnippetNoFieldIndexPageTr  N)	rk   rl   rm   r   rp   r   r~   Zsnippet_content_type_nonindexedrr  rg   rg   rg   rh   rs   	  s      rs  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 r`   )randomchoicer  )r=  i
componentsrg   rh   	<genexpr>
	  s     z%random_quotable_pk.<locals>.<genexpr>
   )stringascii_lettersdigitsrJ  range)Z
quote_chrsrg   rw  rh   random_quotable_pk	  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 )FeatureCompleteToyrw   T)ry   r   r   r   r  r   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)r   lower)rf   Zloweredrg   rg   rh   is_cool	  s
    zFeatureCompleteToy.is_coolc                 C   s   | j  d| j dS )Nz ())r   r  re   rg   rg   rh   r   %	  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   rg   rg   rg   rh   rn   (	  s   rn   N)rk   rl   rm   r   r   r  Zstridr   r   datetimedatetodayr  rM   r   r  r   r   r  r   rn   rg   rg   rg   rh   r  	  s   r  c                   @   s   e Zd ZejdejddZdS ) PurgeRevisionsProtectedTestModelr  r[   r   N)rk   rl   rm   r   r  r  revisionrg   rg   rg   rh   r  ,	  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 )SearchTestModelrw   r   r   r   c                 C   s   | j S r`   )r   re   rg   rg   rh   r   :	  s    zSearchTestModel.__str__N)rk   rl   rm   r   r   r   r   r   r   rs   r   rg   rg   rg   rh   r  2	  s   r  c                   @   s   e Zd Zdd ZdS )CustomPermissionTesterc                 C   s   dS )NFrg   re   rg   rg   rh   can_view_revisions?	  s    z)CustomPermissionTester.can_view_revisionsN)rk   rl   rm   r  rg   rg   rg   rh   r  >	  s   r  c                   @   s   e Zd Zdd ZdS )CustomPermissionPagec                 C   s
   t || S r`   )r  )rf   r:  rg   rg   rh   permissions_for_userD	  s    z)CustomPermissionPage.permissions_for_userN)rk   rl   rm   r  rg   rg   rg   rh   r  C	  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ddddg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)rk   rl   rm   r_  r  Zdefault_permissionsr   rg   rg   rg   rh   rn   K	  s   	rn   N)rk   rl   rm   r   r   ru  rn   rg   rg   rg   rh   r  H	  s   r  (0  r  r  r  rt  r{  r~  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.contrib.forms.formsr*   Zwagtail.contrib.forms.modelsr+   r,   r-   r.   Zwagtail.contrib.forms.panelsr/   Zwagtail.contrib.forms.viewsr0   Zwagtail.contrib.settings.modelsr1   r2   r3   Zwagtail.contrib.sitemapsr4   Z"wagtail.contrib.table_block.blocksr5   Zwagtail.documentsr6   Zwagtail.documents.blocksr7   Zwagtail.documents.modelsr8   r9   Zwagtail.fieldsr:   r;   Zwagtail.imagesr<   Zwagtail.images.blocksr=   Zwagtail.images.modelsr>   r?   r@   Zwagtail.modelsrA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   Zwagtail.searchrM   Zwagtail.snippets.blocksrN   Zwagtail.snippets.modelsrO   rQ   rR   r   r   ZModelrW   rt   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-  rR  r7  rW  rX  rc  r\  rd  r]  rk  ro  rp  rx  r{  r  Managerr  r  r  r  r  r  r  r  r  r  r  r  ZIndexedr  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   Zfrom_querysetr"  r#  r$  r%  r'  r)  r*  r-  r.  r0  r2  r4  r5  r6  r8  r9  r;  r<  r@  rA  rB  rD  rE  rF  rI  rJ  rK  rN  rV  rX  r[  r\  r^  r`  Z	TextInputra  rd  re  ZReimportedImageModelZReimportedDocumentModelrf  rh  rj  rk  rl  rm  rn  rp  rq  rs  r  r  r  r  r  r  r  rg   rg   rg   rh   <module>   s  (
$	8

'		!H 4 )R(
		

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