a
    Dg.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 d S N)	link_pageurllink_documentlink_externalself r"   [/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/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 )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                   @   s   e Zd ZdZdS )zAbstractLinkFields.MetaTN__name__
__module____qualname__Zabstractr"   r"   r"   r#   MetaB   s   r*   N)r'   r(   r)   r   URLFieldr   
ForeignKeyCASCADEr   r   propertyr$   r%   
api_fieldsr	   panelsr*   r"   r"   r"   r#   r      s0   

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)titler5   Linkc                   @   s   e Zd ZdZdS )zAbstractRelatedLink.MetaTNr&   r"   r"   r"   r#   r*   P   s   r*   N)r'   r(   r)   r   	CharFieldr5   r   r/   r	   r   r0   r*   r"   r"   r"   r#   r1   F   s   

r1   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   r2   r3   r   )image	embed_urlcaptionr<   r=   r>   r6   c                   @   s   e Zd ZdZdS )zAbstractCarouselItem.MetaTNr&   r"   r"   r"   r#   r*   l   s   r*   N)r'   r(   r)   r   r,   SET_NULLr<   r+   r=   r7   r>   r   r/   r	   r   r0   r*   r"   r"   r"   r#   r8   T   s$   
r8   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   r2   
   )	telephoneemail	address_1	address_2citycountry	post_coderC   rD   rE   rF   rG   rH   rI   c                   @   s   e Zd ZdZdS )zContactFieldsMixin.MetaTNr&   r"   r"   r"   r#   r*      s   r*   N)r'   r(   r)   r   r7   rC   Z
EmailFieldrD   rE   rF   rG   rH   rI   r/   r	   r0   r*   r"   r"   r"   r#   r@   p   s"   
r@   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   Zparent_linkr   r   r   )bodycarousel_itemsrelated_linksrL   c                   @   s   e Zd ZdZdS )zHomePage.MetaZhomepageN)r'   r(   r)   Zverbose_namer"   r"   r"   r#   r*      s   r*   N)r'   r(   r)   r   OneToOneFieldr   r-   page_ptrr   rL   r/   search_fieldsr   SearchFieldr*   r"   r"   r"   r#   rJ      s   

rJ   c                   @   s   e Zd ZeddejdZdS )HomePageCarouselItemrJ   rM   r   r   Nr'   r(   r)   r   r   r-   pager"   r"   r"   r#   rS      s   rS   c                   @   s   e Zd ZeddejdZdS )HomePageRelatedLinkrJ   rN   rT   NrU   r"   r"   r"   r#   rW      s   rW   rL   rM   zCarousel itemslabelrN   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   rK   r   r9   r:   )introrL   
feed_imagerM   rN   r[   rL   N)r'   r(   r)   r   rO   r   r-   rP   r   r[   rL   r,   r?   r\   r/   rQ   r   rR   r"   r"   r"   r#   rZ      s"   


rZ   c                   @   s   e Zd ZeddejdZdS )StandardPageCarouselItemrZ   rM   rT   NrU   r"   r"   r"   r#   r]      s   r]   c                   @   s   e Zd ZeddejdZdS )StandardPageRelatedLinkrZ   rN   rT   NrU   r"   r"   r"   r#   r^      s   r^   r[   zCarousel item)headingrY   zRelated linkzCommon page configurationr\   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   rK   r   r9   r:   )r[   r\   rN   r[   N)r'   r(   r)   r   rO   r   r-   rP   r   r[   r,   r?   r\   r/   rQ   r   rR   r"   r"   r"   r#   r`      s   

r`   c                   @   s   e Zd ZeddejdZdS )StandardIndexPageRelatedLinkr`   rN   rT   NrU   r"   r"   r"   r#   ra     s   ra   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   rK   BlogEntryPageTag)Zthroughr   z	Post dater9   r:   rL   tagsr   r\   Zfeed_image_thumbnailzfill-300x300)source)
serializerrM   rN   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   rO   r   r-   rP   r   rL   r   rd   	DateFieldr   r,   r?   r\   r   r   r/   rQ   r   rR   rj   r"   r"   r"   r#   rb   $  s8   

	
rb   c                   @   s   e Zd ZeddejdZdS )BlogEntryPageCarouselItemrb   rM   rT   NrU   r"   r"   r"   r#   rl   I  s   rl   c                   @   s   e Zd ZeddejdZdS )BlogEntryPageRelatedLinkrb   rN   rT   NrU   r"   r"   r"   r#   rm   O  s   rm   c                   @   s   e Zd ZeddejdZdS )rc   rb   Ztagged_itemsrT   N)r'   r(   r)   r   r   r-   Zcontent_objectr"   r"   r"   r#   rc   U  s   rc   r   rd   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 )rg   Tr   rK   r   r[   rN   r[   c                 C   s   t j|  }|d}|S )Nz-date)rb   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)Z
tags__namerB   )Zper_pagerV   rs   )rt   GETgetfilterr   Zget_pagesuperget_context)r!   requestrs   ru   Z	paginatorcontext	__class__r"   r#   rz     s    zBlogIndexPage.get_context)r'   r(   r)   r   rO   r   r-   rP   r   r[   r/   rQ   r   rR   rt   rz   __classcell__r"   r"   r}   r#   rg   j  s   

	rg   c                   @   s   e Zd ZeddejdZdS )BlogIndexPageRelatedLinkrg   rN   rT   NrU   r"   r"   r"   r#   r     s   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   rK   ))publicZPublic)privateZPrivatez
Start datezEnd datez(Not required if event is on a single day)r   r   r4   z
Start time)r   r   zEnd timer2   )r3   choicesr3   r   r9   r:   )	date_fromdate_to	time_fromtime_toaudiencelocationrL   costsignup_linkr\   rM   rN   speakersZget_audience_displayr   rL   c                 C   s   t j|  S r   )EventIndexPagero   rh   ri   r    r"   r"   r#   get_event_index  s    zEventPage.get_event_indexN)r'   r(   r)   r   rO   r   r-   rP   ZAUDIENCE_CHOICESrk   r   r   Z	TimeFieldr   r   r7   r   r   r   rL   r   r+   r   r,   r?   r\   r/   rQ   r   rR   r   r"   r"   r"   r#   r     s@   


r   c                   @   s   e Zd ZeddejdZdS )EventPageCarouselItemr   rM   rT   NrU   r"   r"   r"   r#   r     s   r   c                   @   s   e Zd ZeddejdZdS )EventPageRelatedLinkr   rN   rT   NrU   r"   r"   r"   r#   r     s   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   rT   Namer2   Tr;   ZSurnamer9   r   r:   )
first_name	last_namer<   r   r   r<   r6   N)r'   r(   r)   r   r   r-   rV   r7   r   r   r,   r?   r<   r/   r	   r   r   r0   r"   r"   r"   r#   r     s    
r   r   r   r   r   r   r   r   r   r   Z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   rK   r   rn   r[   c                 C   s.   t j|  }|jt d}|d}|S )N)Zdate_from__gter   )r   ro   rp   rq   rx   r   todayrr   )r!   eventsr"   r"   r#   
get_events(  s    
zEventIndexPage.get_eventsN)r'   r(   r)   r   rO   r   r-   rP   r   r[   r/   rQ   r   rR   r   r"   r"   r"   r#   r     s   

r   c                   @   s   e Zd ZeddejdZdS )EventIndexPageRelatedLinkr   rN   rT   NrU   r"   r"   r"   r#   r   6  s   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   rK   r2   r   r   r9   r:   )r   r   r[   	biographyr<   r\   rN   r   r   r[   r   N)r'   r(   r)   r   rO   r   r-   rP   r7   r   r   r   r[   r   r,   r?   r<   r\   r@   r/   rQ   r   rR   r"   r"   r"   r#   r   E  s<   



r   c                   @   s   e Zd ZeddejdZdS )PersonPageRelatedLinkr   rN   rT   NrU   r"   r"   r"   r#   r   n  s   r   r   r   r   r<   Z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   rK   r   r9   r:   )rL   r\   rL   N)r'   r(   r)   r   rO   r   r-   rP   r   rL   r,   r?   r\   r@   r/   rQ   r   rR   r"   r"   r"   r#   r     s"   

r   c                   @   s   e Zd ZeddejdZdS )	FormFieldFormPageform_fieldsrT   NrU   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   rK   r   zForm fieldsrX   N)r'   r(   r)   r   rO   r   r-   rP   r   r/   r   content_panelsr
   r"   r"   r"   r#   r     s   


r   N)Adatetimer   Zdjango.core.exceptionsr   Zdjango.core.paginatorr   Z	django.dbr   Zmodelcluster.contrib.taggitr   Zmodelcluster.fieldsr   Ztaggit.modelsr   Zwagtail.admin.panelsr	   r
   r   Zwagtail.apir   Zwagtail.contrib.forms.modelsr   r   Zwagtail.fieldsr   Zwagtail.images.api.fieldsr   Zwagtail.modelsr   r   Zwagtail.searchr   ZModelr   r1   r8   r@   rJ   rS   rW   r   rZ   r]   r^   Zpromote_panelsr`   ra   rb   rl   rm   rc   rg   r   r   r   r   r   r   r   r   r   r0   r   r   r   r"   r"   r"   r#   <module>   s   0'


	


	%

	
*
	:




	)


	

