U
    ]Od%                     @   s   d dl Z d dlmZ d dl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Zd	Zd
ZdZedfedfedfedfgZdZdZedfedfgZG dd dejZG dd deZG dd deZdZG dd dejZG dd dejZdS )    N)models)timezone)User)	InstituteInstituteStudent)Question)public_storagenot_attendedin_progressfinishedscores_publishedzNot AttendedzIn ProgressZFinishedzScores PublisheddefaultZsurveyZDefaultZSurveyc                   @   sV  e Zd ZG dd dZejdddZejeej	ddZ
ejedZejdddZejdddZejdddZejdddZejdd	Zejd
ddedZejdddedZejddZejddddZejeeddZejdddedZej ddddZ!ej"dd	Z#ejddddZ$ejdddZ%ej&dddZ'ej&dddZ(e)dd Z*dd Z+dS )QuizAbstractc                   @   s   e Zd ZdZdS )zQuizAbstract.MetaTN)__name__
__module____qualname__abstract r   r   '/var/www/wikiazma_server/quiz/models.pyMeta   s   r   i  T)
max_lengthdb_index	on_deleter   r   r   r   r   zquiz/posters)	upload_tonullblankstoragezquiz/posters_thumbnails   )r     r   r   r   )choicesr   r   zquiz/report_cardsr   r   r   i  Fr   r   auto_now_addr   auto_nowr   c                 C   s   | j S N)pkselfr   r   r   id@   s    zQuizAbstract.idc                 C   s   | j S r+   )namer-   r   r   r   __str__D   s    zQuizAbstract.__str__N),r   r   r   r   r   	CharFieldr0   
ForeignKeyr   PROTECT	institute	JSONFielddictZ
_blueprintBooleanFieldZsingle_question_at_a_timeZreanswerableshuffle_questionsZshuffle_choicesapply_negative_scores
ImageFieldr   posterposter_thumbnailtheme	TextFielddescription
QUIZ_TYPESQUIZ_TYPE_DEFAULTZ	quiz_type	FileFieldZcustom_report_cardDurationFielddurationIntegerFieldquestions_countfinish_messagearchivedDateTimeField
created_atmodified_atpropertyr/   r1   r   r   r   r   r      sd                 
r   c                   @   sP   e Zd ZejddZejdddZejdddZ	ejdddZ
ejdddZdS )QuizTemplater   r   Tr   Fr&   N)r   r   r   r   PositiveIntegerFieldpricerF   Z	use_countr8   publicfeaturedpriorityr   r   r   r   rN   H   s
   rN   c                   @   s   e Zd Zejd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ZejeejdddZejeejddd	d
ZejddddZejddddZejeddZdd ZdS )Quizr   r   FTr&   r   Zcreated_quiz_set)r   r   related_nameZedited_quiz_set)r   r   r   rU   r%   )r   r   c                 C   s8   | j r| j t krdS | jr4| jt k r4tdfS dS )NZquiz_not_startedzQuiz is not started.Quiz has ended.NN)startr   nowendQUIZ_ENDED_STATEr-   r   r   r   can_be_entered_statee   s
    	zQuiz.can_be_entered_stateN)r   r   r   r   rO   rP   r8   Z	wage_freeZvax_freerQ   rR   rF   rS   r3   r   SET_NULLcreatorZlast_editorrJ   rY   r[   r6   r7   report_cardr]   r   r   r   r   rT   R   s.          rT   Z
quiz_endedc                   @   sf  e Zd ZejdddejddZeje	ej
ddZejddddddZe ZejdddZejddedZejeejdddd	Zejeejdddd	Zejddd
Zejddd
ZejddddZejddddZejddddZejddZ ejddddZ!ejdde"e#dZ$ejddedZ%ejdddZ&ejdddZ'ejdddZ(dd Z)dd Z*dd Z+dS )	QuizSheetTFprimary_keyuniquer   r   editabler   <   )r   r   rd   r   r   r   r   )r   r   r   )r   r   r   r   )r   r   r%   )r   
   r#   r!   )r   r   r$   r   r'   r)   c                 C   s(   | j d D ]}||d kr
|  S q
d S )NZ	questionsindex)_questions_sheet)r.   ri   questionr   r   r   get_question_by_index   s    
zQuizSheet.get_question_by_indexc                 C   s(   | j d D ]}||d kr
|  S q
d S )NZ	solutionsri   )_solutions_sheet)r.   ri   solutionr   r   r   get_solution_by_index   s    
zQuizSheet.get_solution_by_indexc                 C   s   | j tkrdS | j tkrdS | jr4| jt kr4dS | jrv| jrn| jrn| j| j| j k r`| j}qt| j| j }q| j}n| jr| jr| j| j }nd }|r|t k rt	dfS dS )N)Zquiz_closedQuiz has been closed.)r   rp   rV   rW   rX   )
stateQUIZ_SHEET_STATE_FINISHED!QUIZ_SHEET_STATE_SCORES_PUBLISHEDallowed_start_atr   rZ   allowed_finish_atrE   entrance_dater\   )r.   Zfinal_end_dater   r   r   can_be_continued_state   s$    

z QuizSheet.can_be_continued_stateN),r   r   r   r   	UUIDFielduuiduuid4Z
referer_idr3   rT   r4   quizr2   entrance_tokenr6   rj   rm   listZ_quizee_inputs_sheetr   r^   userr   institute_studentrJ   rv   finished_atrt   ru   rD   rE   rO   Zlast_quizee_input_indexfinal_scoreQUIZ_SHEETESQUIZ_SHEET_STATE_NOT_ATTENDEDrq   statsr`   rK   rL   rl   ro   rw   r   r   r   r   ra   z   s|                          ra   c                   @   s   e Zd ZejdddejddZeje	ej
dddZejeejddZejeej
dddZe ZejddZejdddZejdddZejdddZejdddZejdddd	Zejdddd	Zejddd
ZejdddZdS )QuestionScoreTFrb   )r   r   r   r   r   rg   r"   r#   r'   r)   N) r   r   r   r   rx   ry   rz   r/   r3   r   r^   	correctorra   r4   Z
quiz_sheetr   rk   rF   question_indexr8   r   
FloatFieldscorecorrect_choiceswrong_choicesblank_choicesr?   comment_for_studentcomment_for_other_correctorsrJ   rK   rL   r   r   r   r   r      sT                 r   )ry   	django.dbr   django.utilsr   authenticate.modelsr   institute.modelsr   r   question.modelsr   wikiazma.storage_helperr   r   ZQUIZ_SHEET_STATE_IN_PROGRESSrr   rs   r   rB   ZQUIZ_TYPE_SURVEYrA   Modelr   rN   rT   r\   ra   r   r   r   r   r   <module>   s.    /
%W