o
    mh                     @   s   d dl mZ d dlmZ d dlmZ d dl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G dd dejZdS )    )models)
CustomUser)timezoneNc                   @   s.   e Zd ZejdddZejddZdd ZdS )Countryd   T)
max_lengthuniqueauto_now_addc                 C   s   | j S )N)nameself r   $/var/www/spmcq_backend/app/models.py__str__   s   zCountry.__str__N)	__name__
__module____qualname__r   	CharFieldr   DateTimeField
created_atr   r   r   r   r   r      s    r   c                   @   sL   e Zd Zeje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 )Category
categories)	on_deleterelated_namer   r   Tr	   c                   @   s   e Zd ZdZdS )zCategory.Metacountryr   N)r   r   r   unique_togetherr   r   r   r   Meta   s    r   c                 C   s   | j j d| j S )N - r   r   r   r   r   r         zCategory.__str__N)r   r   r   r   
ForeignKeyr   CASCADEr   r   r   r   r   r   r   r   r   r   r   r      s    r   c                   @   s   e Zd ZejeejdZejeejdZ	e
 ZejddZejddZejddZejddZejdg ddZejddZejddZejd	d
dgdZdd ZdS )QuestionAnswerr      r      ))Ar(   )Br)   )Cr*   )Dr+   )r   choicesTr	      )enEnglish)hiHindic                 C   s&   | j j d| jj d| jd d  S )Nr    2   )r   r   categoryquestion_textr   r   r   r   r   &      &zQuestionAnswer.__str__N)r   r   r   r   r"   r   r#   r   r   r3   	TextFieldr4   r   option_aoption_boption_coption_dcorrect_optionr   r   
difficultylanguager   r   r   r   r   r$      s    r$   c                   @   s.  e Zd Zg dZejeejdZeje	ejdZ
ejeejdZejddZejddZejde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ejdd	Zejdd	Zeje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$dd Z%dd Z&dS )UserQuizPerformance))quitQuit)	completed	Completed)timeoutTimeout)wrongWrongr%   r   r      r?   )r   r,   defaultr   )rH           Tr	   r'   c                   @   s   e Zd ZdZdgZdS )zUserQuizPerformance.Meta)userr   r3   z-quiz_attempted_atN)r   r   r   r   orderingr   r   r   r   r   G   s    
r   c                 C   s&   | j j d| j d| j d| j dS )Nr    z
 - Score: %)rJ   emailcountry_namecategory_nameaverage_scorer   r   r   r   r   K   r5   zUserQuizPerformance.__str__c                 C   s   | j dkr| j| j  d S dS )zCalculate score as percentager   r   rI   )total_questionscorrect_answersr   r   r   r   calculate_score_percentageN   s   
z.UserQuizPerformance.calculate_score_percentagec                 C   sd   |   }|| jkr|| _|| jkr%| jdkr%| jdks!| j| jk r%| j| _|  jd7  _|   dS )z:Update best performance metrics when a new attempt is mader   r'   N)rS   
best_scoretime_taken_seconds	best_timetotal_attemptssave)r   current_scorer   r   r   update_best_performanceT   s   


z+UserQuizPerformance.update_best_performanceN)'r   r   r   REASON_CHOICESr   r"   r   r#   rJ   r   r   r   r3   r   rN   rO   reasonIntegerFieldquestions_answeredrQ   rR   
FloatFieldrP   rU   current_question_timecurrent_question_index	JSONFieldlistused_lifelinesr   quiz_attempted_atrT   rV   rW   trophiesr   r   rS   rZ   r   r   r   r   r>   )   s2    r>   c                   @   s`   e Zd ZejeejdZejeejdZ	eje
ejdZe Ze ZejddZdd ZdS )Feedbackr%   Tr	   c                 C   s   d| j  d| j S )NzFeedback by z on )
user_emailquestionr   r   r   r   r   n   r!   zFeedback.__str__N)r   r   r   r   r"   r   r#   r   r   r3   r$   ri   
EmailFieldrh   r6   descriptionr   r   r   r   r   r   r   rg   f   s    rg   )	django.dbr   users.modelsr   django.utilsr   pandaspdModelr   r   r$   r>   rg   r   r   r   r   <module>   s   =