o
    bg                     @   sv   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	 G dd dej
ZG dd	 d	ej
ZG d
d dej
ZdS )    )models)slugify)reverse)settings)CKEditor5Fieldc                       sl   e Zd ZejddZejdddZejddZ	ej
ddZG dd dZ fd	d
Zdd Zdd Z  ZS )Categoryd   
max_lengthTuniqueblank)r   auto_now_addc                   @   s   e Zd ZdZdgZdS )zCategory.Meta
CategoriesnameN)__name__
__module____qualname__verbose_name_pluralordering r   r    /var/www/html/gwz/news/models.pyMeta   s    
r   c                    (   | j s	t| j| _ t j|i | d S Nslugr   r   supersaveselfargskwargs	__class__r   r   r         zCategory.savec                 C      | j S r   r   r!   r   r   r   __str__      zCategory.__str__c                 C      t d| jgdS )Nznews:categoryr"   r   r   r)   r   r   r   get_absolute_url      zCategory.get_absolute_url)r   r   r   r   	CharFieldr   	SlugFieldr   	TextFielddescriptionDateTimeField
created_atr   r   r*   r/   __classcell__r   r   r$   r   r      s    r   c                       s`   e Zd ZejddZejdddZejddZ	G dd dZ
 fdd	Zd
d Zdd Z  ZS )Tag2   r	   Tr   r   c                   @   s   e Zd ZdgZdS )zTag.Metar   N)r   r   r   r   r   r   r   r   r   "   s    
r   c                    r   r   r   r    r$   r   r   r   %   r&   zTag.savec                 C   r'   r   r(   r)   r   r   r   r*   *   r+   zTag.__str__c                 C   r,   )Nznews:tagr-   r.   r)   r   r   r   r/   -   r0   zTag.get_absolute_url)r   r   r   r   r1   r   r2   r   r5   r6   r   r   r*   r/   r7   r   r   r$   r   r8      s    r8   c                       s&  e Zd ZdZejddZejdddZejdddZ	ej
ejejddZed	d
dZejdddddZej
eejddZejedddZejdeddZejdddZejddZejddZejddddZejddZej dddZ!G dd dZ" fd d!Z#d"d# Z$d$d% Z%e&d&d' Z'  Z(S )(Article))draftDraft)	published	Published   r	   Tr   )r
   r   articles)	on_deleterelated_nameContentextends)config_nameznews/featured/zMain image for the article)	upload_tonullr   	help_text)r   rB   
   r;   )r
   choicesdefault)rG   r   r   )auto_now   z0A brief description for SEO (max 160 characters))r
   r   rH   r   )rK   Fz$Feature this article on the homepage)rK   rH   c                   @   s>   e Zd ZddgZejddgdejdgdejdgdgZdS )zArticle.Metaz-published_datez-created_at)fieldsstatusis_featuredN)r   r   r   r   r   Indexindexesr   r   r   r   r   c   s    r   c                    r   r   )r   r   titler   r   r    r$   r   r   r   k   r&   zArticle.savec                 C   r'   r   )rS   r)   r   r   r   r*   p   r+   zArticle.__str__c                 C   r,   )Nznews:article_detailr-   r.   r)   r   r   r   r/   s   r0   zArticle.get_absolute_urlc                 C   s$   d}t | j }|| }td|S )z.Estimate reading time based on content length.r?      )lencontentsplitmax)r!   words_per_minute
word_countminutesr   r   r   reading_timev   s   
zArticle.reading_time))r   r   r   STATUS_CHOICESr   r1   rS   r2   r   subtitle
ForeignKeyr   AUTH_USER_MODELPROTECTauthorr   rV   
ImageFieldfeatured_imager   categoryManyToManyFieldr8   tagsrO   r5   published_dater6   
updated_atmeta_descriptionPositiveIntegerFieldviews_countBooleanFieldrP   r   r   r*   r/   propertyr\   r7   r   r   r$   r   r:   0   sf    r:   N)	django.dbr   django.utils.textr   django.urlsr   django.confr   django_ckeditor_5.fieldsr   Modelr   r8   r:   r   r   r   r   <module>   s    