U
    sc0                     @   s0  d dl mZ 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eeegZddddgZG dd dejZG dd deZG dd deZdZdZdZeeegZG dd dejZdZdZ dZ!dZ"d Z#G d!d" d"ejZ$G d#d$ d$ejZ%G d%d& d&ejZ&dS )'    )TN)models)timezone)User)	InstituteInstituteStudent)Question)public_storageZ	instantlyZon_date_timeZon_last_studentZmanual
markdownV1htmlV1jsonV1textc                   @   s~  e Zd ZG dd dZejddd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edZejddd	Zejddd	ZejddZejddd	Zej	dddddZejded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 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Z%ej&dddZ'ej&dddZ(ej ddddZ)dS )ExamTemplateAbstractc                   @   s   e Zd ZdZdS )zExamTemplateAbstract.MetaTN)__name__
__module____qualname__abstract r   r   '/var/www/wikiazma_server/exam/models.pyMeta   s   r   TFprimary_keyuniquedb_indexdefaulteditabled   
max_lengthr   nullblankr   r      r   r   r   r   r   r   r    r!   z%exam_template/override_institute_logo	upload_tostorager    r!   exam/postersr(   r    r!   r)   exam/posters_thumbnailsr     r   r    r!   r   r    r!   auto_now_addr   auto_nowr     N)*r   r   r   r   r   	UUIDFielduuiduuid4id	CharFieldname	JSONFieldrulesBooleanFieldone_question_at_a_timereanswerREPORT_CARD_STRATEGY_MANUALreport_card_strategyshuffle_questionsshuffle_answersapply_negative_scoresexaminer_info_visibilityoverride_institute_name
ImageFieldr	   override_institute_logoposterposter_thumbnailtheme	delayableIntegerFieldprice	TextFielddescriptionDurationFieldduration	max_delayquestions_countDateTimeField
created_atmodified_atfinish_messager   r   r   r   r      sj                   r   c                   @   s,   e Zd ZejeejddZejdddZ	dS )ExamTemplateT	on_deleter   Fr   r   N)
r   r   r   r   
ForeignKeyr   PROTECT	instituter>   deletedr   r   r   r   rZ   ;   s     rZ   c                   @   s   e Zd ZejddZdS )PublicExamTemplateTr%   N)r   r   r   r   rN   priorityr   r   r   r   rb   A   s   rb   publicZ
API_inviteZadmin_invitec                   @   s  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ZejdddZejdd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edZejddddZej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ZejdddddZejde dddZ!ejddde dZ"ejddde dZ#ejdddZ$ej%ddddZ&e 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dZ,ejdddZ-ej.ddZ/ej0dddZ1ejdddZ2ejdddZ3ej%ddddZ4ejddZ5dS )ExamTFr   r[   r   r"   r   r&   r   r#   r$   r0   r-   r%   zexam/override_institute_logor'   r*   r+   r,   r.   r/   r]   r1   r3   r5   )r   N)6r   r   r   r   r6   r7   r8   r9   r^   r   r_   r`   r<   r=   r>   rd   r:   	public_idr;   r?   r@   rA   rB   rV   Zreport_card_daterL   rC   rD   rE   rF   rG   rH   r	   rI   rJ   rK   generated_examrP   rQ   rM   
start_dateend_daterR   rS   rT   ra   rN   rU   PositiveIntegerFieldrO   rW   rX   rY   pausedr   r   r   r   re   L   s                          re   Znot_generatedZnot_attendedZin_progressfinishedZscores_publishedc                   @   s  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jdddZejddddddZejedd	Zejdddd
ZejeejddddZejeejddddZejeej
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Ze  Z!e  Z"ejedd	Z#ejedd	Z$ejddddZ%ejdde&dZ'ejedd	Z(e 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dZ0ej ddddZ1ejdddZ2ej*dddZ3ej*dddZ4ej*dddZ5e6e7dddZ8dS )ExamPageTFr   r[   <   )r   r   r   r    r!   r#   r   )r   r!   )r   r   r!   )r\   r   r    r!   r"   r%   r   
   r/   r$   )r   r    r0   r1   r3   )returnc                 C   sJ   | j tk}| jo| jt k }| jo<| jo<| jt | j k }|oH|pH|S )N)stateEXAM_PAGE_STATE_IN_PROGRESSri   r   nowrS   entrance_date)selfZstate_conditionZend_date_consotionZduration_consitionr   r   r   invalid_in_progress_state   s    
z"ExamPage.invalid_in_progress_stateN)9r   r   r   r   r6   r7   r8   r9   r^   r   r_   r`   r:   Zentrance_tokenZentrance_typeZdevice_tokenr<   listZdevice_historyZentrance_ipr   SET_NULLuserr   Zinstitute_studentre   examr>   r?   r@   rE   rg   rN   Zfirst_available_question_indexZfirst_available_group_indexZuser_inputsZuser_inputs_historyZfinal_scoreEXAM_PAGE_STATE_NOT_ATTENDEDrq   Zstate_historyrM   rV   rt   rh   ri   rR   rS   rT   rU   Zreport_cardrW   rX   Zfinished_atpropertyboolrv   r   r   r   r   rm      s                       rm   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 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 )CorrectionsTFr   )r\   r   r    r[   r%   r   r.   r/   r1   r3   N)!r   r   r   r   r6   r7   r8   r9   r^   r   rx   Z	correctorrm   r_   	exam_pager   questionrN   group_indexquestion_indexr>   r!   
FloatFieldscorecorrect_choicesZwrong_choicesZblank_choicesrP   Zcomment_for_studentZcomment_for_other_correctorsrV   rW   rX   r   r   r   r   r~      sR                 r~   c                   @   s   e Zd ZG dd dZejdddejddZej	e
ejdZe Ze ZejddZejd	ed
ZejdddZejdddZdS )
AnswerFilec                   @   s   e Zd ZdddggZdS )zAnswerFile.Metar   r   r   N)r   r   r   index_togetherr   r   r   r   r      s   r   TFr   )r\   r#   r-   Zanswer_files)r(   r)   r1   r3   N)r   r   r   r   r   r6   r7   r8   r9   r^   rm   CASCADEr   rN   r   r   r:   	file_type	FileFieldr	   filerV   rW   rX   r   r   r   r   r      s     r   )'rer   r7   	django.dbr   django.utilsr   authenticate.modelsr   institute.modelsr   r   question.modelsr   wikiazma.storage_helperr	   ZREPORT_CARD_STRATEGY_INSTANTLYZ!REPORT_CARD_STRATEGY_ON_DATE_TIMEZ$REPORT_CARD_STRATEGY_ON_LAST_STUDENTrA   ZALLOWED_REPORT_CARD_STRATEGIESZALLOWED_ANSWER_TEXT_FORMATModelr   rZ   rb   ZENTRANCE_TYPE_PUBLICZENTRANCE_TYPE_API_INVITEZENTRANCE_TYPE_ADMIN_INVITEZALLOWED_ENTRANCE_TYPESre   ZEXAM_PAGE_STATE_NOT_GENERATEDr{   rr   ZEXAM_PAGE_STATE_FINISHEDZ EXAM_PAGE_STATE_SCORES_PUBLISHEDrm   r~   r   r   r   r   r   <module>   sD   % /6