o
    fsi                     @   sp   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	G d
d dejZ
dS )    )models)timezone)slugifyc                       s   e Zd ZdZejddZejddddZej	ddZ
ejddZejdd	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dd Z fddZdd Zdd Zedd Z  ZS )FeedbackEventu   
    Independent event model for feedback collection.
    Completely decoupled from other modules — admin creates these
    specifically for each feedback campaign.
       )
max_lengthT)r   uniqueblankr	   defaultFz'If true, the public stats page is live.)r   	help_text)nullr	   auto_now_addauto_nowc                   @   s   e Zd ZdgZdZdZdS )zFeedbackEvent.Meta-created_atzFeedback EventzFeedback EventsN)__name__
__module____qualname__orderingverbose_nameverbose_name_plural r   r   ;/var/www/html/smartRegister/backend/apps/feedback/models.pyMeta   s    r   c                 C      | j S Nnameselfr   r   r   __str__      zFeedbackEvent.__str__c                    s(   | j s	t| j| _ t j|i | d S r   )slugr   r    supersave)r"   argskwargs	__class__r   r   r'      s   zFeedbackEvent.savec                 C   s*   d| _ d| _t | _| jg dd d S )NTFis_archived	is_activearchived_atupdate_fields)r-   r.   r   nowr/   r'   r!   r   r   r   archive#   s   
zFeedbackEvent.archivec                 C   s&   d| _ d| _d | _| jg dd d S )NFTr,   r0   )r-   r.   r/   r'   r!   r   r   r   	unarchive)   s   zFeedbackEvent.unarchivec                 C   s
   | j  S r   )	feedbackscountr!   r   r   r   feedback_count/   s   
zFeedbackEvent.feedback_count)r   r   r   __doc__r   	CharFieldr    	SlugFieldr%   	TextFielddescriptionBooleanFieldr.   is_stats_publishedr-   DateTimeFieldr/   
created_at
updated_atr   r#   r'   r3   r4   propertyr7   __classcell__r   r   r*   r   r      s$    r   c                   @   sT   e Zd ZejdddZejddZejddZ	ej
ddZG dd dZd	d
 ZdS )FeedbackCategoryd   T)r   r   r
   r   r   c                   @   s   e Zd ZdZdZdgZdS )zFeedbackCategory.MetazFeedback CategoryzFeedback Categoriesr    N)r   r   r   r   r   r   r   r   r   r   r   :   s    
r   c                 C   r   r   r   r!   r   r   r   r#   ?   r$   zFeedbackCategory.__str__N)r   r   r   r   r9   r    r;   r<   r=   r.   r?   r@   r   r#   r   r   r   r   rD   4   s    rD   c                   @   s   e Zd ZdZejeejddZeje	ej
dddZejeddZe Zejddd	Zejdd
Zejddd	ZejddZejdddZejddZejejdZG dd dZdd ZdS )Feedback))   z1 - Very Poor)   z2 - Poor)   z3 - Average)   z4 - Good)   z5 - Excellentr5   )	on_deleterelated_nameT)rL   r   r	   rI   )choicesr   r   )r   r	   r
   rE   Fr   )r	   r   c                   @   s0   e Zd ZdgZejddgdejdgdgZdS )zFeedback.Metar   feedback_eventr@   )fieldsratingN)r   r   r   r   r   Indexindexesr   r   r   r   r   Z   s
    r   c                 C   s.   | j rdn| jp| jpd}d| d| jj S )N	AnonymousUnknownzFeedback from u    — )is_anonymousr    emailrO   )r"   	submitterr   r   r   r#   a   s   zFeedback.__str__N) r   r   r   RATING_CHOICESr   
ForeignKeyr   CASCADErO   rD   SET_NULLcategoryPositiveSmallIntegerFieldrQ   r;   commentr9   r    
EmailFieldrW   registration_coder=   rV   GenericIPAddressField
ip_addressis_publishedr?   r   r2   r@   r   r#   r   r   r   r   rF   C   s    rF   c                   @   s   e Zd ZdZejeejddddZej	ddZ
ejddZejddZejddZejdd	ZG d
d dZdd Zedd ZdS )FeedbackConfigurationz6Singleton configuration for the active feedback event.Tactive_configs)rL   r   r	   rM   r   z6Welcome! Your feedback helps us improve future events.z<Thank you for your feedback! We truly appreciate your input.zAFeedback collection is currently closed. Please check back later.r   c                   @   s   e Zd ZdZdZdS )zFeedbackConfiguration.MetazFeedback ConfigurationN)r   r   r   r   r   r   r   r   r   r   x   s    r   c                 C   s   d| j  S )Nu   Feedback Config — Active: )active_eventr!   r   r   r   r#   |   s   zFeedbackConfiguration.__str__c                 C   s   | j jdddid\}}|S )NrG   feedback_enabledT)iddefaults)objectsget_or_create)clsconfig_r   r   r   
get_config   s   z FeedbackConfiguration.get_configN)r   r   r   r8   r   rZ   r   r\   rg   r=   rh   r;   welcome_messagethank_you_messagedisabled_messager?   rA   r   r#   classmethodrp   r   r   r   r   re   f   s*    
re   N)	django.dbr   django.utilsr   django.utils.textr   Modelr   rD   rF   re   r   r   r   r   <module>   s    .#