Ë
    ïj®]  ã                   óˆ  — d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	m
Z
 ddlmZmZmZmZmZmZmZ d dlmZmZ d dlmZ d d	lmZmZ d d
lZed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z ed„ «       Z!ed„ «       Z"ed„ «       Z#ed„ «       Z$ed„ «       Z%ed„ «       Z&ed„ «       Z'ed„ «       Z(ed„ «       Z)y
)é    )ÚrenderÚredirectÚget_object_or_404)Úlogin_required)Úmessages)ÚHttpResponseÚJsonResponseé   )ÚGroupÚSubjectÚScheduleItemÚRoomÚ
AttendanceÚAcademicDebtÚOlympiad)ÚTeacherÚStudent)ÚRiskPrediction©ÚdatetimeÚ	timedeltaNc           
      óÂ  — t         j                  j                  «       }| j                  j	                  d«      }| j                  j	                  d«      }| j
                  j                  dk(  rW| j
                  j                  }t         j                  j                  |j                  j                  ¬«      }|j                  }nÇ| j
                  j                  dk(  rŠ| j
                  j                  }|j                  j                  «       rWt         j                  j                  |j                  j                  «       ¬«      j                  «       }|j                  «       }n'd}n$|rt!        t         |¬«      }n|j                  «       }|s#t#        j$                  «       j'                  d«      }|rBt(        j                  j                  ||¬	«      j+                  d
dd«      j-                  d«      }ng }t#        j.                  |d«      }|t1        |j3                  «       ¬«      z
  }	t5        d«      D �
cg c]  }
|	t1        |
¬«      z   ‘Œ }}
|||||t6        j                  j                  «       t8        j                  j                  «       t:        j                  j                  «       t#        j$                  «       j=                  «       dœ	}t?        | d|«      S c c}
w )uL   Ð“Ð»Ð°Ð²Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ñ€Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ñ� Ñ� ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ‘Ð¼ÚgroupÚdateÚstudent©ÚidÚparent)Ústudents__inNú%Y-%m-%d©r   r   ÚsubjectÚteacherÚroomÚ
start_time©Údaysé   )	ÚgroupsÚselected_groupÚselected_dateÚ
week_datesÚschedule_itemsÚsubjectsÚteachersÚroomsÚtodayzschedule_new.html) r   ÚobjectsÚallÚGETÚgetÚuserÚroler   Úfilterr   r   r   ÚchildrenÚexistsÚdistinctÚfirstr   r   ÚnowÚstrftimer   Úselect_relatedÚorder_byÚstrptimer   ÚweekdayÚranger   r   r   r   r   )Úrequestr)   Úselected_group_idr+   r   r*   r   r-   Úcurrent_dateÚ
week_startÚir,   Úcontexts                úD:\diplom_project\core\views.pyÚschedule_viewrK      s2  € ô �]‰]×ÑÓ €FØŸ™Ÿ™¨Ó0ÐØ—K‘K—O‘O FÓ+€Mð ‡|�|×Ñ˜IÒ%Ø—,‘,×&Ñ&ˆÜ—‘×%Ñ%¨¯©×)9Ñ)9Ð%Ó:ˆØ Ÿ™‰Ø	�‰×	Ñ	˜hÒ	&Ø—‘×$Ñ$ˆØ�?‰?×!Ñ!Ô#Ü—]‘]×)Ñ)°v·±×7JÑ7JÓ7LÐ)ÓM×VÑVÓXˆFØ#Ÿ\™\›^‰Nà!‰NáÜ.¬uÐ9JÔK‰Nà#Ÿ\™\›^ˆNñ Ü Ÿ™›×/Ñ/°
Ó;ˆáÜ%×-Ñ-×4Ñ4Ø Øð 5ó 
÷ ‰.˜ I¨vÓ
6·x±xÀÓ7Mñ 	ð
 ˆô ×$Ñ$ ]°JÓ?€LØ¤	¨|×/CÑ/CÓ/EÔ FÑF€JÜ:?À»(ÖC°Q�*œy¨aÔ0Ó0ÐC€JÐCð Ø(Ø&Ø Ø(Ü—O‘O×'Ñ'Ó)Ü—O‘O×'Ñ'Ó)Ü—‘×!Ñ!Ó#Ü—‘“×$Ñ$Ó&ñ
€Gô �'Ð.°Ó8Ð8ùò Ds   È7Kc           
      óœ  — t        t        |¬«      }t        j                  j	                  |¬«      j                  ddd«      }dddd	œd
ddd	œdddd	œdddd	œdddd	œdddd	œdddd	œg}i }|D ]
  }g ||d   <   Œ |D ]   }||j                     j                  |«       Œ" |D ]  }||   j                  d„ ¬«       Œ |||dœ}t        | d |«      S )!uF   Ð Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ðµ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³Ð¾ Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»Ñ�r   )r#   r   r"   r$   õ   ÐŸÐ¾Ð½ÐµÐ´ÐµÐ»ÑŒÐ½Ð¸Ðºu   ÐŸÐ�r
   )ÚnameÚshortÚnumberõ   Ð’Ñ‚Ð¾Ñ€Ð½Ð¸Ðºu   Ð’Ð¢é   õ
   Ð¡Ñ€ÐµÐ´Ð°u   Ð¡Ð é   õ   Ð§ÐµÑ‚Ð²ÐµÑ€Ð³u   Ð§Ð¢é   õ   ÐŸÑ�Ñ‚Ð½Ð¸Ñ†Ð°u   ÐŸÐ¢é   õ   Ð¡ÑƒÐ±Ð±Ð¾Ñ‚Ð°u   Ð¡Ð‘é   õ   Ð’Ð¾Ñ�ÐºÑ€ÐµÑ�ÐµÐ½ÑŒÐµu   Ð’Ð¡r(   rP   c                 ó   — | j                   S )N)r%   ©Úxs    rJ   ú<lambda>z"teacher_schedule.<locals>.<lambda>_   s
   € °A·L±L€ ó    )Úkey)r#   ÚweekdaysÚschedule_by_weekdayzteacher_schedule.html)
r   r   r   r2   r8   r?   rB   ÚappendÚsortr   )	rD   Ú
teacher_idr#   r-   rb   rc   ÚdayÚitemrI   s	            rJ   Úteacher_scheduleri   F   s&  € ô  ¤¨JÔ7€Gä!×)Ñ)×0Ñ0¸Ð0ÓA×PÑPÐQXÐZcÐekÓl€Nð *°FÀaÑHØ!¨F¸aÑ@Ø¨¸!Ñ<Ø!¨F¸aÑ@Ø!¨F¸aÑ@Ø!¨F¸aÑ@Ø)°FÀaÑHð€Hð ÐØò 0ˆØ-/Ð˜C ™MÒ*ð0ð ò 7ˆØ˜DŸL™LÑ)×0Ñ0°Õ6ð7ð #ò BˆØ˜CÑ ×%Ñ%Ñ*@Ð%ÕAðBð ØØ2ñ€Gô
 �'Ð2°GÓ<Ð<r`   c                 óœ  — | j                   j                  dvr7| j                   j                  s!t        j                  | d«       t        d«      S | j                  dk(  �rc| j                  j                  d«      }| j                  j                  d«      }| j                  j                  d«      }t        j                  j                  |||¬«      j                  «       }|r!t        j                  | d	«       t        d«      S t        j                  j                  || j                  j                  d
«      | j                  j                  d«      | j                  j                  d«      xs d ||| j                  j                  d«      | j                  j                  dd«      ¬«       t        j                  | d«       t        d«      S )N©r#   Úacademic_staffÚadminuB   Ð£ Ð²Ð°Ñ� Ð½ÐµÑ‚ Ð¿Ñ€Ð°Ð² Ð½Ð° Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð·Ð°Ð½Ñ�Ñ‚Ð¸Ð¹ÚscheduleÚPOSTÚgroup_idr   r%   )rp   r   r%   u4   Ð’ Ñ�Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÑƒÐ¶Ðµ ÐµÑ�Ñ‚ÑŒ Ð·Ð°Ð½Ñ�Ñ‚Ð¸Ðµ!Ú
subject_idrf   Úroom_idÚend_timeÚtopicÚ )rp   rq   rf   rr   r   r%   rs   rt   u!   Ð—Ð°Ð½Ñ�Ñ‚Ð¸Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¾)r6   r7   Úis_staffr   Úerrorr   Úmethodro   r5   r   r2   r8   r:   ÚcreateÚsuccess)rD   rp   r   r%   r:   s        rJ   Úadd_schedule_itemr{   i   su  € à‡|�|×ÑÐ FÑFÈwÏ|É|×OdÒOdÜ�‰�wÐ dÔeÜ˜
Ó#Ð#à‡~�~˜ÓØ—<‘<×#Ñ# JÓ/ˆØ�|‰|×Ñ Ó'ˆØ—\‘\×%Ñ% lÓ3ˆ
ô ×%Ñ%×,Ñ,ØØØ!ð -ó 
÷ ‰&‹(ð	 	ñ Ü�N‰N˜7Ð$ZÔ[Ü˜JÓ'Ð'ä×Ñ×#Ñ#ØØ—|‘|×'Ñ'¨Ó5Ø—|‘|×'Ñ'¨Ó5Ø—L‘L×$Ñ$ YÓ/Ò7°4ØØ!Ø—\‘\×%Ñ% jÓ1Ø—,‘,×"Ñ" 7¨BÓ/ð 	$ô 		
ô 	×Ñ˜Ð"EÔFÜ�JÓÐr`   c                 ó$  — | j                   j                  dvr7| j                   j                  s!t        j                  | d«       t        d«      S t        t        |¬«      }| j                  dk(  �r| j                  j                  d«      |_        | j                  j                  d«      |_        | j                  j                  d«      xs d |_        | j                  j                  d	«      |_        | j                  j                  d
«      |_        | j                  j                  d«      |_        | j                  j                  dd«      |_        |j%                  «        t        j&                  | d«       t        d«      S t        d«      S )Nrk   u;   Ð£ Ð²Ð°Ñ� Ð½ÐµÑ‚ Ð¿Ñ€Ð°Ð² Ð½Ð° Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµrn   r   ro   rq   rf   rr   r   r%   rs   rt   ru   u!   Ð—Ð°Ð½Ñ�Ñ‚Ð¸Ðµ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾)r6   r7   rv   r   rw   r   r   r   rx   ro   r5   rq   rf   rr   r   r%   rs   rt   Úsaverz   ©rD   Úitem_idrh   s      rJ   Úedit_schedule_itemr€   �   s$  € à‡|�|×ÑÐ FÑFÈwÏ|É|×OdÒOdÜ�‰�wÐ ]Ô^Ü˜
Ó#Ð#äœ\¨gÔ6€Dà‡~�~˜ÓØ!Ÿ,™,×*Ñ*¨<Ó8ˆŒØ!Ÿ,™,×*Ñ*¨<Ó8ˆŒØ—|‘|×'Ñ'¨	Ó2Ò:°dˆŒØ—L‘L×$Ñ$ VÓ,ˆŒ	Ø!Ÿ,™,×*Ñ*¨<Ó8ˆŒØŸ™×(Ñ(¨Ó4ˆŒØ—\‘\×%Ñ% g¨rÓ2ˆŒ
Ø�	‰	ŒÜ×Ñ˜Ð"EÔFÜ˜
Ó#Ð#ä�JÓÐr`   c                 ó$  — | j                   j                  dvr7| j                   j                  s!t        j                  | d«       t        d«      S t        t        |¬«      }|j                  «        t        j                  | d«       t        d«      S )ud   Ð£Ð´Ð°Ð»ÐµÐ½Ð¸Ðµ Ð·Ð°Ð½Ñ�Ñ‚Ð¸Ñ� (Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸ Ð°Ð´Ð¼Ð¸Ð½Ð¾Ð²)rk   u>   Ð£ Ð²Ð°Ñ� Ð½ÐµÑ‚ Ð¿Ñ€Ð°Ð² Ð½Ð° ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ðµ Ð·Ð°Ð½Ñ�Ñ‚Ð¸Ð¹rn   r   u   Ð—Ð°Ð½Ñ�Ñ‚Ð¸Ðµ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¾)
r6   r7   rv   r   rw   r   r   r   Údeleterz   r~   s      rJ   Údelete_schedule_itemrƒ   ¤   sn   € ð ‡|�|×ÑÐ FÑFÈwÏ|É|×OdÒOdÜ�‰�wÐ `ÔaÜ˜
Ó#Ð#äœ\¨gÔ6€DØ‡K�K„MÜ×Ñ�WÐ=Ô>Ü�JÓÐr`   c                 ón  — t        t        |¬«      }|j                  |j                  j	                  d«      |j
                  j	                  d«      |j                  j                  |j                  j                  |j                  r|j                  j                  nd|j                  dœ}t        |«      S )Nr   ú%H:%Mru   )r   r%   rs   rq   rf   rr   rt   )r   r   r   r%   r>   rs   r"   r#   r$   rt   r	   )rD   r   rh   Údatas       rJ   Úget_schedule_item_jsonr‡   °   s}   € äœ\¨gÔ6€Dà�g‰gØ—o‘o×.Ñ.¨wÓ7Ø—M‘M×*Ñ*¨7Ó3Ø—l‘l—o‘oØ—l‘l—o‘oØ#'§9¢9�4—9‘9—<’<°"Ø—‘ñ€Dô ˜ÓÐr`   c           
      óv  — ddl m} ddlm}m}m}m}m} ddlm}m	} | j                  j                  d«      }	| j                  j                  d«      }
|	s!t        j                  | d«       t        d«      S t        t         |	¬	«      }|
r" |j"                  |
d
«      j%                  «       }n |j&                  «       j%                  «       }| ||j)                  «       ¬«      z
  }t+        d«      D �cg c]  }| ||¬«      z   ‘Œ }}t,        j.                  j1                  ||| |d¬«      z   ¬«      j3                  ddd«      j5                  dd«      }i }|D ]:  }|j$                  j7                  d
«      }||vrg ||<   ||   j9                  |«       Œ<  |«       }|j:                  }d|j<                  › �|_        d|j<                  › �|d<    |dd¬«      |d   _         |jC                  d«       d|j7                  d«      › d| |d¬«      z   j7                  d«      › �|d<    |dd¬«      |d   _         |jC                  d «       g d!¢} |dd"¬#«      } |d$d$d%¬&«      } |d'd'd¬(«      }tE        tG        ||«      d)¬*«      D ]e  \  }\  }}|jI                  d+||› d,|j7                  d-«      › �¬.«      }||_         ||_%        ||_&        d/|jN                  tQ        d0|z   «         _)        Œg |jI                  d+d1d2¬.«       ||jI                  d+d1¬3«      _         ||jI                  d+d1¬3«      _%        ||jI                  d+d1¬3«      _&        d4|jN                  d5   _)        g d6¢}i }|D ]R  }|j7                  d
«      }i ||<   |j                  |g «      D ]%  }|jT                  j7                  d7«      } |||   | <   Œ' ŒT  | |d8¬9«       |d8¬9«       |d8¬9«       |d8¬9«      ¬:«      }!tE        |d;¬*«      D �]  \  }"\  }#}$|jI                  |"d1|#› d<|$› �¬.«        |d'd'¬=«      |jI                  |"d1¬3«      _&        |!|jI                  |"d1¬3«      _+        tE        |d)¬*«      D �]˜  \  }%}|j7                  d
«      }|j                  |i «      j                  |#«      }|�r|jX                  rt[        |jX                  «      nd>}&|jX                  r|jX                  j\                  rd?}&|j^                  j<                  › d,|j`                  jb                  › d@|j`                  jd                  › d,|&› �}'|jf                  r|'d,|jf                  › �z  }'|jI                  |"|%|'¬.«        |dd'd'¬A«      |jI                  |"|%¬3«      _&        |!|jI                  |"|%¬3«      _+        dB|jh                  |"   _5        �ŒM|jI                  |"|%d>¬.«        |d'd'¬=«      |jI                  |"|%¬3«      _&        |!|jI                  |"|%¬3«      _+        �Œ› �Œ tm        dC¬D«      }(dE|j<                  › dF|j7                  dG«      › dH�|(dI<   |jo                  |(«       |(S c c}w )JuQ   Ð­ÐºÑ�Ð¿Ð¾Ñ€Ñ‚ Ñ€Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ñ� Ð² Excel Ð½Ð° Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½ÑƒÑŽ Ð½ÐµÐ´ÐµÐ»ÑŽr   )ÚWorkbook)Ú	AlignmentÚFontÚPatternFillÚBorderÚSider   r   r   u   Ð’Ñ‹Ð±ÐµÑ€Ð¸Ñ‚Ðµ Ð³Ñ€ÑƒÐ¿Ð¿Ñƒrn   r   r    r&   r(   rZ   )r   Ú	date__gteÚ	date__lter"   r#   r$   r%   u   Ð Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ðµ u"   Ð Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ðµ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ ÚA1é   T)ÚsizeÚboldzA1:H1u   Ð�ÐµÐ´ÐµÐ»Ñ� Ñ� z%d.%m.%Yu    Ð¿Ð¾ ÚA2é   )r“   ÚitaliczA2:H2)rM   rQ   rS   rU   rW   rY   r[   ÚFFFFFF)r”   ÚcolorÚ4395ABÚsolid)Ústart_colorÚ	end_colorÚ	fill_typeÚcenter)Ú
horizontalÚverticalÚ	wrap_textrR   )ÚstartrV   ú
z%d.%m)ÚrowÚcolumnÚvalueé   é@   r
   u
   Ð’Ñ€ÐµÐ¼Ñ�)r¥   r¦   é   ÚA))z09:00z10:30)z10:45z12:15)z12:45z14:15)z14:30z16:00)z16:15z17:45)z18:00z19:30r…   Úthin)Ústyle)ÚleftÚrightÚtopÚbottomrX   ú-)r    r¡   u   â€”u   ðŸŒ� Ð”Ð¸Ñ�Ñ‚Ð°Ð½Ñ‚ú )r¢   r    r¡   éP   zAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet)Úcontent_typezattachment; filename="schedule_Ú_z%Y%m%dz.xlsx"zContent-Disposition)8Úopenpyxlr‰   Úopenpyxl.stylesrŠ   r‹   rŒ   r�   rŽ   r   r   r4   r5   r   rw   r   r   r   rA   r   r=   rB   rC   r   r2   r8   r?   r@   r>   rd   ÚactiverN   ÚtitleÚfontÚmerge_cellsÚ	enumerateÚzipÚcellÚfillÚ	alignmentÚcolumn_dimensionsÚchrÚwidthr%   Úborderr$   ÚstrÚis_distancer"   r#   Ú	last_nameÚ
first_namert   Úrow_dimensionsÚheightr   r}   ))rD   r‰   rŠ   r‹   rŒ   r�   rŽ   r   r   rp   Údate_strr   rF   rG   rH   r,   r-   Úschedule_by_daterh   Údate_str_itemÚwbÚwsÚweekdays_rusÚheader_fontÚheader_fillÚheader_alignmentr   Úweekday_namer¿   Ú
time_slotsÚschedule_dictÚdate_keyÚ	start_keyrÅ   Úrow_idxr£   ÚendÚcol_idxÚ	room_nameÚ
cell_valueÚresponses)                                            rJ   Úexport_schedulerà   ¿   s   € õ "ßJÕJß,à�{‰{�‰˜wÓ'€HØ�{‰{�‰˜vÓ&€HáÜ�‰�wÐ ?Ô@Ü˜
Ó#Ð#äœe¨Ô1€Eñ Ø(�x×(Ñ(¨°:Ó>×CÑCÓE‰à#�x—|‘|“~×*Ñ*Ó,ˆð ¡	¨|×/CÑ/CÓ/EÔ FÑF€JÜ:?À»(ÖC°Q�*™y¨aÔ0Ó0ÐC€JÐCô "×)Ñ)×0Ñ0ØØØ™y¨aÔ0Ñ0ð 1ó ÷ �n�Y 	¨6Ó2·8±8¸FÀLÓ3Qð	 ð ÐØò 5ˆØŸ	™	×*Ñ*¨:Ó6ˆØÐ 0Ñ0Ø.0Ð˜]Ñ+Ø˜Ñ'×.Ñ.¨tÕ4ð	5ñ 
‹€BØ	�‰€BØ& u§z¡z lÐ3€B„Hð 4°E·J±J°<Ð@€B€t�HÙ˜b tÔ,€B€t�H„MØ‡N�N�7Ôà! *×"5Ñ"5°jÓ"AÐ!BÀ&È*ÑW`ÐfgÔWhÑJh×IrÑIrÐs}ÓI~ÐHð  A€B€t�HÙ˜b¨Ô.€B€t�H„MØ‡N�N�7Ôò ^€Lñ ˜D¨Ô1€KÙ¨(¸hÐRYÔZ€KÙ ¨H¸xÐSWÔXÐä#,¬S°¸\Ó-JÐRSÔ#Tò 5ÑˆÑˆD�,Ø�w‰w˜1 Q°°¸bÀÇÁÈwÓAWÐ@XÐ.YˆwÓZˆØˆŒ	ØˆŒ	Ø)ˆŒØ24ˆ×ÑœS  a¡›[Ñ)Õ/ð5ð ‡G�G�˜! <€GÔ0Ø$/€B‡G�G�˜!€GÓÔ!Ø$/€B‡G�G�˜!€GÓÔ!Ø)9€B‡G�G�˜!€GÓÔ&Ø&(€B×Ñ˜ÑÔ#ò€Jð €MØò 6ˆØ—=‘= Ó,ˆØ"$ˆ�hÑØ$×(Ñ(¨°2Ó6ò 	6ˆDØŸ™×0Ñ0°Ó9ˆIØ15ˆM˜(Ñ# IÒ.ñ	6ð6ñ Ù˜ÔÙ˜Ô Ù�vÔÙ˜&Ô!ô	€Fô "+¨:¸QÔ!?ó EÑˆ‘�%˜Ø
�‰�G A°¨w°a¸°uÐ-=ˆÔ>Ù3<ÈÐ[cÔ3dˆ�‰�G AˆÓ&Ô0Ø06ˆ�‰�G AˆÓ&Ô-ä& z¸Ô;ó 	E‰MˆG�TØ—}‘} ZÓ0ˆHØ ×$Ñ$ X¨rÓ2×6Ñ6°uÓ=ˆDâØ.2¯iªiœC §	¡	œN¸U�	Ø—9’9 §¡×!6Ò!6Ø 5�Ià $§¡× 1Ñ 1Ð2°"°T·\±\×5KÑ5KÐ4LÈAÈdÏlÉl×NeÑNeÐMfÐfhÐirÐhsÐt�
Ø—:’:Ø B t§z¡z lÐ"3Ñ3�Jà—‘˜G¨G¸:�ÔFÙAJÐUYÐfnØT\ôB^�—‘˜G¨G�Ó4Ô>à>D�—‘˜G¨G�Ó4Ô;Ø46�×!Ñ! 'Ñ*Ö1à—‘˜G¨G¸5�ÔAÙAJÐV^ÐiqÔAr�—‘˜G¨G�Ó4Ô>Ø>D�—‘˜G¨G�Ó4Ö;ò+	EðEô8 Ð)lÔm€Hà#BÀ5Ç:Á:À,ÈaÐPZ×PcÑPcÐdlÓPmÐOnÐntÐ!uð Øñà‡G�GˆHÔØ€OùòW Ds   Ã1X6c                 óð  — | j                   j                  dk(  rU| j                   j                  }t        j                  j                  |¬«      j                  d«      }t        | d||dœ«      S t        j                  j                  «       }| j                  j                  d«      }| j                  j                  d«      }|s#t        j                  «       j                  «       }n$t        j                  |d«      j                  «       }d	}g }|rRt!        t        |¬
«      }t"        j                  j                  ||¬«      j                  ddd«      j%                  d«      }||||dœ}	t        | d|	«      S )u)   Ð¡Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð¿Ð¾Ñ�ÐµÑ‰Ð°ÐµÐ¼Ð¾Ñ�Ñ‚Ð¸r   )r   Úschedule_item__subjectzmy_attendance.html)Úattendancesr   r   r+   r    Nr   r!   r"   r#   r$   r%   )r)   r*   r+   r-   zattendance_mark.html)r6   r7   r   r   r2   r8   r?   r   r   r3   r4   r5   r   r=   r   rA   r   r   r@   )
rD   r   rã   r)   rE   Úselected_date_strr+   r*   r-   rI   s
             rJ   Úattendance_viewrå   F  sK  € ð ‡|�|×Ñ˜IÒ%Ø—,‘,×&Ñ&ˆÜ ×(Ñ(×/Ñ/¸Ð/Ó@×OÑOÐPhÓiˆÜ�gÐ3À[Ð]dÑ5eÓfÐfä�]‰]×ÑÓ €FØŸ™Ÿ™¨Ó0ÐØŸ™Ÿ™¨Ó8Ðñ Ü Ÿ™›×+Ñ+Ó-‰ä ×)Ñ)Ð*;¸ZÓH×MÑMÓOˆà€NØ€NáÜ*¬5Ð5FÔGˆÜ%×-Ñ-×4Ñ4Ø Øð 5ó 
÷ ‰.˜ I¨vÓ
6·x±xÀÓ7Mð 	ð Ø(Ø&Ø(ñ	€Gô �'Ð1°7Ó;Ð;r`   c                 ó  — | j                   j                  d«      }|s!t        j                  | d«       t	        d«      S t        t        |¬«      }t        j                  j                  |j                  ¬«      }g }|D ]E  }t        j                  j                  ||¬«      j                  «       }|j                  ||dœ«       ŒG | j                  dk(  r¨|D ]‚  }| j                  j                  d	|j                   › �d
«      }t#        | j                  j                  d|j                   › �d«      «      }t        j                  j%                  ||||dœ¬«       Œ„ t        j&                  | d«       t	        d«      S ||dœ}	t)        | d|	«      S )ue   Ð¡Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸ Ð¿Ð¾Ñ�ÐµÑ‰Ð°ÐµÐ¼Ð¾Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³Ð¾ Ð·Ð°Ð½Ñ�Ñ‚Ð¸Ñ�Úschedule_item_idu"   Ð—Ð°Ð½Ñ�Ñ‚Ð¸Ðµ Ð½Ðµ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð¾rå   r   ©r   )Úschedule_itemr   )r   Ú
attendancero   Ústatus_ÚpresentÚlate_r   )ÚstatusÚlate_minutes)ré   r   Údefaultsu+   ÐŸÐ¾Ñ�ÐµÑ‰Ð°ÐµÐ¼Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð°)ré   Ústudents_with_attendancezmark_attendance.html)r4   r5   r   rw   r   r   r   r   r2   r8   r   r   r<   rd   rx   ro   r   ÚintÚupdate_or_createrz   r   )
rD   rç   ré   Ústudentsrñ   r   Úattrî   rï   rI   s
             rJ   Úmark_attendancerö   k  s  € ð —{‘{—‘Ð'9Ó:ÐáÜ�‰�wÐ DÔEÜÐ)Ó*Ð*ä%¤lÐ7GÔH€MÜ�‰×%Ñ%¨M×,?Ñ,?Ð%Ó@€Hð  "ÐØò ˆÜ× Ñ ×'Ñ'°mÈWÐ'ÓU×[Ñ[Ó]ˆØ ×'Ñ'ØØñ)
õ 	ðð ‡~�~˜ÒØò 	ˆGØ—\‘\×%Ñ%¨°·
±
¨|Ð&<¸iÓHˆFÜ˜wŸ|™|×/Ñ/°%¸¿
¹
°|Ð0DÀaÓHÓIˆLä×Ñ×/Ñ/Ø+ØØ$*¸LÑIð 0õ ð		ô 	×Ñ˜Ð"OÔPÜÐ)Ó*Ð*ð 'Ø$<ñ€Gô �'Ð1°7Ó;Ð;r`   c           	      óÜ  — | j                   j                  d«      }| j                   j                  d«      }|r|st        g d¬«      S t        j                  j                  ||¬«      j                  d«      }|D �cg c]Y  }|j                  |j                  j                  |j                  j                  d«      |j                  j                  d«      dœ‘Œ[ }}t        |d¬«      S c c}w )	ul   ÐŸÐ¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ Ñ€Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ñ� Ð´Ð»Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ Ð¸ Ð´Ð½Ñ� Ð½ÐµÐ´ÐµÐ»Ð¸ (AJAX)r   rB   F)Úsafe)rp   rB   r"   r…   )r   Úsubject_namer%   rs   )r4   r5   r	   r   r2   r8   r?   r   r"   rN   r%   r>   rs   )rD   rp   rB   r-   rh   r†   s         rJ   Úget_schedule_jsonrú   ”  sÙ   € ð �{‰{�‰˜wÓ'€HØ�k‰k�o‰o˜iÓ(€Gá™7Ü˜B UÔ+Ð+ä!×)Ñ)×0Ñ0ØØð 1ó ÷ �n�YÓð ð !ö"ð
 ð	 �g‰gØŸ™×)Ñ)Ø—o‘o×.Ñ.¨wÓ7Ø—M‘M×*Ñ*¨7Ó3ó	ð "€Dð "ô ˜ 5Ô)Ð)ùò"s   Á<AC)c                 ó@  — | j                   j                  d«      }t        t        |¬«      }t        j
                  j                  |j                  ¬«      }t        j
                  j                  |¬«      D �ci c]  }|j                  |“Œ }}|j                  |j                  j                  |j                  |j                  j                  d«      |j                  j                  d«      |j                   j                  |D �cg c]z  }|j                  |j"                  › d|j$                  › �|j                  |v r||j                     j&                  nd|j                  |v r||j                     j(                  ndd	œ‘Œ| c}d
œ}t+        |«      S c c}w c c}w )uh   ÐŸÐ¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ Ñ�Ð¿Ð¸Ñ�ÐºÐ° Ñ�Ñ‚ÑƒÐ´ÐµÐ½Ñ‚Ð¾Ð² Ð´Ð»Ñ� Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸ Ð¿Ð¾Ñ�ÐµÑ‰Ð°ÐµÐ¼Ð¾Ñ�Ñ‚Ð¸ (AJAX)rn   r   rè   )ré   r…   r³   rì   r   )r   rN   rî   rï   )rç   Ú
group_namerB   r%   rs   rù   rô   )r4   r5   r   r   r   r2   r8   r   r   Ú
student_idr   rN   rB   r%   r>   rs   r"   rÈ   rÉ   rî   rï   r	   )rD   Úschedule_idré   rô   rõ   rã   Úsr†   s           rJ   Úget_students_for_attendancer   ¬  sc  € ð —+‘+—/‘/ *Ó-€KÜ%¤l°{ÔC€Mä�‰×%Ñ%¨M×,?Ñ,?Ð%Ó@€Hô 3=×2DÑ2D×2KÑ2KÐZgÐ2KÓ2hÖi¨3�3—>‘> 3Ñ&Ði€KÐið *×,Ñ,Ø#×)Ñ)×.Ñ.Ø ×(Ñ(Ø#×.Ñ.×7Ñ7¸Ó@Ø!×*Ñ*×3Ñ3°GÓ<Ø%×-Ñ-×2Ñ2ð öð
 ð	 —$‘$Ø—{‘{�m 1 Q§\¡\ NÐ3Ø23·$±$¸+Ñ2E�k !§$¡$Ñ'×.Ò.È9Ø>?¿d¹dÀkÑ>Q˜K¨¯©Ñ-×:Ò:ÐWXó	
ò ñ€Dô ˜ÓÐùò# jùòs   Á9FÄA?Fc                 ón  — | j                   j                  dk(  rt        d«      S | j                   j                  dk(  rt        d«      S t        j                  j                  dd«      j                  «       }dddddœ}g }|D ]�  }|j                  j                  «       }|s7dd	l	m
}  ||«      \  }}}	}
t        j                  j                  ||||	|
¬
«      }||j                  xx   dz  cc<   |j                  dv sŒ||j                  ||dœ«       Œ‘ t        |j!                  «       «      xs d}t#        j$                  «       |d   |d   |d   |d   t'        |d   |z  dz  d«      t'        |d   |z  dz  d«      t'        |d   |z  dz  d«      t'        |d   |z  dz  d«      dœ|dœ}t)        | d|«      S )up   Ð“Ð»Ð°Ð²Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ñ� Ñ€Ð¸Ñ�ÐºÐ°Ð¼Ð¸ (Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸ Ð²Ñ‹ÑˆÐµ)r   Úmy_riskr   Úchild_progressr6   r   r   )ÚlowÚmediumÚhighÚcritical©Úcalculate_student_risk©r   Ú
risk_scoreÚ
risk_levelÚtop_factorsÚrecommended_actionr
   )r  r  ©r   Úriskr  r  r  r  éd   )r  r  r  r  Úlow_percentÚmedium_percentÚhigh_percentÚcritical_percent)r1   ÚstatsÚhigh_risk_studentszdashboard.html)r6   r7   r   r   r2   r?   r3   Úrisk_predictionsr<   Úrisk.risk_calculatorr	  r   ry   r  rd   ÚsumÚvaluesr   r=   Úroundr   )rD   rô   r  Úhigh_risk_listr   Úlatestr	  ÚscoreÚlevelÚfactorsÚrecÚtotalrI   s                rJ   Ú	dashboardr$  Ë  sÑ  € ð ‡|�|×Ñ˜IÒ%Ü˜	Ó"Ð"Ø‡|�|×Ñ˜HÒ$ÜÐ(Ó)Ð)ä�‰×-Ñ-¨f°gÓ>×BÑBÓD€Hà ¨A¸1Ñ=€EØ€Nàò HˆØ×)Ñ)×/Ñ/Ó1ˆÙÝCÙ)?ÀÓ)HÑ&ˆE�5˜' 3Ü#×+Ñ+×2Ñ2Ø¨E¸eØ#¸ð 3ó ˆFð 	ˆf×ÑÓ  AÑ%Ó Ø×ÑÐ 4Ò4Ø×!Ñ!¨g¸vÑ"FÕGðHô �—‘“ÓÒ$ 1€Eô —‘“à˜‘<¨5°©?Ø˜&‘M¨u°ZÑ/@Ü   u¡°Ñ!5¸Ñ!;¸QÓ?Ü# E¨(¡O°eÑ$;¸cÑ$AÀ1ÓEÜ! %¨¡-°%Ñ"7¸#Ñ"=¸qÓAÜ % e¨JÑ&7¸%Ñ&?À#Ñ&EÀqÓ Iñ
ð -ñ€Gô �'Ð+¨WÓ5Ð5r`   c                 óÖ  — | j                   j                  dvr!| j                   j                  st        d«      S t        j
                  j                  «       }g }|D ]i  }|j                  j                  «       }|s7ddl	m
}  ||«      \  }}}}	t        j
                  j                  |||||	¬«      }|j                  ||dœ«       Œk |j                  d„ d¬	«       t        | d
d|i«      S )uy   Ð¡Ð¿Ð¸Ñ�Ð¾Ðº Ð²Ñ�ÐµÑ… Ñ�Ñ‚ÑƒÐ´ÐµÐ½Ñ‚Ð¾Ð² Ñ� Ñ€Ð¸Ñ�ÐºÐ°Ð¼Ð¸ (Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸ Ð²Ñ‹ÑˆÐµ)rk   r$  r   r  r
  r  c                 ó    — | d   j                   S )Nr  )r  r]   s    rJ   r_   zrisk_list.<locals>.<lambda>
  s   €   6¡×!5Ñ!5€ r`   T)ra   Úreversezrisk_list.htmlÚ	risk_list)r6   r7   rv   r   r   r2   r3   r  r<   r  r	  r   ry   rd   re   r   )
rD   rô   Ú	risk_datar   Úpredr	  r  r   r!  r"  s
             rJ   r(  r(  ÷  så   € ð ‡|�|×ÑÐ FÑFÈwÏ|É|×OdÒOdÜ˜Ó$Ð$ä�‰×"Ñ"Ó$€HØ€IØò 	=ˆØ×'Ñ'×-Ñ-Ó/ˆÙÝCÙ)?ÀÓ)HÑ&ˆE�5˜' 3Ü!×)Ñ)×0Ñ0Ø¨E¸eØ#¸ð 1ó ˆDð 	×Ñ W°dÑ;Õ<ð	=ð ‡N�NÑ5¸t€NÔDÜ�'Ð+¨k¸9Ð-EÓFÐFr`   c                 óü  — | j                   j                  dk7  rt        d«      S | j                   j                  }|j                  j                  «       }|s7ddlm}  ||«      \  }}}}t        j                  j                  |||||¬«      }ddlm} |j                  j                  |j                  t        j                   «       j#                  «       ¬«      j%                  d«      d	d
 }	t'        | d|||	dœ«      S )uJ   Ð¡Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ñ€Ð¸Ñ�ÐºÐ° Ð´Ð»Ñ� ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚ÑƒÐ´ÐµÐ½Ñ‚Ð°r   r$  r   r  r
  )Ú
Assignment)r   Údeadline__gteÚdeadlineNrX   zmy_risk.html)r   r  Úupcoming_assignments)r6   r7   r   r   r  r<   r  r	  r   r2   ry   Úassignments.modelsr,  r8   r   r   r=   r   r@   r   )
rD   r   r*  r	  r  r   r!  r"  r,  r/  s
             rJ   r  r    sô   € ð ‡|�|×Ñ˜IÒ%Ü˜Ó$Ð$à�l‰l×"Ñ"€GØ×#Ñ#×)Ñ)Ó+€DÙÝ?Ù%;¸GÓ%DÑ"ˆˆu�g˜sÜ×%Ñ%×,Ñ,Ø¨¸%Ø°Cð -ó 
ˆõ .Ø%×-Ñ-×4Ñ4Ø�m‰mÜ—l‘l“n×)Ñ)Ó+ð 5ó ÷ �hˆzÓ˜2˜AðÐô
 �'˜>ØØØ 4ñ,ó ð r`   c           	      óš  — | j                   j                  dk7  rt        d«      S | j                   j                  }|j                  j                  «       }| j                  j                  d«      }|rt        t        ||¬«      }n|j                  «       }|rT|j                  j                  «       }|s:ddlm}  ||«      \  }}}	}
t        j                  j!                  ||||	|
¬«      }nd}g }|rJ|j"                  r>t$        j                  j'                  |j"                  ¬	«      j)                  d
dd«      dd }t+        | d||||dœ«      S )uP   Ð¡Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° ÑƒÑ�Ð¿ÐµÐ²Ð°ÐµÐ¼Ð¾Ñ�Ñ‚Ð¸ Ñ€ÐµÐ±Ñ‘Ð½ÐºÐ° Ð´Ð»Ñ� Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ�r   r$  Úchild)r   Úparentsr   r  r
  Nrè   r"   r#   r$   rX   zchild_progress.html)r9   Úselected_childr  r-   )r6   r7   r   r   r9   r3   r4   r5   r   r   r<   r  r  r	  r   r2   ry   r   r   r8   r?   r   )rD   r   r9   Úselected_child_idr4  r*  r	  r  r   r!  r"  r-   s               rJ   r  r  0  sI  € ð ‡|�|×Ñ˜HÒ$Ü˜Ó$Ð$à�\‰\× Ñ €FØ�‰×"Ñ"Ó$€HØŸ™Ÿ™¨Ó0ÐáÜ*¬7Ð7HÐRXÔY‰à!Ÿ™Ó)ˆáØ×.Ñ.×4Ñ4Ó6ˆÙÝCÙ)?ÀÓ)OÑ&ˆE�5˜' 3Ü!×)Ñ)×0Ñ0Ø&°5ÀUØ#¸ð 1ó ‰Dð
 ˆð €NÙ˜.×.Ò.Ü%×-Ñ-×4Ñ4¸>×;OÑ;OÐ4ÓP×_Ñ_Ð`iÐktØ`fóhØhjÐijðlˆô �'Ð0ØØ(ØØ(ñ	3ó ð r`   )*Údjango.shortcutsr   r   r   Údjango.contrib.auth.decoratorsr   Údjango.contribr   Údjango.httpr   r	   Úmodelsr   r   r   r   r   r   r   Úusers.modelsr   r   Úrisk.modelsr   r   r   ÚcalendarrK   ri   r{   r€   rƒ   r‡   rà   rå   rö   rú   r   r$  r(  r  r  © r`   rJ   ú<module>r?     s`  ðß @Ñ @Ý 9Ý #ß 2ß Z× ZÑ Zß )Ý &ß (Û ð
 ñ49ó ð49ðn ñ=ó ð=ðD ñ  ó ð  ðF ñ ó ð ð, ñ	 ó ð	 ð ñó ðð ñBó ðBðL ñ!<ó ð!<ðH ñ%<ó ð%<ðP ñ*ó ð*ð. ñó ðð< ñ(6ó ð(6ðV ñGó ðGð0 ñó ðð> ñ%ó ñ%r`   