
    7h6                         d dl mZmZmZ d dlmZ 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 d d	lmZ d d
lmZ  ede      Zej-                  ddg      ed               Zy)    )	Blueprintrequestjsonify)DoesNotExist)datetimeN)	MCQResult)	QuizShare)Image)MCQ)User)jwt_required
savemcq_bpz	/save-mcqPOST)methodsc                  j  & t        t        dd       } t        j                  dk7  rt        ddd      dfS t        j                  rRt        j
                  d      xs i }| xs |j                  d      } |j                  d	      }|j                  d
      }n| xs t        j                  j                  d      } t        j                  j                  d	      }t        j                  j                  d
      }t        |t              r	 t        j                  |      }| st        ddd      dfS |st        ddd      dfS t        |t              st        ddd      dfS 	 t        j                  j                  |       }t#        j                  |      j%                         }|st        ddd      dfS t        t'        j                  |            }t)        |      }d}d}	d}
t+        j                  ||      j%                         }t-        |      }|r|j.                  nd }|D ]  }t        |t0              r|j                  d      nd xs d&t        |t0              r|j                  d      nd }t3        &fd|D        d       }|se|s|dz  }m||j4                  k(  r|	dz  }	|
dz  }
 d}|	|z  }d }|rt7        j                  t        |j8                        d      j;                  dd      }d}d}t=        j>                         }|D ]U  }|j@                  r|j@                  |kD  r|dz  }$|j@                  |k(  s4|jB                  sA|jB                  |k  sQ|dz  }W ||z   dz   }t7        ||t        |j8                        |||	|
|||rdndt        jD                  |      |      }|jG                          i }|D ]f  }t        |t0              r|j                  d      nd xs d&t        |t0              r|j                  d      nd }|r|nd |d &jI                         z   <   h d! } ||jJ                        } ||jL                        }t        |t              r|ng }t        |t              r|ng }g } |D ]^  }!t        |!t              r;|!jO                  d"      r*|!jI                         }"|j                  |"      }#|#r|! d#|# }!| jQ                  |!       ` g }$|D ]`  }%t        |%t0              r=|%j                  d      xs djI                         &|j                  &      }|r|nd$|%d%<   |$jQ                  |%       b t        dd&|||	|
|z   |	|z  || |$d'd(      d)fS # t        j                  $ r t        ddd      dfcY S w xY w# t         $ r t        ddd      dfcY S w xY w)*Nuser_idr   FzUnauthorized method.)statusmessagei  T)silentoutput_filemcq_datazInvalid mcq_data formati  zEnter user idzEnter file pathzmcq_data must be a list)idzUser not foundi  )r   zQuiz not foundr   )quiz_idr   question selected_answerc              3   B   K   | ]  }|j                   k(  s|  y wN)r   ).0qq_texts     &/var/www/html/eduruby.in/routes/mcq.py	<genexpr>zsave_mcq.<locals>.<genexpr>   s     B1QZZ6-AQBs      )r   is_shared_quizz-scorecreated_date)r   r   r   total_questionsskipped_answerscorrect_answerswrong_answersscorerankr%   r   	shared_byz
Question: c                     | g S t        | t        t        f      r| S t        | t              r	 t	        j
                  |       S g S # t        $ r g cY S w xY wr   )
isinstancelistdictstrjsonloads	Exception)vals    r"   _ensure_json_structz%save_mcq.<locals>._ensure_json_struct1  sY    ;IcD$<(Jc3zz#& 	  	s   A AAz	Question:z
User Selected Answer: SkippedzUser Selected AnswerzMCQ data saved successfully)r'   r(   r)   r*   r+   r,   outputarray_output)r   r   data   ))getattrr   methodr   is_jsonget_jsongetformr/   r2   r3   r4   JSONDecodeErrorr0   r   objectsr   r
   firstr   lenr	   boolshared_by_user_idr1   nextcorrect_answerr   r   order_byr   utcnowr+   r&   dumpssavestripextracted_mcqother_extracted_mcq
startswithappend)'r   payloadr   r   user_ref	image_doc	questionsr'   r(   r)   r*   shared_quiz_datar%   quiz_shared_byuqseldb_qcorrect_answer_scoretotal_scoreuser_positionall_attemptshigher_scoressame_scores_earliernowattempt
mcq_resultuser_answers_mapr7   extracted_mcq_valother_extracted_mcq_valextracted_list
other_listupdated_extractedlinequestion_textr   updated_otheritemr!   s'                                         @r"   save_mcqrp      s    gy$/G~~%4JKLcQQ ""$/522GKK	2kk-0;;z* 8W\\--i8ll&&}5<<##J/h$]::h/
 %ODEsJJ%4EFGLLh%%4MNOQTTTL<<##w#/
 +6<<>I%4DEFKK S[[[9:I(mOOOM !(( eg 
 *+N;K%77QUN  (22t(<"&&$$M2,6r4,@rvv'(dB	BDIq OD'''q OQM  !$88KM  ((	%
 (8^
, 	
 oo# 	)G}}!<"+-'2F2F7K_K_beKe#q(#		) &(;;a? ILL!'''#*qH% J OO  O(22t(<"&&$$M2,6r4,@rvv'(dAD#$67O
 ,I,C,CD1)2O2OP +55F*M&SUN,67NPT,U([]J  'dC T__[%A JJLM.22=AO77HI  &' M #dD!hhz*0b779F"&&v.C2539D'(T"# 0...*_<$';;!')	
  	 e '' ]%<UVWY\\\]  L%4DEFKKLs$   
U- $ V -#VVV21V2)flaskr   r   r   mongoenginer   r   r3   models.mcq_resultr   models.quiz_sharer	   models.imager
   
models.mcqr   models.userr   utils.jwt_servicer   __name__r   routerp        r"   <module>r}      sc   F . - $   ' '    *|X.
+x0t  1tr|   