o
    8i
                     @   sd   d dl mZmZ d dlmZ d dlmZ ddlmZm	Z	 G dd deZ
G dd	 d	eZd
d ZdS )    )ListView
DetailView)get_object_or_404)JsonResponse   )PostCategoryc                       s8   e Zd ZdZeZdZdZdZdd Z	 fddZ
  ZS )	PostListViewu!   Danh sách tất cả bài viếtzblog/post_list.htmlposts
   c                 C   s4   t jjddd}| jd}|r|j|d}|S )NTis_publishedcategorycategory_slug)category__slug)r   objectsfilterselect_relatedkwargsget)selfquerysetr    r   ./var/www/hoanhtaovolam_webdjango/blog/views.pyget_queryset   s
   zPostListView.get_querysetc                    sD   t  jdi |}tj |d< | jd}|r tt|d|d< |S )N
categoriesr   )slugcurrent_categoryr   )superget_context_datar   r   allr   r   r   )r   r   contextr   	__class__r   r   r      s   zPostListView.get_context_data)__name__
__module____qualname____doc__r   modeltemplate_namecontext_object_namepaginate_byr   r   __classcell__r   r   r"   r   r	      s    
r	   c                       sB   e Zd ZdZeZdZdZdd Zd fdd	Z	 fd	d
Z
  ZS )PostDetailViewu   Chi tiết bài viếtzblog/post_detail.htmlpostc                 C   s   t jjdddS )NTr   r   )r   r   r   r   )r   r   r   r   r   )   s   zPostDetailView.get_querysetNc                    s,   t  |}| jd7  _|jdgd |S )Nr   views)update_fields)r   
get_objectr/   save)r   r   objr"   r   r   r1   ,   s   zPostDetailView.get_objectc                    sP   t  jdi |}tjj| jjddj| jjdd d |d< t	j
 |d< |S )NT)r   r   )pk   related_postsr   r   )r   r   r   r   r   objectr   excluder4   r   r    )r   r   r!   r"   r   r   r   3   s   zPostDetailView.get_context_data)N)r$   r%   r&   r'   r   r(   r)   r*   r   r1   r   r,   r   r   r"   r   r-   #   s    r-   c                    sJ   t jjddddd }dt| fdd|D d}t|d	d
idS )z(API endpoint to get latest 10 blog postsTr   r   Nr   c                    sX   g | ](}|j |j| |jpd |jr|jjnd|jr! |jjnd|j	
ddqS ) Nz%Y-%m-%d %H:%M:%S)idtitleurlsummaryr   	thumbnail
created_at)r4   r;   get_absolute_urlexcerptr   namer>   build_absolute_urir<   r?   strftime).0r.   requestr   r   
<listcomp>E   s    

z$api_latest_posts.<locals>.<listcomp>)successcountr
   ensure_asciiF)json_dumps_params)r   r   r   r   lenr   )rG   r
   datar   rF   r   api_latest_posts>   s   

rO   N)django.views.genericr   r   django.shortcutsr   django.httpr   modelsr   r   r	   r-   rO   r   r   r   r   <module>   s    