a
    ïj®]  ã                   @   sL  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d„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZ edd„ ƒZ!edd„ ƒZ"edd„ ƒZ#edd„ ƒZ$edd „ ƒZ%ed!d"„ ƒZ&ed#d$„ ƒZ'ed%d&„ ƒZ(ed'd(„ ƒZ)d
S ))é    )ÚrenderÚredirectÚget_object_or_404)Úlogin_required)Úmessages)ÚHttpResponseÚJsonResponseé   )ÚGroupÚSubjectÚScheduleItemÚRoomÚ
AttendanceÚAcademicDebtÚOlympiad)ÚTeacherÚStudent)ÚRiskPrediction©ÚdatetimeÚ	timedeltaNc              
      s^  t j ¡ }| j d¡}| j d¡}| jjdkrP| jj}t jj|j	j
d�}|j	}n`| jjdkr–| jj}|j ¡ r�t jj|j ¡ d� ¡ }| ¡ }q°d}n|r¨tt |d�}n| ¡ }|sÂt ¡  d¡}|rètjj||d	� d
dd¡ d¡}ng }t |d¡}|t| ¡ d� ‰ ‡ fdd„tdƒD ƒ}	||||	|tj ¡ tj ¡ tj ¡ t ¡  ¡ dœ	}
t| d|
ƒS )uL   Ð“Ð»Ð°Ð²Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ñ€Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ñ� Ñ� ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ‘Ð¼ÚgroupÚdateÚstudent©ÚidÚparent)Zstudents__inNú%Y-%m-%d©r   r   ÚsubjectÚteacherÚroomÚ
start_time©Údaysc                    s   g | ]}ˆ t |d � ‘qS ©r#   )r   ©Ú.0Úi©Ú
week_start© úD:\diplom_project\core\views.pyÚ
<listcomp>6   ó    z!schedule_view.<locals>.<listcomp>é   )	ÚgroupsÚselected_groupÚselected_dateÚ
week_datesÚschedule_itemsÚsubjectsZteachersZ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   )Úrequestr0   Úselected_group_idr2   r   r1   r   r4   Úcurrent_dater3   Úcontextr+   r)   r,   Úschedule_view   sT    


þýý
÷rM   c           	   
   C   sØ   t t|d�}t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d	œg}i }|D ]}g ||d < qv|D ]}||j  |¡ qŒ|D ]}|| jdd„ d� q¦|||d œ}t	| d!|ƒS )"uF   Ð Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ðµ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³Ð¾ Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»Ñ�r   )r    r   r   r!   õ   ÐŸÐ¾Ð½ÐµÐ´ÐµÐ»ÑŒÐ½Ð¸Ðºu   ÐŸÐ�r	   )ÚnameZshortÚnumberõ   Ð’Ñ‚Ð¾Ñ€Ð½Ð¸Ðºu   Ð’Ð¢é   õ
   Ð¡Ñ€ÐµÐ´Ð°u   Ð¡Ð é   õ   Ð§ÐµÑ‚Ð²ÐµÑ€Ð³u   Ð§Ð¢é   õ   ÐŸÑ�Ñ‚Ð½Ð¸Ñ†Ð°u   ÐŸÐ¢é   õ   Ð¡ÑƒÐ±Ð±Ð¾Ñ‚Ð°u   Ð¡Ð‘é   õ   Ð’Ð¾Ñ�ÐºÑ€ÐµÑ�ÐµÐ½ÑŒÐµu   Ð’Ð¡r/   rP   c                 S   s   | j S )N)r"   ©Úxr+   r+   r,   Ú<lambda>_   r.   z"teacher_schedule.<locals>.<lambda>)Úkey)r    ÚweekdaysÚschedule_by_weekdayzteacher_schedule.html)
r   r   r   r7   r=   rD   rG   ÚappendÚsortr   )	rI   Ú
teacher_idr    r4   r`   ra   ÚdayÚitemrL   r+   r+   r,   Úteacher_scheduleF   s,    






ù
ýrg   c                 C   sâ   | j jdvr(| j js(t | d¡ tdƒS | jdkrÚ| j d¡}| j d¡}| j d¡}t	j
j|||d� ¡ }|r„t | d	¡ tdƒS t	j
j|| j d
¡| j d¡| j d¡p®d ||| j d¡| j dd¡d� t | d¡ tdƒS )N©r    Úacademic_staffÚadminuB   Ð£ Ð²Ð°Ñ� Ð½ÐµÑ‚ Ð¿Ñ€Ð°Ð² Ð½Ð° Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð·Ð°Ð½Ñ�Ñ‚Ð¸Ð¹ÚscheduleÚPOSTÚgroup_idr   r"   )rm   r   r"   u4   Ð’ Ñ�Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÑƒÐ¶Ðµ ÐµÑ�Ñ‚ÑŒ Ð·Ð°Ð½Ñ�Ñ‚Ð¸Ðµ!Ú
subject_idrd   Úroom_idÚend_timeÚtopicÚ )rm   rn   rd   ro   r   r"   rp   rq   u!   Ð—Ð°Ð½Ñ�Ñ‚Ð¸Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¾)r;   r<   Úis_staffr   Úerrorr   Úmethodrl   r:   r   r7   r=   r?   ÚcreateÚsuccess)rI   rm   r   r"   r?   r+   r+   r,   Úadd_schedule_itemi   s6    
ý



ø
rx   c                 C   sÊ   | j jdvr(| j js(t | d¡ tdƒS tt|d�}| jdkrÂ| j	 
d¡|_| j	 
d¡|_| j	 
d¡phd |_| j	 
d	¡|_| j	 
d
¡|_| j	 
d¡|_| j	 
dd¡|_| ¡  t | d¡ tdƒS tdƒS )Nrh   u;   Ð£ Ð²Ð°Ñ� Ð½ÐµÑ‚ Ð¿Ñ€Ð°Ð² Ð½Ð° Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµrk   r   rl   rn   rd   ro   r   r"   rp   rq   rr   u!   Ð—Ð°Ð½Ñ�Ñ‚Ð¸Ðµ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾)r;   r<   rs   r   rt   r   r   r   ru   rl   r:   rn   rd   ro   r   r"   rp   rq   Úsaverw   ©rI   Úitem_idrf   r+   r+   r,   Úedit_schedule_item�   s     
r|   c                 C   sP   | j jdvr(| j js(t | d¡ tdƒS tt|d�}| ¡  t 	| d¡ tdƒS )ud   Ð£Ð´Ð°Ð»ÐµÐ½Ð¸Ðµ Ð·Ð°Ð½Ñ�Ñ‚Ð¸Ñ� (Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸ Ð°Ð´Ð¼Ð¸Ð½Ð¾Ð²)rh   u>   Ð£ Ð²Ð°Ñ� Ð½ÐµÑ‚ Ð¿Ñ€Ð°Ð² Ð½Ð° ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ðµ Ð·Ð°Ð½Ñ�Ñ‚Ð¸Ð¹rk   r   u   Ð—Ð°Ð½Ñ�Ñ‚Ð¸Ðµ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¾)
r;   r<   rs   r   rt   r   r   r   Údeleterw   rz   r+   r+   r,   Údelete_schedule_item¤   s    r~   c                 C   sR   t t|d�}|j|j d¡|j d¡|jj|jj|jr>|jjnd|j	dœ}t
|ƒS )Nr   ú%H:%Mrr   )r   r"   rp   rn   rd   ro   rq   )r   r   r   r"   rC   rp   r   r    r!   rq   r   )rI   r{   rf   Údatar+   r+   r,   Úget_schedule_item_json°   s    

ù	r�   c           '   	      sÒ  ddl m} ddlm}m}m}m}m} ddlm}m	‰  | j
 d¡}| j
 d¡}	|sht | d¡ tdƒS tt|d	�}
|	rŠ| |	d
¡ ¡ }n| ¡  ¡ }|ˆ | ¡ d� ‰‡ ‡fdd„tdƒD ƒ}tjj|
ˆˆˆ dd� d� ddd¡ dd¡}i }|D ]0}|j d
¡}||v�rg ||< ||  |¡ qö|ƒ }|j}d|
j› �|_d|
j› �|d< |ddd�|d _ | !d¡ dˆ d¡› dˆˆ dd�  d¡› �|d< |d dd!�|d _ | !d"¡ g d#¢}|dd$d%�}|d&d&d'd(�}|d)d)dd*�}t"t#||ƒd+d,�D ]T\}\}}|j$d-||› d.| d/¡› �d0�}||_ ||_%||_&d1|j't(d2| ƒ _)�qö|j$d-d3d4d0� ||j$d-d3d5�_ ||j$d-d3d5�_%||j$d-d3d5�_&d6|j'd7 _)g d8¢}i }|D ]D}| d
¡}i ||< | |g ¡D ]}|j* d9¡}||| |< �qÊ�q¨||d:d;�|d:d;�|d:d;�|d:d;�d<�}t"|d=d,�D �]v\} \}!}"|j$| d3|!› d>|"› �d0� |d)d)d?�|j$| d3d5�_&||j$| d3d5�_+t"|d+d,�D �]\}#}| d
¡}| |i ¡ |!¡}|�r\|j,�r¼t-|j,ƒnd@}$|j,�rÖ|j,j.�rÖdA}$|j/j› d.|j0j1› dB|j0j2› d.|$› �}%|j3�r|%d.|j3› �7 }%|j$| |#|%d0� |dd)d)dC�|j$| |#d5�_&||j$| |#d5�_+dD|j4|  _5n8|j$| |#d@d0� |d)d)d?�|j$| |#d5�_&||j$| |#d5�_+�q~�q"t6dEdF�}&dG|
j› dHˆ dI¡› dJ�|&dK< | 7|&¡ |&S )LuQ   Ð­ÐºÑ�Ð¿Ð¾Ñ€Ñ‚ Ñ€Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ñ� Ð² Excel Ð½Ð° Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½ÑƒÑŽ Ð½ÐµÐ´ÐµÐ»ÑŽr   )ÚWorkbook)Ú	AlignmentÚFontÚPatternFillÚBorderÚSider   r   r   u   Ð’Ñ‹Ð±ÐµÑ€Ð¸Ñ‚Ðµ Ð³Ñ€ÑƒÐ¿Ð¿Ñƒrk   r   r   r#   c                    s   g | ]}ˆˆ |d � ‘qS r%   r+   r&   ©r   r*   r+   r,   r-   ×   r.   z#export_schedule.<locals>.<listcomp>r/   rZ   )r   Z	date__gteZ	date__lter   r    r!   r"   u   Ð Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ðµ u"   Ð Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ðµ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ ÚA1é   T)ÚsizeÚboldzA1:H1u   Ð�ÐµÐ´ÐµÐ»Ñ� Ñ� z%d.%m.%Yu    Ð¿Ð¾ ÚA2é   )r‹   ZitaliczA2:H2)rN   rQ   rS   rU   rW   rY   r[   ZFFFFFF)rŒ   ÚcolorZ4395ABZsolid)Zstart_colorZ	end_colorZ	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   Z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)8Zopenpyxlr‚   Zopenpyxl.stylesrƒ   r„   r…   r†   r‡   r   r   r9   r:   r   rt   r   r   r
   rF   r   rB   rG   rH   r   r7   r=   rD   rE   rC   rb   ÚactiverO   ÚtitleZfontZmerge_cellsÚ	enumerateÚzipÚcellÚfillÚ	alignmentZcolumn_dimensionsÚchrÚwidthr"   Úborderr!   ÚstrÚis_distancer   r    Ú	last_nameÚ
first_namerq   Zrow_dimensionsÚheightr   ry   )'rI   r‚   rƒ   r„   r…   r†   r‡   r   rm   Zdate_strr   rK   r3   r4   Zschedule_by_daterf   Zdate_str_itemÚwbÚwsZweekdays_rusZheader_fontZheader_fillZheader_alignmentr(   r   Zweekday_namer«   Z
time_slotsZschedule_dictZdate_keyZ	start_keyr°   Zrow_idxr”   ÚendZcol_idxZ	room_nameZ
cell_valueÚresponser+   rˆ   r,   Úexport_schedule¿   sÂ    ýüü

*
 
ü
&ÿ
ÿÿ
rº   c           
      C   sÐ   | j jdkr:| j j}tjj|d� d¡}t| d||dœƒS tj 	¡ }| j
 d¡}| j
 d¡}|snt ¡  ¡ }nt |d¡ ¡ }d	}g }|r¶tt|d
�}tjj||d� ddd¡ d¡}||||dœ}	t| d|	ƒS )u)   Ð¡Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð¿Ð¾Ñ�ÐµÑ‰Ð°ÐµÐ¼Ð¾Ñ�Ñ‚Ð¸r   )r   Zschedule_item__subjectzmy_attendance.html)Úattendancesr   r   r2   r   Nr   r   r   r    r!   r"   )r0   r1   r2   r4   zattendance_mark.html)r;   r<   r   r   r7   r=   rD   r   r
   r8   r9   r:   r   rB   r   rF   r   r   rE   )
rI   r   r»   r0   rJ   Zselected_date_strr2   r1   r4   rL   r+   r+   r,   Úattendance_viewF  s8    
þýýür¼   c           
      C   sø   | j  d¡}|s$t | d¡ tdƒS tt|d�}tjj	|j
d�}g }|D ](}tjj	||d� ¡ }| ||dœ¡ qH| jdkrâ|D ]L}| j d	|j› �d
¡}t| j d|j› �d¡ƒ}tjj||||dœd� q€t | d¡ tdƒS ||dœ}	t| d|	ƒS )ue   Ð¡Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸ Ð¿Ð¾Ñ�ÐµÑ‰Ð°ÐµÐ¼Ð¾Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³Ð¾ Ð·Ð°Ð½Ñ�Ñ‚Ð¸Ñ�Úschedule_item_idu"   Ð—Ð°Ð½Ñ�Ñ‚Ð¸Ðµ Ð½Ðµ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð¾r¼   r   ©r   )Úschedule_itemr   )r   Z
attendancerl   Zstatus_ÚpresentZlate_r   )ÚstatusÚlate_minutes)r¿   r   Údefaultsu+   ÐŸÐ¾Ñ�ÐµÑ‰Ð°ÐµÐ¼Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð°)r¿   Ústudents_with_attendancezmark_attendance.html)r9   r:   r   rt   r   r   r   r   r7   r=   r   r   rA   rb   ru   rl   r   ÚintÚupdate_or_createrw   r   )
rI   r½   r¿   ÚstudentsrÄ   r   ÚattrÁ   rÂ   rL   r+   r+   r,   Úmark_attendancek  s8    þ

ýþrÉ   c                 C   s\   | j  d¡}| j  d¡}|r |s,tg dd�S tjj||d� d¡}dd„ |D ƒ}t|dd�S )	ul   ÐŸÐ¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ Ñ€Ð°Ñ�Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ñ� Ð´Ð»Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ Ð¸ Ð´Ð½Ñ� Ð½ÐµÐ´ÐµÐ»Ð¸ (AJAX)r   rG   F)Úsafe)rm   rG   r   c                 S   s0   g | ](}|j |jj|j d ¡|j d ¡dœ‘qS )r   )r   Úsubject_namer"   rp   )r   r   rO   r"   rC   rp   )r'   rf   r+   r+   r,   r-   ¢  s   ü

üz%get_schedule_json.<locals>.<listcomp>)r9   r:   r   r   r7   r=   rD   )rI   rm   rG   r4   r€   r+   r+   r,   Úget_schedule_json”  s    þýûrÌ   c              	      s†   | j  d¡}tt|d�}tjj|jd�}dd„ tjj|d�D ƒ‰ |j	|jj
|j|j d¡|j d¡|jj
‡ fdd	„|D ƒd
œ}t|ƒS )uh   ÐŸÐ¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ Ñ�Ð¿Ð¸Ñ�ÐºÐ° Ñ�Ñ‚ÑƒÐ´ÐµÐ½Ñ‚Ð¾Ð² Ð´Ð»Ñ� Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸ Ð¿Ð¾Ñ�ÐµÑ‰Ð°ÐµÐ¼Ð¾Ñ�Ñ‚Ð¸ (AJAX)rk   r   r¾   c                 S   s   i | ]}|j |“qS r+   )Ú
student_id)r'   rÈ   r+   r+   r,   Ú
<dictcomp>µ  r.   z/get_students_for_attendance.<locals>.<dictcomp>)r¿   r   c                    sV   g | ]N}|j |j› d |j› �|j ˆ v r2ˆ |j  jnd|j ˆ v rJˆ |j  jnddœ‘qS )r£   rÀ   r   )r   rO   rÁ   rÂ   )r   r³   r´   rÁ   rÂ   )r'   Ús©r»   r+   r,   r-   ¾  s   üüz/get_students_for_attendance.<locals>.<listcomp>)r½   Ú
group_namerG   r"   rp   rË   rÇ   )r9   r:   r   r   r   r7   r=   r   r   r   rO   rG   r"   rC   rp   r   r   )rI   Zschedule_idr¿   rÇ   r€   r+   rÐ   r,   Úget_students_for_attendance¬  s    


ûùrÒ   c                 C   sX  | j jdkrtdƒS | j jdkr(tdƒS tj dd¡ ¡ }dddddœ}g }|D ]p}|j ¡ }|s”dd	l	m
} ||ƒ\}}}	}
tjj||||	|
d
�}||j  d7  < |jdv rP| ||dœ¡ qPt| ¡ ƒpÐd}t ¡ |d |d |d |d t|d | d dƒt|d | d dƒt|d | d dƒt|d | d dƒdœ|dœ}t| d|ƒS )up   Ð“Ð»Ð°Ð²Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ñ� Ñ€Ð¸Ñ�ÐºÐ°Ð¼Ð¸ (Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸ Ð²Ñ‹ÑˆÐµ)r   Úmy_riskr   Úchild_progressr;   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Ø   Zlow_percentZmedium_percentZhigh_percentZcritical_percent)r6   ÚstatsZhigh_risk_studentszdashboard.html)r;   r<   r   r   r7   rD   r8   Úrisk_predictionsrA   Úrisk.risk_calculatorrÚ   r   rv   rÝ   rb   ÚsumÚvaluesr   rB   Úroundr   )rI   rÇ   rã   Zhigh_risk_listr   ÚlatestrÚ   ÚscoreÚlevelÚfactorsÚrecÚtotalrL   r+   r+   r,   Ú	dashboardË  s>    
þ
úörï   c           
      C   s¦   | j jdvr| j jstdƒS tj ¡ }g }|D ]T}|j ¡ }|srddl	m
} ||ƒ\}}}}	tjj|||||	d�}| ||dœ¡ q.|jdd„ d	d
� t| dd|iƒS )uy   Ð¡Ð¿Ð¸Ñ�Ð¾Ðº Ð²Ñ�ÐµÑ… Ñ�Ñ‚ÑƒÐ´ÐµÐ½Ñ‚Ð¾Ð² Ñ� Ñ€Ð¸Ñ�ÐºÐ°Ð¼Ð¸ (Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸ Ð²Ñ‹ÑˆÐµ)rh   rï   r   rÙ   rÛ   rà   c                 S   s
   | d j S )Nrá   )rÜ   r\   r+   r+   r,   r^   
  r.   zrisk_list.<locals>.<lambda>T)r_   Úreversezrisk_list.htmlÚ	risk_list)r;   r<   rs   r   r   r7   r8   rä   rA   rå   rÚ   r   rv   rb   rc   r   )
rI   rÇ   Z	risk_datar   ÚpredrÚ   rê   rë   rì   rí   r+   r+   r,   rñ   ÷  s     

þrñ   c           
      C   s¤   | j jdkrtdƒS | j j}|j ¡ }|s\ddlm} ||ƒ\}}}}tj	j
|||||d�}ddlm} |j	j|jt ¡  ¡ d� 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)r;   r<   r   r   rä   rA   rå   rÚ   r   r7   rv   Zassignments.modelsró   r=   r   r   rB   r   rE   r   )
rI   r   rò   rÚ   rê   rë   rì   rí   ró   rö   r+   r+   r,   rÓ     s2    
þ
þýýýrÓ   c                 C   sÞ   | j jdkrtdƒS | j j}|j ¡ }| j d¡}|rFtt	||d�}n| 
¡ }|r”|j 
¡ }|s˜ddlm} ||ƒ\}}}	}
tjj||||	|
d�}nd}g }|rÈ|jrÈtjj|jd	� 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)r>   Úselected_childrá   r4   )r;   r<   r   r   r>   r8   r9   r:   r   r   rA   rä   rå   rÚ   r   r7   rv   r   r   r=   rD   r   )rI   r   r>   Zselected_child_idrù   rò   rÚ   rê   rë   rì   rí   r4   r+   r+   r,   rÔ   0  s>    

þ
ÿÿürÔ   )*Údjango.shortcutsr   r   r   Údjango.contrib.auth.decoratorsr   Údjango.contribr   Údjango.httpr   r   Úmodelsr
   r   r   r   r   r   r   Zusers.modelsr   r   Zrisk.modelsr   r   r   ÚcalendarrM   rg   rx   r|   r~   r�   rº   r¼   rÉ   rÌ   rÒ   rï   rñ   rÓ   rÔ   r+   r+   r+   r,   Ú<module>   sN   $
7
"
#



 
$
(


+

