o
    Dj{0                     @   s@  d dl mZmZmZ d dlmZmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZm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&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,Z,dd Z-dd Z.ee-dddd Z/ee-dddd Z0ee-dddd Z1ee-dddd Z2ee-dddd Z3ee-dddd Z4ee-ddd d! Z5ee-ddd"d# Z6ee-ddd$d% Z7ee-ddd&d' Z8ee-ddd(d) Z9ee-ddd*d+ Z:ee-ddd,d- Z;ee-ddd.d/ Z<ee-ddd0d1 Z=ee-ddd2d3 Z>dS )4    )renderredirectget_object_or_404)authenticatelogin)EleveConnexionFormMatiereForm	CopieFormPlancheForm)SemaineForm)Note	ProgrammeColleSemaineGroupeDevoirDevoirRenduTDCoursDocumentConfigPlanche)user_passes_test)messages)Max)datedatetime)Pdf)	MEDIA_URLIMAGEMAGICK
MEDIA_ROOT)Http404HttpResponseForbiddenNc                 C   s   | j rt| jS dS )u9   Renvoie True si l'utilisateur est un élève, False sinonF)is_authenticatedbooleleve)user r'   %/home/reyt/e-colle-new/eleve/views.pyis_eleve   s   
r)   c                 C   s|   t | jr	tdS d}t| jpd}| r5t|jd |jd d}|r3|jr3|j	r3t
| | tdS d}t| d||d	S )
u   Renvoie la vue de la page de connexion des élèves. Si l'élève est déjà connecté, redirige vers la page d'accueil des élèvesaction_eleveFNusernamepassword)r+   r,   Tzeleve/home.html)formerror)r)   r&   r   r   POSTis_validr   cleaned_data	is_activer%   r   r   )requestr.   r-   r&   r'   r'   r(   connec   s   

r4   accueil)	login_urlc                 C   s
   t | dS )u0   Renvoie la vue de la page d'accueil des élèveszeleve/action.html)r   )r3   r'   r'   r(   action%   s   
r7   c              	   C   sZ   | j j}t| jp	d}| r|jd }|jd }nd }}t| d|tj	|||dS )z"Renvoie la vue de la page de bilanNseminsemaxFzeleve/bilan.html)r-   moyennes)
r&   r%   r   r/   r0   r1   r   r   objects
bilanEleve)r3   r%   r-   r8   r9   r'   r'   r(   bilan*   s   
r=   c              	   C   sT   t | jjj| jp	d}| r|jd }nd}| jj}t| d||tj	
||dS )z3Renvoie la vue de la page de consultation des notesNmatierezeleve/note.html)r-   r>   notes)r   r&   r%   classer/   r0   r1   r   r   r;   	noteEleve)r3   r-   r>   r%   r'   r'   r(   note6   s   rB   c              	   C   s   t | jjj| jp	d}d}| r|jd }| jj}tjj	|jd}|r*|j	|d}|j
tddddd}t| d	|||ttd
S )z8Renvoie la vue de la page de consultation des programmesNr>   r@   r>   semaine)
semainemaxz-semainemaxmatiere__nomzeleve/programme.html)r-   r>   
programmes	media_urljpeg)r   r&   r%   r@   r/   r0   r1   r   r;   filterannotater   select_relatedorder_byr   r   r   )r3   r-   r>   r%   rH   r'   r'   r(   	programmeA   s   
rO   c                 C   sh  | j jj}|du rttj }z|d }W n	 ty   tw z
|| d  }W n	 ty3   tw t	| j
p9d}| rI|jd }|jd }t }tjj|dD ]}ddd	 |jd
dD }|j|g||j< qStj|||\}	}
}}tj j}|jo||jk}|r|ddnd}|sd}t| d|||| ||||	|
g dt||||||dS )z7Renvoie la vue de la page de consultation du colloscopeNr      r8   r9   rC   z; c                 S   s(   g | ]}|d    d |d   qS )user__first_name user__last_name)titleupper).0r%   r'   r'   r(   
<listcomp>e   s   ( zcolloscope.<locals>.<listcomp>rQ   rS   T   Fi  zeleve/colloscope.html)lundimardimercredijeudivendredisamedi)r8   r9   	semestre2dictgroupesdictgroupes2r-   r@   jourscreneaux
listejourscollesemainelistegroupesdictColleurs) r&   r%   r@   r!   r   r;   all	Exceptioncountr   r/   r0   r1   dictr   rK   joingroupeelevevaluesnompkr   classe2colloscoper   
get_configr_   	semestresnumerodictGroupesr   ziprg   )r3   r@   semainesr8   r9   r-   rf   groupeelevegrouperb   rc   collesr_   rs   dictGroupes2r'   r'   r(   
colloscopeP   s>   



4r|   c                 C   s,   t  }| jj}t| dtj|t|dS )z5Renvoie la page de la vue de consultation de l'agendazeleve/agenda.html)rz   rI   jour)	r   todayr&   r%   r   r   r;   agendaElever   )r3   r}   r%   r'   r'   r(   agendap   s   r   c                 C   s6   | j jj}tt|d}tt|d}|stt|||S )ul   Renvoie le fichier PDF du colloscope de la classe de l'élève, entre les semaines d'id id_semin et id_semaxrp   )r&   r%   r@   r   r   r!   r   )r3   id_seminid_semaxr@   r8   r9   r'   r'   r(   colloscopePdfw   s   
r   c              
   C   sr   | j jj}t|| jpd}d}| r|jd }tj	| j j|}t
 }tt }t| d||||||dS )u5   renvoie la page des devoirs de la classe de l'élèveNr>   zeleve/devoirs.html)r-   r@   devoirsr>   huiheure)r&   r%   r@   r   r/   r0   r1   r   r;   devoirsElevesr   r~   r   timer   )r3   r@   r-   r>   r   r   r   r'   r'   r(   r      s   

r   c           
      C   s  t t|d}t|j|j}tjj| j	j
|d}d}| rJt }tt }|j|ks<|j|kr8|j|ks<tdS | }tjt|jj}nt| j	j
|d}t| jpWd| jp[d|d}	|	 r| jsm|	jd du rz|rztj|rzt| |	  tdS t | d	|	|d
S )zVenvoie vers un formulaire pour deposer sa copie pour le devoir dont l'id est id_devoirr   )r%   devoirFuA   Vous avez déjà rendu votre devoir et la date limite est passéeNinstancefichiereleve_devoirszeleve/renducopie.html)r-   r   )!r   r   r   combinea_rendre_joura_rendre_heurer   r;   rK   r&   r%   existsr   r~   r   r"   firstospathrl   r    r   namer	   r/   FILESr0   r1   isfileremovesaver   r   )
r3   	id_devoirr   a_rendrerenduoldfiler   r   copier-   r'   r'   r(   
depotCopie   s(   
r   c                 C   r   | j jj}t|| jpd}d}| r|jd }tjj	|d}|dur)|j	|d}|
d}t| d||||dS )u1   renvoie la page des tds de la classe de l'élèveNr>   rC   rD   -date_affichagezeleve/tds.html)r-   r@   tdsr>   )r&   r%   r@   r   r/   r0   r1   r   r;   rK   rN   r   )r3   r@   r-   r>   r   r'   r'   r(   r         


r   c                 C   r   )u3   renvoie la page des cours de la classe de l'élèveNr>   rC   rD   r   zeleve/cours.html)r-   r@   coursr>   )r&   r%   r@   r   r/   r0   r1   r   r;   rK   rN   r   )r3   r@   r-   r>   r   r'   r'   r(   r      r   r   c                 C   r   )u7   renvoie la page des documents de la classe de l'élèveNr>   rC   rD   r   zeleve/autre.html)r-   r@   docsr>   )r&   r%   r@   r   r/   r0   r1   r   r;   rK   rN   r   )r3   r@   r-   r>   r   r'   r'   r(   autre   r   r   c              
   C   s   | j jjr| j jj st| j jj}t|| jpddd}d}| r(|jd }t	j
j|d}|r7|j|d}|ddd	d
dd}t	j
j| j jdddd	d
dd}t| d|g d||||dS )u`   renvoie la page des planches disponibles dans la classe et des planches planifiées de l'élèveNT)planchesFr>   )classesrD   semaine__numeror}   colleur__user__last_namecolleur__user__first_namer   )r%   zeleve/planches.htmlLundiMardiMercrediJeudiVendrediSamedi)r-   rb   r   planchesElever@   r>   )r&   r%   r@   hasPlanchesr!   r   r/   r0   r1   r   r;   rK   rN   r   )r3   r@   r-   r>   r   r   r'   r'   r(   r      s   

"r   c                 C   s  | j jjr| j jj st| j jj}tt||d}|jd u rtjj| j j|j	|j
|jd }|r<t| d tdS tjj| j j|j	|j|j
d}| dkr[t| d tdS t| j j| jpcd |d}| rs|  tdS t| d	|g d
|ddS t| d tdS )N)rp   r   )r%   r}   rE   r   u,   Vous avez déjà une planche sur ce créneaueleve_planches)r%   r}   colleurrE   rP   u7   Vous avec trop de créneaux avec ce colleur sur ce jourr   eleve/plancheAjout.htmlr   Fplancherb   r-   modifu   Ce créneau n'est pas libre)r&   r%   r@   r   r!   r   r   r;   rK   r}   rE   r   r   r   r.   r   r   rj   r
   r/   r0   r   r   )r3   
id_plancher@   r   dejaplancher   r-   r'   r'   r(   plancheAjout   s(   

"r   c                 C   sV   | j jjr| j jj st| j jj}tt||| j jd}d |_d |_|  t	dS )Nrp   r   r%   r   )
r&   r%   r@   r   r!   r   r   commentairer   r   )r3   r   r@   r   r'   r'   r(   plancheSuppr   s   
r   c                 C   s   | j jjr| j jj st| j jj}tt||| j jd}t| j j| jp%d |d}|	 r5|
  tdS t| d|g d|ddS )Nr   r   r   r   r   Tr   )r&   r%   r@   r   r!   r   r   r
   r/   r0   r   r   r   )r3   r   r@   r   r-   r'   r'   r(   plancheModif  s   
r   )?django.shortcutsr   r   r   django.contrib.authr   r   eleve.formsr   r   r	   r
   colleur.formsr   accueil.modelsr   r   r   r   r   r   r   r   r   r   r   r   django.contrib.auth.decoratorsr   django.contribr   django.db.modelsr   r   r   pdf.pdfr   ecolle.settingsr   r   r    django.httpr!   r"   r   r)   r4   r7   r=   rB   rO   r|   r   r   r   r   r   r   r   r   r   r   r   r'   r'   r'   r(   <module>   s^   8















	
















