o
    h                    @   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publicPublicprivatePrivate)slug	seo_titleshow_in_menussearch_descriptionzcustom-mobilez
mobile-alti  zCustom mobile preview)nameicon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+)nullre   related_name	on_deletewagtaildocs.Documentc                 C   s"   | j r| j jS | jr| jjS | jS N)	link_pageurllink_documentlink_externalself rs   [/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/test/testapp/models.pylink   s
   zLinkFields.linkrp   rm   ro   c                   @      e Zd ZdZdS )zLinkFields.MetaTN__name__
__module____qualname__abstractrs   rs   rs   rt   Meta       r|   N)rx   ry   rz   r   URLFieldrp   
ForeignKeyCASCADErm   ro   propertyru   r   panelsr|   rs   rs   rs   rt   rc   v   s.    
	rc   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.ImageTrg   rh   re   rj   ri   z	Embed URLrd      
max_lengthre   image	embed_urlcaptionLinkc                   @   rv   )zCarouselItem.MetaTNrw   rs   rs   rs   rt   r|      r}   r|   N)rx   ry   rz   r   r   SET_NULLr   r~   r   	CharFieldr   r   rc   r   r|   rs   rs   rs   rt   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                   @   rv   )zRelatedLink.MetaTNrw   rs   rs   rs   rt   r|      r}   r|   N)
rx   ry   rz   r   r   r   r   rc   r   r|   rs   rs   rs   rt   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                       dt    S )Nz%s (simple page)superget_admin_display_titlerq   	__class__rs   rt   r         z"SimplePage.get_admin_display_title)rx   ry   rz   r   	TextFieldr   page_descriptionr   content_panelsr   __classcell__rs   rs   r   rt   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      ddgS )N)r   Originalr   	Alternaters   rq   rs   rs   rt   preview_modes      z#MultiPreviewModesPage.preview_modesc                 C      dS Nr   rs   rq   rs   rs   rt   default_preview_mode      z*MultiPreviewModesPage.default_preview_modec                    s"   || j v r
| j | S t ||S rl   )preview_templatesr   get_preview_templaterr   request	mode_namer   rs   rt   r      s   

z*MultiPreviewModesPage.get_preview_template)
rx   ry   rz   r   templater   r   r   r   r   rs   rs   r   rt   r      s    

r   c                   @   s(   e Zd ZdZedd Zedd ZdS )CustomPreviewSizesPager   c                 C      t S rl   CUSTOM_PREVIEW_SIZESrq   rs   rs   rt   preview_sizes   r   z$CustomPreviewSizesPage.preview_sizesc                 C   r   Nrb   rs   rq   rs   rs   rt   default_preview_size   r   z+CustomPreviewSizesPage.default_preview_sizeN)rx   ry   rz   r   r   r   r   rs   rs   rs   rt   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)re   r   defaultspecial_fieldr   r   r   N)rx   ry   rz   r   r   r   r   r   exclude_fields_in_copyr   r   rs   rs   rs   rt   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rj   content_type	object_idN)rx   ry   rz   r   r   r   r   r   PositiveBigIntegerFieldr   r   content_objectrs   rs   rs   rt   r      s    r   c                   @   s   e Zd ZedZdS )PageWithGenericRelationztests.RelatedGenericRelationN)rx   ry   rz   r   generic_relationrs   rs   rs   rt   r         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 rl   )serverr   r   path_componentsrs   rs   rt   route     
z!PageWithOldStyleRouteMethod.routeN)	rx   ry   rz   __doc__r   r   r   r   r   rs   rs   rs   rt   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)	rx   ry   rz   r   	FileFieldr   r   r   r   rs   rs   rs   rt   r     s    
r   c                   @   2   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ri   rj   c                   @      e Zd ZdS )zEventPageCarouselItem.MetaNrx   ry   rz   rs   rs   rs   rt   r|   +      r|   N
rx   ry   rz   r   r   r   pagerN   r|   rF   rs   rs   rs   rt   r   &  
    r   c                   @   r   )EventPageRelatedLinkr   related_linksr   c                   @   r   )zEventPageRelatedLink.MetaNr   rs   rs   rs   rt   r|   4  r   r|   Nr   rs   rs   rs   rt   r   /  r   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rh   re   r^   date_awardedc                   @   r   )zEventPageSpeakerAward.MetaNr   rs   rs   rs   rt   r|   A  r   r|   N)rx   ry   rz   r   r   r   speakerr   r^   	DateFieldr   r   rN   r|   rF   rs   rs   rs   rt   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   )ri   related_query_namerj   Namer   Tr   Surnamer   rg   r   c                 C   s   | j d | j S )N )
first_name	last_namerq   rs   rs   rt   name_displayV  s   zEventPageSpeaker.name_displayr   r   r   r   r   Awardsra   c                   @   r   )zEventPageSpeaker.MetaNr   rs   rs   rs   rt   r|   b  r   r|   N)rx   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   r   r   rN   r|   rF   rs   rs   rs   rt   r   E  s2    


r   c                   @   s"   e Zd ZejdddZdd ZdS )EventCategoryr   r   r   c                 C      | j S rl   r^   rq   rs   rs   rt   __str__i     zEventCategory.__str__N)rx   ry   rz   r   r   r^   r   rs   rs   rs   rt   r   f  s    r   c                          e Zd Z fddZ  ZS )EventPageFormc                    s6   t   }|d }|d }|r|r||krtd|S )N	date_fromdate_toz)The end date must be after the start date)r   cleanr   )rr   cleaned_data
start_dateend_dater   rs   rt   r   r  s   
zEventPageForm.clean)rx   ry   rz   r   r   rs   rs   r   rt   r   q      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)rh   zEnd datez(Not required if event is on a single day)rh   re   r   z
Start timer   zEnd timer   r   choicesr   rd   r   rg   r   get_audience_displaylocationbody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   SpeakerzSpeaker lineupzPut the keynote speaker first)ra   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)custom_see_panel_settingCan see the panel.)other_custom_see_panel_settingr  Nrx   ry   rz   permissionsrs   rs   rs   rt   r|     s    r|   N)(rx   ry   rz   r   r   r   r   	TimeFieldr  r  r   EVENT_AUDIENCE_CHOICESr	  r  r<   r  r  r~   r  r   r   r  r   r   r  rG   search_fieldsrP   SearchFieldFilterFieldpassword_required_templater   base_form_classr   r   r   r   COMMON_PANELSpromote_panelsr|   rs   rs   rs   rt   r   ~  st    





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  rj   ri   
head_countN)rx   ry   rz   r   r   	AutoField	custom_idr   r   r   
event_pageIntegerFieldr#  r   r   rs   rs   rs   rt   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   Trd   r   r   r  r  codeN)rx   ry   rz   r   r   r  r<   r  r   r   rT   r  rs   rs   rs   rt   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   re   rh   r   Nc                    s2   t  j|d}|d u rd S |\}}}|||d fS )Nr   zpointless-suffix/)r   get_url_parts)rr   r   	url_partssite_idroot_url	page_pathr   rs   rt   r,    s
   
zSingleEventPage.get_url_partsc                    s&   |dgkrt  |g S t  ||S )Nzpointless-suffix)r   r   r   r   rs   rt   r     s   
zSingleEventPage.routec                    r   )Nz%s (single event)r   rq   r   rs   rt   r     r   z'SingleEventPage.get_admin_display_titleexcerptrl   )rx   ry   rz   r   r   r1  r,  r   r   r   r   r   r   rs   rs   r   rt   r*    s    r*  c                   @   r   )EventSitemapNr   rs   rs   rs   rt   r2    r   r2  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   )re   r   z!tests/includes/event_listing.htmlOPTIONSc                 C   s   |    tS rl   )get_childrenlivetyper   rq   rs   rs   rt   
get_events  s   zEventIndex.get_eventsc                 C   s   t |  dS )N   )r
   r9  rq   rs   rs   rt   get_paginator  r   zEventIndex.get_paginatorrS   c                    sh   |   }z||}W n ty   |d}Y n ty'   ||j}Y nw t |}||d< |S )NrS   events)r;  r   r	   r   	num_pagesr   get_context)rr   r   r   	paginatorr<  contextr   rs   rt   r>    s   zEventIndex.get_contextc              	      sP   | j r!t|dkr!z| j|t|d dW S  ttfy    Y nw t ||S )NrS   r   )r   )r7  lenr   int	TypeError
ValueErrorr   r   r   r   rs   rt   r   #  s   zEventIndex.routeNc                    s"   t  j|d| jd | jdg S )Nr+  zpast/)r  lastmod)r   get_sitemap_urlsfull_urllatest_revision_created_at)rr   r   r   rs   rt   rF  ,  s
   zEventIndex.get_sitemap_urlsc                    s   t   dg S )Nz/past/)r   get_cached_pathsrq   r   rs   rt   rI  5     zEventIndex.get_cached_pathsr   r   intro)rS   rl   )rx   ry   rz   r<   rK  ajax_templater*   GETallowed_http_methodsr9  r;  r>  r   rF  rI  r   r   r   rs   rs   r   rt   r3    s    
		
r3  c                   @      e Zd ZeddejdZdS )	FormFieldFormPageform_fieldsr   Nrx   ry   rz   r   r   r   r   rs   rs   rs   rt   rP  >  r   rP  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 )rQ  c                       t  |}d|d< |S Nzhello worldgreetingr   r>  rr   r   r@  r   rs   rt   r>  C     zFormPage.get_contextr   r   rR  Form fieldsr   
to_addressfrom_addresssubjectEmail)rx   ry   rz   r>  r2   submissions_list_view_classr   r   r   r1   r   r   rs   rs   r   rt   rQ  B  s    


rQ  c                       r   )CustomCopyFormc                    s   t  j|i | d}| j }| jjr6zt| jjd d }| jjd d }W n ty5   | jj}Y nw |d|  }t||sV|d7 }| d| }| t||rCt	t
dd}tj|td|tjjd	| jd
< d S )N   rS   -WAGTAIL_ALLOW_UNICODE_SLUGSTzNew slug)initialra   allow_unicodewidgetnew_slug)r   __init__r   
get_parentrZ   rB  rD  rG   _slug_is_availablegetattrr   r   	SlugField_r   	SlugInputfields)rr   argskwargssuffixparent_page	base_slugcandidate_slugrg  r   rs   rt   rj  b  s.   
zCustomCopyForm.__init__rx   ry   rz   rj  r   rs   rs   r   rt   r`  a  r   r`  c                   @   rO  )JadeFormFieldJadeFormPagerR  r   NrS  rs   rs   rs   rt   ry        
ry  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 )rz  ztests/form_page.jader   r   rR  rZ  r   r[  r\  r]  r^  N)rx   ry   rz   r   r   r   r   r   rs   rs   rs   rt   rz    s    

rz  c                   @   rO  )RedirectFormFieldFormPageWithRedirectrR  r   NrS  rs   rs   rs   rt   r|    r{  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}  rf   Trg   r   c                    rT  rU  rW  rX  r   rs   rt   r>    rY  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)	permanent)thank_you_redirect_pager   rn   r   render_landing_page)rr   r   form_submissionrr  rs  r   rs   rt   r    s   z(FormPageWithRedirect.render_landing_pager   r   r  rR  rZ  r   r[  r\  r]  r^  rl   )rx   ry   rz   r   r   r   r  r>  r  r   r   r   r   r   rs   rs   r   rt   r}    s*    


r}  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   )rr   r   r\  r   rs   rt   r     s
   

z&FormPageWithCustomSubmissionForm.clean)rx   ry   rz   r   r   r   rs   rs   r   rt   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
    Trd   c                    s   t  |}d|d< |S rU  rW  )rr   r   rr  rs  r@  r   rs   rt   r>    rY  z(FormPageWithCustomSubmission.get_contextc                 C   s
   | j  S rl   )custom_form_fieldsallrq   rs   rs   rt   get_form_fields  r   z,FormPageWithCustomSubmission.get_form_fieldsc                       dg}|t   7 }|S N)	useremailz
User emailr   get_data_fieldsrr   data_fieldsr   rs   rt   r       z,FormPageWithCustomSubmission.get_data_fieldsc                 C   r   rl   CustomFormPageSubmissionrq   rs   rs   rt   get_submission_class     z1FormPageWithCustomSubmission.get_submission_classc                    sj   |   jj j|  jd}| jr3dd | jdD }d fdd j	 D }t
| j||| j |S )N)	form_datar   userc                 S   s   g | ]}|  qS rs   )strip.0xrs   rs   rt   
<listcomp>  s    zHFormPageWithCustomSubmission.process_form_submission.<locals>.<listcomp>,
c                    s.   g | ]}|d  j d t j|d  qS )rS   z: r   )ra   strdatar  r  formrs   rt   r    s     )r  objectscreater   r  r[  splitjoinrq  itemsr   r]  r\  )rr   r  r  	addressesr   rs   r  rt   process_form_submission  s&   

z4FormPageWithCustomSubmission.process_form_submissionc                    sJ   |   jj| |jjd rt|| j| |S t	 j
|g|R i |S )N)r   user__pk)r  r  filterr  pkexistsr   r   r>  r   r   )rr   r   rr  rs  r   rs   rt   r     s   z"FormPageWithCustomSubmission.server   r   rK  r  rZ  r   thank_you_textr[  r\  r]  r^  )rx   ry   rz   r   r<   rK  r  r  r  r>  r  r  r  r  r   r   r   r   r   r   rs   rs   r   rt   r    s.    




r  c                   @   s   e Zd ZeeejddZdS )FormFieldWithCustomSubmissionr  r"  N)rx   ry   rz   r   r  r   r   r   rs   rs   rs   rt   r  /  s    
r  c                       s.   e Zd ZejejejdZ fddZ	  Z
S )r  r   c                    s    t   }|d| jji |S )Nr  )r   get_dataupdater  email)rr   r  r   rs   rt   r  :  s   
z!CustomFormPageSubmission.get_data)rx   ry   rz   r   r   r   AUTH_USER_MODELr   r  r  r   rs   rs   r   rt   r  7  s    r  c                   @   rO  )FormFieldForCustomListViewPage$FormPageWithCustomSubmissionListViewrR  r   NrS  rs   rs   rs   rt   r  H  s    
r  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 )r  z2Form Page with customised submissions listing viewTrd   c                 C   s   ddl m} |S )NrS   )CustomSubmissionsListView)viewsr  )rr   r  rs   rs   rt   get_submissions_list_view_classV  s   zDFormPageWithCustomSubmissionListView.get_submissions_list_view_classc                 C   r   rl   r  rq   rs   rs   rt   r  [  r  z9FormPageWithCustomSubmissionListView.get_submission_classc                    r  r  r  r  r   rs   rt   r  ^  r  z4FormPageWithCustomSubmissionListView.get_data_fieldsr   r   rK  rR  rZ  r   r  r[  r\  r]  r^  )rx   ry   rz   r   r<   rK  r  r  r  r  r   r   r   r   r   rs   rs   r   rt   r  P  s&    


	
r  ))	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.
    FormPageWithCustomFormBuilderrR  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--	duplicateztest duplicate)r   get_field_clean_name
field_typera   )rr   
clean_namer   rs   rt   r    s   



z&ExtendedFormField.get_field_clean_name)rx   ry   rz   r   r   r   r   r   r   EXTENDED_CHOICESr  r  r   rs   rs   r   rt   r  {  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di |S )Nx   r   rs   )r   r   rr   fieldoptionsrs   rs   rt   create_singleline_field  s   z)CustomFormBuilder.create_singleline_fieldc                 C   s   t jdi |S )Nrs   )r   GenericIPAddressFieldr  rs   rs   rt   create_ipaddress_field  rJ  z(CustomFormBuilder.create_ipaddress_fieldN)rx   ry   rz   r   r  r  rs   rs   rs   rt   r    s    r  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   rR  rZ  r   r[  r\  r]  r^  N)
rx   ry   rz   r   r  form_builderr   r   r   r   rs   rs   rs   rt   r    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 )	AdvertPlacementrf   advert_placementsr   ztests.Advertrg   r   r   N)rx   ry   rz   r   r   r   r   r   advertr   colourrs   rs   rs   rt   r    s    r  c                   @   rO  )	AdvertTagAdverttagged_itemsr   Nrx   ry   rz   r   r   r   r   rs   rs   rs   rt   r    r{  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   throughre   rn   texttagsc                 C   r   rl   r  rq   rs   rs   rt   r     r   zAdvert.__str__N)rx   ry   rz   r   r~   rn   r   r  r   r  r  r   r   r   rs   rs   rs   rt   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   rn   r  c                 C   r   rl   r  rq   rs   rs   rt   r     r   z"AdvertWithCustomPrimaryKey.__str__N)rx   ry   rz   r   r   	advert_idr~   rn   r  r   r   r   rs   rs   rs   rt   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   )rh   re   rj   rn   r  r   c                 C   r   rl   r  rq   rs   rs   rt   r     r   z&AdvertWithCustomUUIDPrimaryKey.__str__N)rx   ry   rz   r   	UUIDFielduuiduuid4r  r~   rn   r   r  r   rG   r   r   r   r   rP   r  r  r   rs   rs   rs   rt   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   rn   r  something_elser  r  OtherzOther panels help text)r  r   zTop-level help textr
  c                 C   r   rl   r  rq   rs   rs   rt   r      r   z!AdvertWithTabbedInterface.__str__c                   @   rv   )zAdvertWithTabbedInterface.Metar  N)rx   ry   rz   orderingrs   rs   rs   rt   r|   #  r}   r|   N)rx   ry   rz   r   r~   rn   r   r  r  r   advert_panelsother_panelsr"   r    edit_handlerr   r|   rs   rs   rs   rt   r    s&    

r  c                   @   r   )CustomManagerNr   rs   rs   rs   rt   r  *  r   r  c                   @      e Zd Ze ZdS )ModelWithCustomManagerN)rx   ry   rz   r  	instancesrs   rs   rs   rt   r  .      
r  c                   @      e Zd Ze ZdS )RevisableModelN)rx   ry   rz   r   r   r  rs   rs   rs   rt   r  6  r   r  c                   @      e Zd ZejdddZdS )RevisableChildModelT )re   r   N)rx   ry   rz   r   r   secret_textrs   rs   rs   rt   r  :      r  c                   @   r   )RevisableGrandChildModelNr   rs   rs   rs   rt   r  @  r   r  c                   @      e Zd Ze Zdd ZdS )DraftStateModelc                 C   r   rl   r  rq   rs   rs   rt   r   J  r   zDraftStateModel.__str__Nrx   ry   rz   r   r   r  r   rs   rs   rs   rt   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   r   rl   r  rq   rs   rs   rt   r   X  r   z'DraftStateCustomPrimaryKeyModel.__str__N)rx   ry   rz   r   r   r%  r   r  r   r!   r   r   rs   rs   rs   rt   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 )PreviewableModelTrd   c                 C   r   rl   r  rq   rs   rs   rt   r   d  r   zPreviewableModel.__str__c                 C   r   Ntests/previewable_model.htmlrs   r   rs   rs   rt   r   g  r  z%PreviewableModel.get_preview_templateN)rx   ry   rz   r   r   r  r   r   r  r   r   rs   rs   rs   rt   r  `  s
    r  c                   @   s,   e Zd Ze Zedd Zedd ZdS )CustomPreviewSizesModelc                 C   r   rl   r   rq   rs   rs   rt   r   q  r   z%CustomPreviewSizesModel.preview_sizesc                 C   r   r   rs   rq   rs   rs   rt   r   u  r   z,CustomPreviewSizesModel.default_preview_sizeN)	rx   ry   rz   r   r   r  r   r   r   rs   rs   rs   rt   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   r   rl   r  rq   rs   rs   rt   r     r   zMultiPreviewModesModel.__str__c                 C   r   )N)r  Normalr   rs   rq   rs   rs   rt   r     r   z$MultiPreviewModesModel.preview_modesc                 C   r   r   rs   rq   rs   rs   rt   r     r   z+MultiPreviewModesModel.default_preview_modec                 C   s   ddd}| ||d S )Nr  z tests/previewable_model_alt.html)r  r   r  )r  )rr   r   r   	templatesrs   rs   rt   r     s   z+MultiPreviewModesModel.get_preview_templateN)rx   ry   rz   r   r   r  r   r   r   r   r   rs   rs   rs   rt   r  }  s    

r  c                   @   s    e Zd Ze Zdd Zg ZdS )NonPreviewableModelc                 C   r   rl   r  rq   rs   rs   rt   r     r   zNonPreviewableModel.__str__N)rx   ry   rz   r   r   r  r   r   rs   rs   rs   rt   r    s    r  c                   @   r  )LockableModelc                 C   r   rl   r  rq   rs   rs   rt   r     r   zLockableModel.__str__Nr  rs   rs   rs   rt   r        r  c                   @   r  )ModeratedModelc                 C   r   rl   r  rq   rs   rs   rt   r     r   zModeratedModel.__str__Nr  rs   rs   rs   rt   r    r  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.CountryCodeIDPHUKN)rx   ry   rz   	INDONESIAPHILIPPINESUNITED_KINGDOMrs   rs   rs   rt   CountryCode  s    r  ra  T)r   r  r   re   )auto_nowr   )r   re   z
some valuezwagtailcore.WorkflowStatebase_content_typer   full_featured_snippetF)content_type_fieldobject_id_fieldr   for_concrete_modelwagtailcore.Revisionr  country_codec                 C   r   rl   r  rq   rs   rs   rt   r     r   zFullFeaturedSnippet.__str__c                 C   s
   | j d S )Nra  r  rq   rs   rs   rt   
modulo_two  r   zFullFeaturedSnippet.modulo_twoc                 C   s   d| j d  S )N)NTF   r  rq   rs   rs   rt   tristate  r   zFullFeaturedSnippet.tristatec                 C   r   r  rs   r   rs   rs   rt   r     r  z(FullFeaturedSnippet.get_preview_templatec                 C   s   d| j  S )NzFoo )r  rq   rs   rs   rt   get_foo_country_code     z(FullFeaturedSnippet.get_foo_country_codezcustom FOO columnc                   @      e Zd ZdZdZdS )zFullFeaturedSnippet.Metazfull-featured snippetzfull-featured snippetsNrx   ry   rz   r  verbose_name_pluralrs   rs   rs   rt   r|         r|   N)"rx   ry   rz   r   TextChoicesr  r   r  r   r  r  r  r   	some_dater'  some_numbersome_attributer   workflow_states	revisionsrP   r  AutocompleteFieldr  r  r   r  r  r   r  admin_order_fieldshort_descriptionrN   r|   rs   rs   rs   rt   r    sN    
	r  c                   C   s
   t j S rl   )r  r  firstrs   rs   rs   rt   get_default_advert  r   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 )VariousOnDeleteModelTrg   )rj   rh   re   ri   )rj   rh   re   r   ri   r   rk   ztests.FeatureCompleteToyrj   rh   re   r   r   r   advertisement_contentcaptioned_advertr  r   	rich_textr   documentrd   N)+rx   ry   rz   r   r   r  r   r  r   on_delete_cascadePROTECTon_delete_protectRESTRICTon_delete_restrictr   on_delete_set_nullSET_DEFAULTr)  on_delete_set_defaultSETon_delete_set
DO_NOTHINGon_delete_do_nothingprotected_imageprotected_documentcascading_toyr   r   r  r   r   r   r=   r(   r)   rQ   r#   r'   r@   r9   stream_fieldr<   r.  rs   rs   rs   rt   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   r[   rZ   r  Advertsr   N)
rx   ry   rz   r   rG   parent_page_typesr   r   r   r  rs   rs   rs   rt   r@  c  s    

r@  c                   @   r   )StandardChildNr   rs   rs   rs   rt   rC  t  r   rC  Contentr  PromoteSettingszWatch out for asteroids	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)rx   ry   rz   r   subpage_typesrs   rs   rs   rt   rH    s    rH  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 childrenrI  ztests.BusinessNowherePagetests.BusinessIndexN)rx   ry   rz   r   rJ  rB  rs   rs   rs   rt   rK    s    
rK  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 allowedrL  z&A lazy business child page descriptionN)	rx   ry   rz   r   rJ  rK  rB  ro  r   rs   rs   rs   rt   rM    s
    rM  c                   @   s   e Zd ZdZg ZdS )BusinessNowherePagez!Not allowed to be placed anywhereN)rx   ry   rz   r   rB  rs   rs   rs   rt   rN    s    rN  c                   @   s   e Zd ZeZdS )CustomCopyFormPageN)rx   ry   rz   r`  copy_form_classrs   rs   rs   rt   rO    r}   rO  c                   @   rO  )TaggedPageTagztests.TaggedPager  r   Nr  rs   rs   rs   rt   rQ    r{  rQ  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)rx   ry   rz   r   rQ  r  r   r   rP   r  r  rs   rs   rs   rt   rR    s    
rR  c                   @   r   )TaggedChildPageNr   rs   rs   rs   rt   rS    r   rS  c                   @   r   )TaggedGrandchildPageNr   rs   rs   rs   rt   rT    r   rT  c                       s    e Zd Ze fddZ  ZS )SingletonPagec                    s   t  |o| j  S rl   )r   can_create_atr  r  )clsparentr   rs   rt   rV    s   zSingletonPage.can_create_at)rx   ry   rz   classmethodrV  r   rs   rs   r   rt   rU    s    rU  c                   @   rv   )SingletonPageViaMaxCountrS   N)rx   ry   rz   	max_countrs   rs   rs   rt   rZ    r}   rZ  c                   @      e Zd ZejddejdZdS )PageChooserModelrf   	help textr   rj   Nrx   ry   rz   r   r   r   r   rs   rs   rs   rt   r]        
r]  c                   @   r\  )EventPageChooserModelr   zmore help textr_  Nr`  rs   rs   rs   rt   rb    ra  rb  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)rj   rh   re   r  r  full_featuredN)rx   ry   rz   r   r   r  r   r  r  rd  r   r   rs   rs   rs   rt   rc    s    	rc  c                   @   s(   e Zd ZejedejdZedgZ	dS )'SnippetChooserModelWithCustomPrimaryKeyr^  r_  advertwithcustomprimarykeyN)
rx   ry   rz   r   r   r  r   rf  r   r   rs   rs   rs   rt   re    s    re  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   rd   )r   fancy_captionc                   @      e Zd ZdgZdS )zCustomImage.Metar   
collectionNrx   ry   rz   unique_togetherrs   rs   rs   rt   r|     r  r|   N)rx   ry   rz   r   r   r   r<   rh  not_editable_fieldrC   admin_form_fieldsr|   rs   rs   rs   rt   rg    s    

rg  c                   @   ,   e Zd ZejedejdZG dd dZdS )CustomRendition
renditionsr   c                   @   rv   )zCustomRendition.Meta)r   filter_specfocal_point_keyNrl  rs   rs   rs   rt   r|   
  r}   r|   N)	rx   ry   rz   r   r   rg  r   r   r|   rs   rs   rs   rt   rq    
    rq  c                   @   "   e Zd ZejddZejd ZdS )CustomImageWithAuthorr   r   authorN)rx   ry   rz   r   r   rz  rC   ro  rs   rs   rs   rt   rx        rx  c                   @   rp  )CustomRenditionWithAuthorrr  r   c                   @   rv   )zCustomRenditionWithAuthor.Metars  Nrl  rs   rs   rs   rt   r|     r}   r|   N)	rx   ry   rz   r   r   rx  r   r   r|   rs   rs   rs   rt   r|    rv  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 )CustomDocumentTrd   )descriptionfancy_descriptionc                   @   ri  )zCustomDocument.Metarj  Nrl  rs   rs   rs   rt   r|   &  r  r|   N)rx   ry   rz   r   r   r~  r<   r  r;   ro  r|   rs   rs   rs   rt   r}    s
    

r}  c                   @   rw  )CustomDocumentWithAuthorr   r   ry  N)rx   ry   rz   r   r   rz  r;   ro  rs   rs   rs   rt   r  +  r{  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                   @   rv   )zJSONStreamModel.MetazJSON stream modelNrx   ry   rz   r  rs   rs   rs   rt   r|   :  r}   r|   N)	rx   ry   rz   r=   r#   r'   r@   r  r|   rs   rs   rs   rt   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   ra     min_nummax_numNrx   ry   rz   r=   r#   r'   r@   r  rs   rs   rs   rt   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   )block_countsNr  rs   rs   rs   rt   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 r|d jddr||jdS |S )N)r@  r   extendedF)idr   )r   get_api_representationquery_paramsr  r   )rr   valuer@  image_idr   rs   rt   r  `  s   z0ExtendedImageChooserBlock.get_api_representationrl   )rx   ry   rz   r   r  r   rs   rs   r   rt   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   productr^   priceraw_htmlbooksr   rz  
title_listimage_with_alt)r  r  N)rx   ry   rz   r=   r#   r'   r  r)   r&   r(   r%   r?   r  
api_fieldsr   r   r   rs   rs   rs   rt   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)
rx   ry   rz   r=   r#   r'   r@   r  r   r   rs   rs   rs   rt   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   rz  )r.  z<p>My <i>lovely</i> books</p>)r   zThe Great Gatsby)rz  zF. Scott Fitzgeraldr  r  N)
rx   ry   rz   r=   r#   r'   r(   r  r   r   rs   rs   rs   rt   r    s*    r  c                   @      e Zd ZdZG dd dZdS )MTIBasePageFc                   @   rv   )zMTIBasePage.MetazMTI Base pageNr  rs   rs   rs   rt   r|     r}   r|   N)rx   ry   rz   is_creatabler|   rs   rs   rs   rt   r        r  c                   @   r   )MTIChildPageNr   rs   rs   rs   rt   r        r  c                   @   s   e Zd ZegZdS )NoCreatableSubpageTypesPageN)rx   ry   rz   r  rJ  rs   rs   rs   rt   r    r  r  c                   @   s   e Zd Zg ZdS )NoSubpageTypesPageNrx   ry   rz   rJ  rs   rs   rs   rt   r    r}   r  c                   @   s   e Zd ZG dd dZdS )AbstractPagec                   @   rv   )zAbstractPage.MetaTNrw   rs   rs   rs   rt   r|     r}   r|   N)rx   ry   rz   r|   rs   rs   rs   rt   r    r  r  c                   @   $   e Zd ZejddZejddZdS )TestSiteSettingd   r   r4  Nrx   ry   rz   r   r   r   
EmailFieldr  rs   rs   rs   rt   r        r  c                   @   r  )TestGenericSettingr  r   r4  Nr  rs   rs   rs   rt   r    r  r  c                   @   F   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   r4  r   sensitive_emailz.tests.can_edit_sensitive_email_generic_setting
permissionc                   @   ri  )z#TestPermissionedGenericSetting.Meta)(can_edit_sensitive_email_generic_settingz)Can edit sensitive email generic setting.Nr  rs   rs   rs   rt   r|         r|   Nrx   ry   rz   r   r   r   r  r  r   r   r|   rs   rs   rs   rt   r    s    r  c                   @   r  )TestPermissionedSiteSettingr  r   r4  r   r  z+tests.can_edit_sensitive_email_site_settingr  c                   @   ri  )z TestPermissionedSiteSetting.Meta)%can_edit_sensitive_email_site_settingz&Can edit sensitive email site setting.Nr  rs   rs   rs   rt   r|   	  r  r|   Nr  rs   rs   rs   rt   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 )ImportantPagesSiteSettingrf   rg   Tri   rh   rj   N)	rx   ry   rz   r   r   r   sign_up_pagegeneral_terms_pageprivacy_policy_pagers   rs   rs   rt   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 )ImportantPagesGenericSettingrf   rg   Tr  c                   @   s   e Zd ZedZedZdS )z!ImportantPagesGenericSetting.MetazImportant pages settingsN)rx   ry   rz   ro  r  r  rs   rs   rs   rt   r|   +  s    r|   N)
rx   ry   rz   r   r   r   r  r  r  r|   rs   rs   rs   rt   r    s    


r  tag)r_   c                   @   r   )IconSiteSettingNr   rs   rs   rs   rt   r  0  r  r  c                   @   r   )IconGenericSettingNr   rs   rs   rs   rt   r  5  r  r  c                   @   r   )NotYetRegisteredSiteSettingNr   rs   rs   rs   rt   r  :  r   r  c                   @   r   )NotYetRegisteredGenericSettingNr   rs   rs   rs   rt   r  >  r   r  c                   @   r  )FileSiteSettingNrx   ry   rz   r   r   filers   rs   rs   rt   r  B      r  c                   @   r  )FileGenericSettingNr  rs   rs   rs   rt   r  G  r  r  c                   @   r  )BlogCategoryTP   )uniquer   N)rx   ry   rz   r   r   r^   rs   rs   rs   rt   r  L  r  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 )BlogCategoryBlogPagerg   r   ManyToManyBlogPager  categoryN)rx   ry   rz   r   r   r  r   r  r   r   r   r   rs   rs   rs   rt   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.
    Trd   r  r  N)rx   ry   rz   r   r<   r  r   ManyToManyFieldr  advertsr  r  blog_categoriesrG   settings_panelsr   rs   rs   rs   rt   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.
    Trd   rg   )parent_linkri   rj   N)rx   ry   rz   r   r'   r  r   OneToOneFieldrG   r   page_ptrrs   rs   rs   rt   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)rx   ry   rz   r   r   r   r   r   r  PositiveIntegerFieldr  r   snippet_content_objectrs   rs   rs   rt   r  z  s    
r  c                       r   )CustomImageFilePathc                    s   t  |}|tjj\}}| j }| jd t	
 }	 | jd}|s(n|| 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   T   Nr  )r   get_upload_tor  ospathsepr  tellseekhashlibsha256readr  	hexdigestr  )rr   filenameoriginal_filepathfolder_nameoriginal_positionhash256r  checksumr   rs   rt   r    s   	

z!CustomImageFilePath.get_upload_to)rx   ry   rz   r  r   rs   rs   r   rt   r    r   r  c                   @      e Zd Zdd ZdS )CustomPageQuerySetc                 C   s   | j ddS )Nspam)title__contains)r  rq   rs   rs   rt   
about_spam  r  zCustomPageQuerySet.about_spamN)rx   ry   rz   r  rs   rs   rs   rt   r    r   r  c                   @   r  )CustomManagerPageN)rx   ry   rz   r  r  rs   rs   rs   rt   r    r  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                   @   rv   )zMyBasePage.MetaTNrw   rs   rs   rs   rt   r|     r}   r|   N)rx   ry   rz   r   r  r  r|   rs   rs   rs   rt   r    s    r  c                   @   r   )MyCustomPageNr   rs   rs   rs   rt   r    r   r  c                   @   s,   e Zd ZejddZeZej	e
dg Z	dS )ValidatedPager   r   fooN)rx   ry   rz   r   r   r  rU   r  rG   r   r   rs   rs   rs   rt   r    s    
r  c                   @   s&   e Zd Ze ZedddedgZdS )DefaultRichTextFieldPager   r   r  Nrx   ry   rz   r<   r  r   r   rs   rs   rs   rt   r    s
    
r  c                   @   ,   e Zd Zede fgZejedg ZdS )DefaultRichBlockFieldPager.  r  N)	rx   ry   rz   r=   r'   r  rG   r   r   rs   rs   rs   rt   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editorr   r   r  Nr  rs   rs   rs   rt   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)rx   ry   rz   r=   r'   r  r   r   rs   rs   rs   rt   r    s    
r  c                   @   s.   e Zd Zeg ddZedddedgZdS )RichTextFieldWithFeaturesPage)	quotationembedzmade-up-feature)featuresr   r   r  Nr  rs   rs   rs   rt   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)rx   ry   rz   r   r   r   r   r<   r  r   r   rs   rs   rs   rt   r     s    r  c                   @       e Zd ZedddedgZdS )SectionedRichTextPager   r   r  Nrx   ry   rz   r   r   r   rs   rs   rs   rt   r  	      
r  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.InlineStreamPager  r   r  r.  r   r  N)rx   ry   rz   r   r   r   r   r=   r#   r'   r@   r  r   r   rs   rs   rs   rt   r
    s    r
  c                   @   r  )InlineStreamPager   r   r  Nr  rs   rs   rs   rt   r    r	  r  c                   @   s&   e Zd Zede fgZedgZdS )TableBlockStreamPagetableN)rx   ry   rz   r=   r7   r  r   r   rs   rs   rs   rt   r  %  s    r  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)rx   ry   rz   r   r  r   r  r   r  r   favourite_colourrs   rs   rs   rt   r  +  s    r  c                   @      e Zd ZedgZdS )PanelSiteSettingsr   Nrx   ry   rz   r   r   rs   rs   rs   rt   r  1      r  c                   @   r  )PanelGenericSettingsr   Nr  rs   rs   rs   rt   r  5  r  r  c                   @   4   e Zd ZeeedgddeedgddgZdS )TabbedSiteSettingsr   	First tabr  r  
Second tabNrx   ry   rz   r"   r    r   r  rs   rs   rs   rt   r  9      r  c                   @   r  )TabbedGenericSettingsr   r  r  r  r  Nr  rs   rs   rs   rt   r  B  r  r  c                   @   rv   )AlwaysShowInMenusPageTN)rx   ry   rz   show_in_menus_defaultrs   rs   rs   rt   r  K  r}   r  c                   @   s   e Zd Zede fgZdS )"AddedStreamFieldWithoutDefaultPager   Nrx   ry   rz   r=   r#   r  rs   rs   rs   rt   r  P  r   r  c                   @   s    e Zd Zede fgddZdS )*AddedStreamFieldWithEmptyStringDefaultPager   r  r  Nr  rs   rs   rs   rt   r   T      r   c                   @   s    e Zd Zede fgg dZdS )(AddedStreamFieldWithEmptyListDefaultPager   r  Nr  rs   rs   rs   rt   r"  X  r!  r"  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_data	superuserr  N)
rx   ry   rz   r   r   r$  r%  rG   r   r   rs   rs   rs   rt   r#  \  s    

r#  c                   @   ri  )SimpleParentPageztests.SimpleChildPageNr  rs   rs   rs   rt   r'  f  r  r'  c                   @   s   e Zd ZdgZdZdS )SimpleChildPageztests.SimpleParentPagerS   N)rx   ry   rz   rB  max_count_per_parentrs   rs   rs   rt   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   r  z	Last Namer   r   Personr  social_linksc                   @   r  )zPersonPage.Metar,  PersonsNr  rs   rs   rs   rt   r|     r  r|   N)rx   ry   rz   r   r   r   r   rG   r   r   r|   rs   rs   rs   rt   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   r+  ztests.AddressTagTr  tests.PersonPager  r,  tori   r  addressr  c                   @   r  )zAddress.Metar/  	AddressesNr  rs   rs   rs   rt   r|     r  r|   N)rx   ry   rz   r   r   r3  r   r  r   personr   r   r|   rs   rs   rs   rt   r/    s     r/  c                   @   s   e Zd ZedejddZdS )
AddressTagztests.Addressr  r2  rj   ri   Nr  rs   rs   rs   rt   r6    r{  r6  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   )twitterTwitter)facebookFacebookr  r0  r-  r,  r1  rn   kindc                   @   r  )zSocialLink.MetazSocial linkzSocial linksNr  rs   rs   rs   rt   r|     r  r|   N)rx   ry   rz   r   r~   rn   r   r>  r   r5  r   r|   rs   rs   rs   rt   r8    s    r8  c                   @   s(   e Zd ZedddZejedg ZdS )RestaurantPageztests.TaggedRestaurantTr  r  N)rx   ry   rz   r   r  rG   r   r   rs   rs   rs   rt   r?    s
    
r?  c                   @   r  )RestaurantTagFc                   @   r  )zRestaurantTag.MetaTagTagsNr  rs   rs   rs   rt   r|     r  r|   N)rx   ry   rz   free_taggingr|   rs   rs   rs   rt   r@    r  r@  c                   @   s.   e Zd ZejedejdZedejddZ	dS )TaggedRestauranttagged_restaurantsr   ztests.RestaurantPager  r7  N)
rx   ry   rz   r   r   r@  r   r  r   r   rs   rs   rs   rt   rD    s    
rD  c                   @   r   )
SimpleTaskNr   rs   rs   rs   rt   rF    r   rF  c                   @   s   e Zd Zedd ZdS )DeadlyTextInputc                 C   s   t d)Nz1BOOM! Attempted to evaluate DeadlyTextInput.media)	Exceptionrq   rs   rs   rt   media  r   zDeadlyTextInput.mediaN)rx   ry   rz   r   rI  rs   rs   rs   rt   rG    s    rG  c                       r   )DeadlyCharBlockc                    s&   t jt d| _t j|i | d S )N)rh  )r   r   rG  r  r   rj  )rr   rr  rs  r   rs   rt   rj    s   zDeadlyCharBlock.__init__rx  rs   rs   r   rt   rJ    r   rJ  c                   @   r  )DeadlyStreamPager   r  N)	rx   ry   rz   r=   rJ  r  rG   r   r   rs   rs   rs   rt   rK    s    
rK  c                   @   0   e Zd ZejedejdZejdejddZdS )TaggedRestaurantDocumenttagged_documentsr   ztests.CustomRestaurantDocumentr  r7  N	rx   ry   rz   r   r   r@  r   r  r   rs   rs   rs   rt   rM        
rM  c                   @   "   e Zd ZedddedZejZdS )CustomRestaurantDocumentNTr  r   re   r  r  )rx   ry   rz   r   rM  r  r;   ro  rs   rs   rs   rt   rR  	  s    
rR  c                   @   rL  )TaggedRestaurantImagetagged_imagesr   ztests.CustomRestaurantImager  r7  NrO  rs   rs   rs   rt   rT  	  rP  rT  c                   @   rQ  )CustomRestaurantImageNTr  rS  )rx   ry   rz   r   rT  r  rC   ro  rs   rs   rs   rt   rV  	  s
    
rV  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)rx   ry   rz   r   r   r   r%  r   rs   rs   rs   rt   rW  #	  s    rW  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)re   rh   N)	rx   ry   rz   r   r   rG   r   r<   r   rs   rs   rs   rt   rX  ,	  s    
rX  c                   @   s"   e Zd Zejeddddg ZdS )GalleryPagegallery_imageszGallery imagesr   )r  chooser_field_nameN)rx   ry   rz   rG   r   r   rs   rs   rs   rt   rY  7	  s    
rY  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.GalleryPagerZ  r   r   rg   r"  N)	rx   ry   rz   r   r   r   r   r   r   rs   rs   rs   rt   r\  ?	  s    
r\  c                   @   rv   )GenericSnippetNoIndexPageTN)rx   ry   rz   wagtail_reference_index_ignorers   rs   rs   rt   r]  J	  r}   r]  c                   @   s&   e Zd ZejeejdddZde_dS )GenericSnippetNoFieldIndexPageTr+  N)	rx   ry   rz   r   r   r   r   snippet_content_type_nonindexedr^  rs   rs   rs   rt   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 rl   )randomchoicerA  )r  i
componentsrs   rt   	<genexpr>X	  s   $ z%random_quotable_pk.<locals>.<genexpr>
   )stringascii_lettersdigitsr  range)
quote_chrsrs   rd  rt   random_quotable_pkU	  s   rm  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  r^   release_datec                 C   s>   | j | j d d d krdS | j   }|d d d krd S dS )Nrb  TF)r^   lower)rr   loweredrs   rs   rt   is_cooll	  s
   zFeatureCompleteToy.is_coolc                 C   s   | j  d| j dS )Nz ())r^   ro  rq   rs   rs   rt   r   s	  s   zFeatureCompleteToy.__str__c                   @   ri  )zFeatureCompleteToy.Meta)can_set_release_datezCan set release dateNr  rs   rs   rs   rt   r|   v	  r  r|   N)rx   ry   rz   r   r   rm  stridr^   r   datetimedatetodayro  rP   r  r%  r  r  rr  r   r|   rs   rs   rs   rt   rn  \	  s     rn  c                   @   s   e Zd ZejdejddZdS ) PurgeRevisionsProtectedTestModelr  rg   r"  N)rx   ry   rz   r   r  r1  revisionrs   rs   rs   rt   ry  z	  ra  ry  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   r   rl   )r   rq   rs   rs   rt   r   	  r   zSearchTestModel.__str__N)rx   ry   rz   r   r   r   r   r  r   r   r   rs   rs   rs   rt   r{  	  s    r{  c                   @   r  )CustomPermissionTesterc                 C   r   )NFrs   rq   rs   rs   rt   can_view_revisions	  r  z)CustomPermissionTester.can_view_revisionsN)rx   ry   rz   r}  rs   rs   rs   rt   r|  	  r   r|  c                   @   r  )CustomPermissionPagec                 C   s
   t || S rl   )r|  )rr   r  rs   rs   rt   permissions_for_user	  r   z)CustomPermissionPage.permissions_for_userN)rx   ry   rz   r  rs   rs   rs   rt   r~  	  r   r~  c                   @   s&   e Zd ZejddZG dd dZdS )CustomPermissionModel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)addchangedeleteviewbulk_update))can_start_troublezCan start trouble)cause_chaosz)Cause chaos for advanced permission model)change_textzChange text)controlzManage custom permission modelN)rx   ry   rz   r  r  default_permissionsr  rs   rs   rs   rt   r|   	  s
    	r|   N)rx   ry   rz   r   r   r  r|   rs   rs   rs   rt   r  	  s    r  (:  rv  r  r  ra  rh  r  djangor   django.confr   "django.contrib.contenttypes.fieldsr   r   "django.contrib.contenttypes.modelsr   django.core.exceptionsr   django.core.paginatorr   r	   r
   	django.dbr   django.shortcutsr   django.template.responser   django.utils.translationr   ro  modelcluster.contrib.taggitr   modelcluster.fieldsr   r   modelcluster.modelsr   taggit.managersr   taggit.modelsr   r   r   wagtail.adminr   wagtail.admin.formsr   wagtail.admin.forms.pagesr   wagtail.admin.mailr   wagtail.admin.panelsr   r   r   r   r   r    r!   r"   wagtail.blocksr#   r$   r%   r&   r'   r(   r)   wagtail.compatr*   wagtail.contrib.forms.formsr+   r,   wagtail.contrib.forms.modelsr-   r.   r/   r0   wagtail.contrib.forms.panelsr1   wagtail.contrib.forms.viewsr2   wagtail.contrib.settings.modelsr3   r4   r5   wagtail.contrib.sitemapsr6   "wagtail.contrib.table_block.blocksr7   wagtail.documentsr8   wagtail.documents.blocksr9   wagtail.documents.modelsr:   r;   wagtail.fieldsr<   r=   wagtail.imagesr>   wagtail.images.blocksr?   r@   wagtail.images.modelsrA   rB   rC   wagtail.modelsrD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   wagtail.searchrP   wagtail.snippets.blocksrQ   wagtail.snippets.modelsrR   rT   rU   r  r  r   Modelrc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(  r*  r2  r3  rP  rQ  r`  ry  rz  r|  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Indexedr  r  Managerr  r  r  r  r  r  r  r  r  r  r  r  r  r  r)  r*  r@  rC  r   r  r  r  rH  rK  rM  rN  rO  rQ  rR  rS  rT  rU  rZ  r]  rb  rc  re  rg  rq  rx  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  from_querysetr  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/  r6  r8  r?  r@  rD  rF  	TextInputrG  rJ  rK  ReimportedImageModelReimportedDocumentModelrM  rR  rT  rV  rW  rX  rY  r\  r]  r_  rm  rn  ry  r{  r|  r~  r  rs   rs   rs   rt   <module>   s,   ($
	8

'		!H 7 )V(
		

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