
    Rji10                     J    S SK Jr  S SKJrJr  S SKJr  SS jrSS jrSS jr	g)	    )Select)StudentTableStudentAssesmentResultTable)dbc           	          [        [        5      R                  [        R                  U :H  [        R                  U:H  [        R
                  U:H  5      n[        R                  R                  U5      R                  5       R                  5       n[        [        5      R                  [        R                  U :H  [        R                  U:H  [        R
                  U:H  5      n[        R                  R                  U5      R                  5       R                  5       nU(       d  / $ [        5       n0 n	U H}  n
U
R                  nUR                  U5        X;  a  SSS.X'   U
R                   HA  nX   S==   UR!                  SS5      -  ss'   X   S==   UR!                  SS5      -  ss'   MC     M     / nU	R#                  5        H:  u  pUS   S:  d  M  US   S-  US   -  nUR%                  UUS   US   US.5        M<     UR'                  S	 S
9  USU n/ nU H  n[        [        5      R                  [        R(                  US   :H  5      n[        R                  R                  U5      R+                  5       nU(       d  Mk  UR%                  US   UR,                   SUR.                  =(       d    S 3R1                  5       [3        US   S5      US   US   S.5        M     U$ ! [4         a  n/ s SnA$ SnAff = f)zTGet top 10 weakest students overall based on average performance across all conceptsr   total_correcttotal_questionsr	   correctr
   total      Y@)
student_idr	   r
   
percentagec                     U S   $ Nr    xs    ;D:\beyond school\05_solvesmart\server\src\utils\remedial.py<lambda>+get_overall_weak_students.<locals>.<lambda><       <    keyNr     r      )r   student_nameaccuracy_percentcorrect_answersr
   )r   r   where	school_idgradesectionr   sessionexecutescalarsallr   setr   addconcept_detailgetitemsappendsortidscalar_one_or_none	firstnamelastnamestripround	Exception)r#   r$   r%   limitstmt_all_studentsall_students_in_sectionstmtresultsstudents_with_attemptsstudent_performanceresultr   conceptweak_studentsperfr   final_resultsstudent_perfstmt_studentstudentes                        r   get_overall_weak_studentsrH      s   K"<066""i/%'  G+

 #%**"4"45F"G"O"O"Q"U"U"W1288'11Y>'--6'//7:
 **$$T*22488:I "% F**J"&&z24%&'(3#/ "00#/@GKKPY[\D]]@#/0ABgkkRY[\F]]B 1    3 9 9 ;J%&*"?3e;tDU?VV
$$",%)/%:'+,='>",	&  !< 	89%fu- )L!,/55<#==L jj((6IIKGw$$".|"<'.'8'8&97;K;K;Qr:R$S$Y$Y$[(-l<.H!(L'3O'D'34E'F&  *  	s3   D$K- 'B-K- B.K- 
A"K- -
L7K>8L>Lc                 <    [        [        5      R                  [        R                  U :H  [        R                  U:H  [        R
                  U:H  5      n[        R                  R                  U5      R                  5       R                  5       nU(       d  / $ 0 n0 n0 n	U GHd  n
U
R                  nU
R                   H  nUR                  S5      U:X  d  M  X;  a  SSS.X{'   SX'   [        5       X'   X{   S==   UR                  SS5      -  ss'   X{   S==   UR                  SS5      -  ss'   X==   S-  ss'   M     U
R                  (       d  M  U
R                   H  nUR                  S	5      U:X  d  M  X;  a  SSS.X{'   SX'   [        5       X'   X{   S==   UR                  SS5      -  ss'   X{   S==   UR                  SS5      -  ss'   UR                  S
5      nU(       d  M  X   R!                  U5        M     GMg     / nUR#                  5        HX  u  nnUS   S:  d  M  US   S-  US   -  nUR%                  UUS   US   UX   ['        U	R                  U/ 5      5      S.5        MZ     UR)                  S S9  USU n/ nU H  n[        [*        5      R                  [*        R,                  US   :H  5      n[        R                  R                  U5      R/                  5       nU(       d  Mk  US   UR0                   SUR2                  =(       d    S 3R5                  5       [7        US   S5      US   US   US   S.nUS   (       a  US   US'   UR%                  U5        M     U$ ! [8         a  n[;        SU 35        / s SnA$ SnAff = f)zMGet top 10 weakest students for a specific concept (includes all subconcepts)conceptnamer   r   r	   r   r
   r      r@   
subconceptr   )r   r	   r
   r   assessmentssubconcepts_attemptedc                     U S   $ r   r   r   s    r   r   +get_concept_weak_students.<locals>.<lambda>   r   r   r   Nr   r   r   r   r   rM   r   r   r    r!   r
   teacher_assessmentsrN   z$Error in get_concept_weak_students: )r   r   r"   r#   r$   r%   r   r&   r'   r(   r)   r   r,   r-   r*   subconcept_detailr+   r.   r/   listr0   r   r1   r2   r3   r4   r5   r6   r7   print)r#   r$   r%   concept_namer8   r;   r<   r>   student_assessment_countsstudent_subconceptsr?   r   r@   rL   subconcept_namerA   rB   r   rC   rD   rE   rF   result_datarG   s                           r   get_concept_weak_studentsr[   U   s   e1288'11Y>'--6'//7:
 **$$T*22488:I !$&! F**J "00;;}-=!<-./0;+7 AB1=:=%+7'3ODT]_`HaaD'34EF'++V]_`JaaF-9Q>9 1 '''"(":":J!~~i0L@%@1234?/; EF5A>Ae/;+7HJNN[dfgLhhH+78IJjnn]dfgNhhJ +5..*F*?/;??P! #;) N  3 9 9 ;J%&*"?3e;tDU?VV
$$",%)/%:'+,='>",#<#H-12E2I2I*VX2Y-Z&  !< 	89%fu- )L!,/55<#==L jj((6IIKGw".|"<'.'8'8&97;K;K;Qr:R$S$Y$Y$[(-l<.H!(L'3O'D'34E'F+7+F   78;GH_;`K 78$$[1) *,  4QC89	sL   BM7 :M7 A9M7 "M7 :A0M7 .;M7 -CM7 <A:M7 7
NNNNc           
          [        [        5      R                  [        R                  U :H  [        R                  U:H  [        R
                  U:H  [        R                  R                  S5      5      n[        R                  R                  U5      R                  5       R                  5       nU(       d  / $ 0 n0 n	U H  n
U
R                  nU
R                  (       d  M"  U
R                   H  nUR                  S5      U:X  d  M  UR                  S5      U:X  d  M1  X;  a  SSS.X'   SX'   X   S==   UR                  SS5      -  ss'   X   S==   UR                  S	S5      -  ss'   X==   S
-  ss'   M     M     / nUR                  5        H=  u  pUS   S:  d  M  US   S-  US   -  nUR!                  UUS   US   UX   S.5        M?     UR#                  S S9  USU n/ nU H  n[        [$        5      R                  [$        R&                  US   :H  5      n[        R                  R                  U5      R)                  5       nU(       d  Mk  UR!                  US   UR*                   SUR,                  =(       d    S 3R/                  5       [1        US   S5      US   US   US   S.5        M     U$ ! [2         a  n[5        SU 35        / s SnA$ SnAff = f)z5Get top 10 weakest students for a specific subconceptNr@   rL   r   r   r	   r   r
   r   rK   r   )r   r	   r
   r   rM   c                     U S   $ r   r   r   s    r   r   .get_subconcept_weak_students.<locals>.<lambda>   r   r   r   r   r   r   r   r   rM   rQ   z'Error in get_subconcept_weak_students: )r   r   r"   r#   r$   r%   rS   isnotr   r&   r'   r(   r)   r   r-   r.   r/   r0   r   r1   r2   r3   r4   r5   r6   r7   rU   )r#   r$   r%   rV   rY   r8   r;   r<   r>   rW   r?   r   rL   rA   rB   r   rC   rD   rE   rF   rG   s                        r   get_subconcept_weak_studentsr`      s   L1288'11Y>'--6'//7:'99??E	
 **$$T*22488:I !$&!F**J '''"(":":J"y1\A"|4G%@1234?/; EF5A+7HJNN[dfgLhhH+78IJjnn]dfgNhhJ1=B= #; *  3 9 9 ;J%&*"?3e;tDU?VV
$$",%)/%:'+,='>",#<#H&  !< 	89%fu- )L!,/55<#==L jj((6IIKGw$$".|"<'.'8'8&97;K;K;Qr:R$S$Y$Y$[(-l<.H!(L'3O'D'34E'F+7+F&  *   7s;<	sE   B4J< 7$J< "J< J< B J<  B1J< A&J< <
K KK K N)
   )

sqlalchemyr   
src.modelsr   r   srcr   rH   r[   r`   r   r   r   <module>re      s"     @ M^gRNr   