o
    h.F                     @   s  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ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 d dlmZ G dd dej Z!G dd de!Z"G dd de!Z#G dd dej Z$G dd deZ%G dd dee#Z&G dd dee"Z'ej(ededdd ed!d"d g e%_(G d#d$ d$eZ)G d%d& d&ee#Z*G d'd( d(ee"Z+ej(ed)eddd*d+eded!d"d,d+g e)_(eej,d-ed.ge)_,G d/d0 d0eZ-G d1d2 d2ee"Z.ej(ed)ed!d"d g e-_(eej,d-ed.ge-_,G d3d4 d4eZ/G d5d6 d6ee#Z0G d7d8 d8ee"Z1G d9d: d:eZ2ej(ed;ededdd ed!d"d g e/_(eej,d-ed.ed<ge/_,G d=d> d>eZ3G d?d@ d@ee"Z4ej(ed)ed!d"d g e3_(G dAdB dBeZ5G dCdD dDee#Z6G dEdF dFee"Z7G dGdH dHee!Z8ej(edIedJedKedLedMedNedOedPeddd ededQdRd ed!d"d g e5_(eej,d-ed.ge5_,G dSdT dTeZ9G dUdV dVee"Z:ej(ed)ed!d"d g e9_(G dWdX dXee$Z;G dYdZ dZee"Z<ej(ed[ed\ed)ed]ed^ee$j=d_ed!d"d g e;_(eej,d-ed.ge;_,G d`da daee$Z>ej(edee$j=d_g e>_(eej,d-ed.ge>_,G dbdc dceZ?G ddde deeZ@dfS )g    )date)ValidationError)	Paginator)models)ClusterTaggableManager)ParentalKey)TaggedItemBase)
FieldPanelInlinePanelMultiFieldPanel)APIField)AbstractFormAbstractFormField)RichTextField)ImageRenditionField)	OrderablePage)indexc                   @   s   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d
d ZdZedededgZG dd dZdS )AbstractLinkFieldszExternal linkTblankzwagtailcore.Page+)nullr   related_name	on_deletez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 r"   \/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/test/demosite/models.pylink'   s
   zAbstractLinkFields.linkc                 C   s.   | j d u r| jd u r| jstdd S d S d S )NzDYou must provide a related page, related document or an external URL)r   r   r   r   r    r"   r"   r#   clean0   s   

zAbstractLinkFields.clean)r$   r   r   r   c                   @      e Zd ZdZdS )zAbstractLinkFields.MetaTN__name__
__module____qualname__abstractr"   r"   r"   r#   MetaB       r,   N)r(   r)   r*   r   URLFieldr   
ForeignKeyCASCADEr   r   propertyr$   r%   
api_fieldsr	   panelsr,   r"   r"   r"   r#   r      s2    

r   c                   @   sF   e Zd ZejdddZdej Zede	ej
dgZ
G dd dZd	S )
AbstractRelatedLink   z
Link title)
max_length	help_text)titler8   Linkc                   @   r&   )zAbstractRelatedLink.MetaTNr'   r"   r"   r"   r#   r,   P   r-   r,   N)r(   r)   r*   r   	CharFieldr8   r   r2   r	   r   r3   r,   r"   r"   r"   r#   r4   F   s    

r4   c                   @   sv   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	ej Zed
ededeejdgZG dd dZdS )AbstractCarouselItemwagtailimages.ImageTr   r   r   r   r   z	Embed URLr   r5   r6   r   )image	embed_urlcaptionr?   r@   rA   r9   c                   @   r&   )zAbstractCarouselItem.MetaTNr'   r"   r"   r"   r#   r,   l   r-   r,   N)r(   r)   r*   r   r/   SET_NULLr?   r.   r@   r:   rA   r   r2   r	   r   r3   r,   r"   r"   r"   r#   r;   T   s&    
r;   c                   @   s   e Zd ZejdddZejddZejdddZejdddZ	ejdddZ
ejdddZejdddZdZeded	ed
ededededgZG dd dZdS )ContactFieldsMixin   Tr>   r   r5   
   )	telephoneemail	address_1	address_2citycountry	post_coderF   rG   rH   rI   rJ   rK   rL   c                   @   r&   )zContactFieldsMixin.MetaTNr'   r"   r"   r"   r#   r,      r-   r,   N)r(   r)   r*   r   r:   rF   
EmailFieldrG   rH   rI   rJ   rK   rL   r2   r	   r3   r,   r"   r"   r"   r#   rC   p   s$    
rC   c                   @   sN   e Zd ZejeddejdZeddZ	dZ
ejedg ZG dd dZd	S )
HomePageTr   parent_linkr   r   r   )bodycarousel_itemsrelated_linksrQ   c                   @   r&   )zHomePage.MetahomepageN)r(   r)   r*   verbose_namer"   r"   r"   r#   r,      r-   r,   N)r(   r)   r*   r   OneToOneFieldr   r0   page_ptrr   rQ   r2   search_fieldsr   SearchFieldr,   r"   r"   r"   r#   rN      s    

rN   c                   @      e Zd ZeddejdZdS )HomePageCarouselItemrN   rR   r   r   Nr(   r)   r*   r   r   r0   pager"   r"   r"   r#   r[          
r[   c                   @   rZ   )HomePageRelatedLinkrN   rS   r\   Nr]   r"   r"   r"   r#   r`      r_   r`   rQ   rR   zCarousel itemslabelrS   zRelated linksc                   @   sh   e Zd ZejeddejdZeddZ	eddZ
ejdddejddZdZejeded	g Zd
S )StandardPageTr   rO   r   r<   r=   )introrQ   
feed_imagerR   rS   rd   rQ   N)r(   r)   r*   r   rV   r   r0   rW   r   rd   rQ   r/   rB   re   r2   rX   r   rY   r"   r"   r"   r#   rc      s$    



rc   c                   @   rZ   )StandardPageCarouselItemrc   rR   r\   Nr]   r"   r"   r"   r#   rf      r_   rf   c                   @   rZ   )StandardPageRelatedLinkrc   rS   r\   Nr]   r"   r"   r"   r#   rg      r_   rg   rd   zCarousel item)headingrb   zRelated linkzCommon page configurationre   c                   @   sV   e Zd ZejeddejdZeddZ	ej
dddejddZdZejedg Zd	S )
StandardIndexPageTr   rO   r   r<   r=   )rd   re   rS   rd   N)r(   r)   r*   r   rV   r   r0   rW   r   rd   r/   rB   re   r2   rX   r   rY   r"   r"   r"   r#   ri      s     


ri   c                   @   rZ   )StandardIndexPageRelatedLinkri   rS   r\   Nr]   r"   r"   r"   r#   rj     r_   rj   c                
   @   s   e Zd ZejeddejdZe Z	e
dddZedZejdddejddZed	ed
ededededdddededfZejed	g Zdd ZdS )BlogEntryPageTr   rO   BlogEntryPageTag)throughr   z	Post dater<   r=   rQ   tagsr   re   feed_image_thumbnailzfill-300x300)source)
serializerrR   rS   c                 C   s   t |  S r   )BlogIndexPageancestor_oflastr    r"   r"   r#   get_blog_indexD  s   zBlogEntryPage.get_blog_indexN)r(   r)   r*   r   rV   r   r0   rW   r   rQ   r   rn   	DateFieldr   r/   rB   re   r   r   r2   rX   r   rY   ru   r"   r"   r"   r#   rk   $  s:    

	
rk   c                   @   rZ   )BlogEntryPageCarouselItemrk   rR   r\   Nr]   r"   r"   r"   r#   rw   I  r_   rw   c                   @   rZ   )BlogEntryPageRelatedLinkrk   rS   r\   Nr]   r"   r"   r"   r#   rx   O  r_   rx   c                   @   rZ   )rl   rk   tagged_itemsr\   N)r(   r)   r*   r   r   r0   content_objectr"   r"   r"   r#   rl   U  r_   rl   r   rn   c                       sX   e Zd ZejeddejdZeddZ	dZ
ejedg Zdd Z fd	d
Z  ZS )rr   Tr   rO   r   rd   rS   rd   c                 C   s   t j|  }|d}|S )Nz-date)rk   objectsdescendant_ofliveorder_by)r!   entriesr"   r"   r#   get_blog_entriesy  s   
zBlogIndexPage.get_blog_entriesc                    sZ   |   }|jd}|r|j|d}t|dd}||jd}t |}||d< |S )Ntag)
tags__namerE   )per_pager^   r   )r   GETgetfilterr   get_pagesuperget_context)r!   requestr   r   	paginatorcontext	__class__r"   r#   r     s   zBlogIndexPage.get_context)r(   r)   r*   r   rV   r   r0   rW   r   rd   r2   rX   r   rY   r   r   __classcell__r"   r"   r   r#   rr   j  s    

	rr   c                   @   rZ   )BlogIndexPageRelatedLinkrr   rS   r\   Nr]   r"   r"   r"   r#   r     r_   r   c                   @   s   e Zd ZejeddejdZdZe	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dZejedededg Zdd ZdS )	EventPageTr   rO   ))publicPublic)privatePrivatez
Start datezEnd datez(Not required if event is on a single day)r   r   r7   z
Start time)r   r   zEnd timer5   )r6   choicesr6   r   r<   r=   )	date_fromdate_to	time_fromtime_toaudiencelocationrQ   costsignup_linkre   rR   rS   speakersget_audience_displayr   rQ   c                 C   s   t j|  S r   )EventIndexPager|   rs   rt   r    r"   r"   r#   get_event_index  s   zEventPage.get_event_indexN)r(   r)   r*   r   rV   r   r0   rW   AUDIENCE_CHOICESrv   r   r   	TimeFieldr   r   r:   r   r   r   rQ   r   r.   r   r/   rB   re   r2   rX   r   rY   r   r"   r"   r"   r#   r     sB    


r   c                   @   rZ   )EventPageCarouselItemr   rR   r\   Nr]   r"   r"   r"   r#   r     r_   r   c                   @   rZ   )EventPageRelatedLinkr   rS   r\   Nr]   r"   r"   r"   r#   r     r_   r   c                   @   sv   e Zd Ze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dZedededeejdgZdS )EventPageSpeakerr   r   r\   Namer5   Tr>   Surnamer<   r   r=   )
first_name	last_namer?   r   r   r?   r9   N)r(   r)   r*   r   r   r0   r^   r:   r   r   r/   rB   r?   r2   r	   r   r   r3   r"   r"   r"   r#   r     s"    
r   r   r   r   r   r   r   r   r   r   Speakersc                   @   sH   e Zd ZejeddejdZeddZ	dZ
ejedg Zdd Zd	S )
r   Tr   rO   r   r{   rd   c                 C   s.   t j|  }|jt d}|d}|S )N)date_from__gter   )r   r|   r}   r~   r   r   todayr   )r!   eventsr"   r"   r#   
get_events(  s   
zEventIndexPage.get_eventsN)r(   r)   r*   r   rV   r   r0   rW   r   rd   r2   rX   r   rY   r   r"   r"   r"   r#   r     s    

r   c                   @   rZ   )EventIndexPageRelatedLinkr   rS   r\   Nr]   r"   r"   r"   r#   r   6  r_   r   c                   @   s   e Zd ZejeddejdZejddZ	ejddZ
eddZeddZejdddejddZejdddejddZd	ej Zejed
edededg ZdS )
PersonPageTr   rO   r5   r   r   r<   r=   )r   r   rd   	biographyr?   re   rS   r   r   rd   r   N)r(   r)   r*   r   rV   r   r0   rW   r:   r   r   r   rd   r   r/   rB   r?   re   rC   r2   rX   r   rY   r"   r"   r"   r#   r   E  s>    




r   c                   @   rZ   )PersonPageRelatedLinkr   rS   r\   Nr]   r"   r"   r"   r#   r   n  r_   r   r   r   r   r?   Contactc                   @   s\   e Zd ZejeddejdZeddZ	ej
dddejddZdej Zejedg Zd	S )
ContactPageTr   rO   r   r<   r=   )rQ   re   rQ   N)r(   r)   r*   r   rV   r   r0   rW   r   rQ   r/   rB   re   rC   r2   rX   r   rY   r"   r"   r"   r#   r     s$    


r   c                   @   rZ   )	FormFieldFormPageform_fieldsr\   Nr]   r"   r"   r"   r#   r     s    r   c                   @   s>   e Zd ZejeddejdZedgZ	e
jedddg ZdS )r   Tr   rO   r   zForm fieldsra   N)r(   r)   r*   r   rV   r   r0   rW   r   r2   r   content_panelsr
   r"   r"   r"   r#   r     s    



r   N)Adatetimer   django.core.exceptionsr   django.core.paginatorr   	django.dbr   modelcluster.contrib.taggitr   modelcluster.fieldsr   taggit.modelsr   wagtail.admin.panelsr	   r
   r   wagtail.apir   wagtail.contrib.forms.modelsr   r   wagtail.fieldsr   wagtail.images.api.fieldsr   wagtail.modelsr   r   wagtail.searchr   Modelr   r4   r;   rC   rN   r[   r`   r   rc   rf   rg   promote_panelsri   rj   rk   rw   rx   rl   rr   r   r   r   r   r   r   r   r   r   r3   r   r   r   r"   r"   r"   r#   <module>   s    0'



	

	%


	*
	:




	)


	

