o
    Dj"                     @   sp  d dl mZmZmZ 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mZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlm Z m!Z! d d	l"Z"d d	l#Z$d d
l%m&Z& d dl'm(Z( dd Z)dd Z*edddd Z+edddd Zedddd Z,edddd Z-edddd Z.edddd Z/edddd Z#eddd d! Z0d	S )"    )HttpResponseForbiddenHttp404HttpResponse)renderredirectget_object_or_404)logout)login_required)ClasseMatiereColleurMessageDestinataireEleveConfigProf)UserFormUserProfprincipalFormUserProfFormSelectMessageForm
EcrireFormReponseForm)messages)IP_FILTRE_ADMINIP_FILTRE_ADRESSESN)Q)BytesIOc           	      C   s   | j }|jr&|jdkrtdS |jdkrtdS |jrtdS |jr&tdS tj }t	t
j }tt|d dd	D ]}|| j ||d  j krS|| q<d
}trrd}| jd }tD ]}t||}|rqd
} nqat| d|||dS )ug   Renvoie la vue d'accueil ou, si l'utilisateur est déjà identifié, redirige vers la section adéquateadminaction_admin   Secrétariataction_secretaction_colleuraction_eleve   r   TFREMOTE_ADDRzaccueil/home.html)classesmatieres
show_admin)useris_authenticatedusernamer   colleurelever
   objectsalllistr   rangelennomlowerpopr   METAr   recompilematchr   )	requestr)   r&   r'   ir(   user_ipipauthenticated_by_ip r?   '/home/reyt/e-colle-new/accueil/views.pyhome   s6   


 

rA   c                 C   s   t |  tdS )uD   Déconnecte l'utilisateur courant et redirige vers la page d'accueilaccueil)r   r   r:   r?   r?   r@   deconnexion+   s   rD   rB   )	login_urlc                 C   sH  | j }|js
tdS t|jotjj|jd}|ratjj|jd}d|ji}|D ]}t	jj|dd|d
|j< t	jj|dd|d
|j< q(t|j|| jpOd	||d
}| r`|  tdS n;tjj|jd rt|j| jprd	|d|jid
}| r|  tdS nt| jpd	|d}| r|  tdS t| dd|iS )uN   Renvoie la vue du profil où on peut modifier son email et/ou son mot de passeu6   Vous devez être connecté pour accéder à cette page)profprincipalemailT)colleurprof__classecolleurprof__modifgroupez	{}_groupe)rH   colleurprof__modifcolloscopez{}_colloscopeN)instanceinitialrB   )r,   rK   zaccueil/profil.htmlform)r)   r*   r   boolr,   r
   r.   filterrG   r   formatpkr   POSTis_validsaver   r   existsr   r   r   )r:   r)   rF   r&   rL   classerN   r?   r?   r@   profil0   s4   
rX   c                 C   sb   t | j| jpd}| r|  tdS d}| jjr!tj	 j
}t| d|||jd j dS )z Renvoie vers la vue des messagesNr   Tzaccueil/messages.htmlmessage)rN   peut_composernonvide)r   r)   rS   rT   rU   r   r-   r   r.   
get_configmessage_elevesr   fieldsquerysetrV   )r:   rN   rZ   r?   r?   r@   r   M   s    r   c                 C   s   t jj|dt| jddt| jdB }| std| }d}d}|j| jkr8d}| jj	r7t
j j}n:tjj|| jd}|js[| jt| jd 7  _|  d|_|  | jj	rj|jrjt
j jsjd}|jjd	v rrd}t| d
|||dS )z7Renvoie vers la vue du message dont l'id est id_messagerR   Tauteur	hasAuteurmessagerecu__user   Message non trouvéFrY   r)   ; r   r   zaccueil/message.html)rY   repondreenvoye)r   r.   rP   r   r)   rV   r   firstrb   r-   r   r\   r]   r   getluluParstrrU   reponsesr+   r   )r:   
id_messagerY   rj   rk   destinatairer?   r?   r@   rY   Y   s,   *rY   c                 C   sz   | j jrtj jstdS t| j d}t| j | j	pd| j
pd|d}| r5|  t| d tdS t| dd|iS )	u-   Renvoie vers la vue d'écriture d'un message u.   Vous n'avez pas le droit d'écrire une message)rb   NrM      Message envoyér   zaccueil/ecrire.htmlrN   )r)   r-   r   r.   r\   r]   r   r   r   rS   FILESrT   rU   	messageeserrorr   r   )r:   rY   rN   r?   r?   r@   ecrires   s   rx   c              	   C   s  t t|d}|j| jkrtt t|| jd}| jjr#|jr#tj	
 jr)|jjdv r-tdS t| jt|jd|j d|j dd d d	}t|d
| j| jpPd| jpTdd|ji|d}| ry|  t| d | jd7  _|  tdS t| d||dS )C   Renvoie vers la vue de réponse au message dont l'id est message_idr`   rg   ri   %   Vous n'avez pas le droit de répondreRe: >

>rb   listedestinatairestitrecorpsFNrs   rL   rK   rt   r#   r   accueil/repondre.htmlrN   rY   )r   r   rb   r)   r   r   r-   rq   r   r.   r\   r]   r+   r   rp   r   r   stripreplacer   rS   ru   r   rT   rU   rv   rw   r   r   )r:   
message_idrY   rs   reponserN   r?   r?   r@   rj      s   &4*rj   c              	   C   s  t jj|dt| jddt| jdB }| std| }t|j	
 }|j| jkr=| jjr<tj js<tdS n#tt|| jd}| jjrV|jrVtj jsVtdS |t|jdd	 d
dd |D }t | j|d|j d|j dd d d}t||| j| jpd| jpdd|i|d}| r|  t | d |j| jkr| jd7  _|  t!dS t"| d||dS )ry   r`   Tra   rd   rf   rz   rg   N)r)   rY   rh   c                 S   s   g | ]}t |jqS r?   )rp   r)   ).0destir?   r?   r@   
<listcomp>   s    z!repondreatous.<locals>.<listcomp>r{   r|   r}   r~   r   rs   r   rt   r#   r   r   r   )#r   r.   rP   r   r)   rV   r   rl   r0   messagerecur/   rb   r-   r   r\   r]   r   r   r   rq   appendjoinr   r   r   r   r   rS   ru   rT   rU   rv   rw   r   r   )r:   r   rY   destinatairesr   r   r   rN   r?   r?   r@   repondreatous   s0   *.(r   c                 C   s
   t | dS )Nzaccueil/qrcode.html)r   rC   r?   r?   r@   qrcode   s   
r   c                 C   sL   |  d}t|}t }|j|dd tdd}||  |  |S )N/PNG)rQ   z	image/png)content_type)	build_absolute_uriqrmaker   rU   r   writegetvalueclose)r:   urlimgbufferresponser?   r?   r@   	qrcodepng   s   


r   )1django.httpr   r   r   django.shortcutsr   r   r   django.contrib.authr   django.contrib.auth.decoratorsr	   accueil.modelsr
   r   r   r   r   r   r   r   accueil.formsr   r   r   r   r   r   django.contribr   rv   ecolle.settingsr   r   r7   r   r   django.db.modelsr   ior   rA   rD   rX   rY   rx   rj   r   r   r?   r?   r?   r@   <module>   s<   ( 






