o
    gF0h                     @   s   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 d d	lmZmZmZmZ G d
d deZG dd de	ZG dd de	ZdS )    default)models)	Paginator	EmptyPagePageNotAnInteger)Page)StreamFieldRichTextField)ImageChooserBlock)
FieldPanel)blocks)RichTextBlock	TextBlockStructBlock	CharBlockc                   @   s4   e Zd ZeddddZedddZG dd dZd	S )
	CodeBlockTzProgramming languagepython)required	help_textr   zCode snippet)r   r   c                   @   s   e Zd ZdZdZdZdS )zCodeBlock.Metazblocks/code_block.htmlcodeCodeN)__name__
__module____qualname__templateiconlabel r   r   -/var/www/html/ndineBlogger/projects/models.pyMeta   s    r    N)r   r   r   r   languager   r   r    r   r   r   r   r      s    r   c                       s<   e Zd ZejddZdZeje	dg Z fddZ
  ZS )ProjectIndexPageT)blank   introc           	         s   t  j|g|R i |}|   d}|jdd}t|| j}z|	|}W n t
y8   |	d}Y n tyF   |	|j}Y nw ||d< |S )Nz-first_published_atpage   projects)superget_contextget_childrenspecificorder_byGETgetr   projects_per_pager&   r   r   	num_pages)	selfrequestargskwargscontextall_projectsr&   	paginatorr(   	__class__r   r   r*      s   zProjectIndexPage.get_context)r   r   r   r   	TextFieldr%   r0   r   content_panelsr   r*   __classcell__r   r   r9   r   r"      s    r"   c                	       s   e Zd Zej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ejdd	Zed
e fgdddZede fde fde fgddZejddZejedededededededg Z fddZ  ZS )ProjectPage   )
max_lengthTz/URL to the project's source code (e.g., GitHub))r#   r   z#URL to the live demo of the projectzwagtailimages.Imageproject_thumbnails)nullr#   	on_deleterelated_name
screenshot)use_json_fieldr#   	paragraphimager   )rF   r   r   name
tech_stackcode_urldemo_url	thumbnailscreenshotsdescriptionc              
      s   t  j|g|R i |}z|  jd7  _|   W |S  tyA } zdd l}|t}|dt	|  W Y d }~|S d }~ww )Nr'   r   z"Error in ProjectPage.get_context: )
r)   r*   views_countsave	Exceptionlogging	getLoggerr   errorstr)r2   r3   r4   r5   r6   erS   loggerr9   r   r   r*   S   s   

zProjectPage.get_context)r   r   r   r   	CharFieldrI   rJ   URLFieldrK   rL   
ForeignKeySET_NULLrM   r	   r   rN   r   r   r   rO   PositiveIntegerFieldrP   r   r<   r   r*   r=   r   r   r9   r   r>   3   sF    

r>   N)email.policyr   	django.dbr   django.core.paginatorr   r   r   wagtail.modelsr   wagtail.fieldsr	   r
   wagtail.images.blocksr   wagtail.admin.panelsr   wagtailr   wagtail.blocksr   r   r   r   r   r"   r>   r   r   r   r   <module>   s    
