o
    Dj                     @   s  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 d dl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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 Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd Z3dd Z4dd Z5dd Z6dd  Z7d!d" Z8d#d$ Z9d%d& Z:d'd( Z;d)d* Z<d+d, Z=d-d. Z>d/d0 Z?d6d2d3Z@d6d4d5ZAd
S )7    )Groupe	JourFerieColleSemaineEleveColleurCreneau	RamassageMatiereClasseConfig)	timedelta)CountFMinMaxCaseValueWhen)Http404HttpResponse)messages)renderredirectget_object_or_404)SemaineFormCreneauForm	ColleForm
GroupeFormGroupe2FormColloscopeImportForm)easyPdf)Table
TableStyleNc                 C   sN   t tjj|dddd}t tjj|dddd}t| d||||dS )N   )matieresclasselvpknom   zmixte/groupe.html)classegroupeslv1lv2)dictr
   objectsfiltervalues_listr   )requestr*   r+   r,   r-    r3   %/home/reyt/e-colle-new/mixte/mixte.pymixtegroupe   s   r5   c                 C   s   |j rt|d | jp
d }d}nt|d | jpd }d}| r1|  t| jjr,d|j	S d|j	S t
dd |jd jD }t| |d|||d	S )
Nmixte/groupe2Modif.htmlmixte/groupeModif.htmlgroupe_colleurgroupe_secretc                 S   s4   g | ]}|j |jsd n|jj|jsd n|jjfqS  )idr,   r'   r-   .0elever3   r3   r4   
<listcomp>   s   4 z$mixtegroupeCreer.<locals>.<listcomp>eleve0Fmodifformr*   hide)	semestresr   POSTr   is_validsaver   usercolleurr'   jsondumpsfieldsquerysetr   )r2   r*   rD   htmlrE   r3   r3   r4   mixtegroupeCreer   s   rQ   c                 C   sF   z|   W n ty   t| d Y nw t| jjrdnd|jjS )NuH   Impossible de supprimer le groupe car il est présent dans le colloscoper8   r9   	delete	Exceptionr   errorr   rJ   rK   r*   r'   )r2   grouper3   r3   r4   mixtegroupesuppr    s   rW   c                 C   s   dd t |j D }|j|d< |j}|jr7dd t |j D }i ||}t||| jp0d |d}d}nt	||| jp>d |d}d}|
 rY|  t| jjrSdnd	|jjS td
d |jd jD }t| |d|||dS )Nc                 S      i | ]
\}}d  ||qS )zeleve{}formatr>   ir?   r3   r3   r4   
<dictcomp>(       z$mixtegroupemodif.<locals>.<dictcomp>r(   c                 S   rX   )zeleve2{}rY   r[   r3   r3   r4   r]   ,   r^   initialr6   r7   r8   r9   c                 S   sD   g | ]}|j |jsd n|jj|jsd n|jj|jsd n|jjfqS r:   )r<   r,   r'   r-   optionr=   r3   r3   r4   r@   6      D z$mixtegroupemodif.<locals>.<listcomp>rA   TrB   )	enumerategroupeeleveallr(   r*   rF   groupe2elever   rG   r   rH   rI   r   rJ   rK   r'   rL   rM   rN   rO   r   )r2   rV   r`   r*   initial2rD   rP   rE   r3   r3   r4   mixtegroupemodif'   s   
rh   c                 C   sX   t jj|jd}|jttdtddtdtddd t| j	j
r'd|jS d|jS )Nr'   TF)rF   then)rF   r8   r9   )r   r/   r0   r'   updater   r   r   r   rJ   rK   )r2   r*   rO   r3   r3   r4   mixtegroupeSwap9   s   rl   c              	   C   sr  t dd}d|j|d< tj|dd}|jr|g d tjj	|d
d	D ]T}d
|jg}t|j
ddD ]\}}|d|jj |jj  q8|d
gd|  d
|jg 7 }|j
ddD ]}|d|jj |jj  qc|| q(|S |g d tjj	|d
d	D ]&}|jg}|j
ddD ]}|d|jj |jj  q|| q|S )Ntext/csvcontent_typez%attachment; filename="groupes_{}.csv"Content-Disposition;	delimiter)
z
semestre 1rV   eleve 1eleve 2eleve 3z
semestre 2rV   rt   ru   rv   r*   r(   r;   user__last_nameuser__first_namez{} {}r)   )rV   rt   ru   rv   )r   rZ   r(   csvwriterrF   writerowr   r/   r0   order_byrc   rd   appendrJ   	last_nameupper
first_nametitlerf   )r2   r*   responser{   rV   rowr\   r?   r3   r3   r4   mixtegroupecsv@   s*   

$$$r   c                 C   sL  t | jpd ||dd}| r't| jjrdnd||j|jd j|jd jS tj	
 j}|jo4||jk}|s9d}|rA|dd	nd
}	|rud| jd< tj	|||d
d\}
}}t| d||||||| |	|g dt|
||||dS d
| jd< tj	|||d
\}}
}}t| d|||||||| |	|
g dt|||||dS )Nseminsemaxr_   colloscope2_colleurcolloscope2_secretr   r   i  Tr)   F	transposezmixte/colloscopetranspose.htmllundimardimercredijeudivendredisamedi)r   r   	semestre2rD   isprofr*   dictgroupesdictgroupes2semaines
listejourscreneauxgroupedictColleurszmixte/colloscope.html)r   r   r   rD   r   r*   joursr   r   creneauxr   collesemainer   )r   rG   rH   r   rJ   rK   r'   cleaned_datar   r/   
get_configr   rF   numerodictGroupessessionr   classe2colloscoper   zipr   )r2   r*   r   r   r   r   rD   r   rF   dictGroupes2r   r+   r   r   collesr3   r3   r4   mixtecolloscopeX   s&   .
2
4r   c                    s  t j ||dd\}}}tdd}d j|j|j|d< g d}tj|dd	}	|		g d
dd |D   t
||D ]C\}
} fdd|D }|		|
d |
d rYd|
d nd |
d  |
d  d||
d  |
d d |
d d |
d g|  q<|S )NFTrm   rn   z0attachment; filename="colloscope_{}_S{}-S{}.csv"rp   )lumamejevesa,rr   )   MatièreNomu   Prénomu   CréneauSallec                 S   s   g | ]}d  |jqS )zS{})rZ   r   )r>   semainer3   r3   r4   r@   r   s    zmixteCSV.<locals>.<listcomp>c                    sX   g | ](}|d  dkr|d dkr|d  ddndn|d dur(  |d  ndqS )	temps   rV   0r   rq   r;   id_eleveN)replace
dictElevesr>   rV   rw   r3   r4   r@   t   s   X matiere_nomr&   z(lv{})r;   r(   prenomz{} {}h{:02d}jdsheure<   salle)r   r/   r   r   rZ   r(   r   rz   r{   r|   r   r   r   )r2   r*   r   r   r   groupescoller   r   r   r{   creneaur+   casesr3   rw   r4   mixteCSVl   s   
8*r   c                    s\  t | jpd ||dd}| r&t| jjrdnd|j|jd j|jd jS t|d }t	j
|||d\}}}	}
|r<|nt|d}tj
 j}|joN||jk}t| jpTd |d	}| r|rc|  ntj
j||jd
 |jd d r{t| d n|  t| jjrdnd|j|j|jS t|jj|ddddddddddjtdd}ttj
jd dj||j  dddddddddd}t!j
j|d  fdd|jj|d" dddD }|r fd d|jj|d" dddD ng }g }|D ]}|#|d |d!   |d |d! = qt$d"d#|%   d$ }t$d%t&||j'%  tj
j|d&%   d$ }|sAd'}t(| d(i d|d|d)|d*|d+|d,|d-|d. d/t)|||d0|sjd1nt)|||d2|d3|d4|d5|d6|d7g d8d9t)|
|	|*||t+,|-d:t+,|r|-d:d;nd1t+,|. d<S )=Nr   r_   colloscopemodif_colleurcolloscopemodif_secretr   r   Trw   )instancejourr   )r*   r   r   uP   Il y a déjà un créneau ce jour à cette heure, utiliser la fonction dupliquer)colleur__classescolleur__user__is_activer(   r&   r   r'   couleurrK   )nb)matieres)classesmatieres__inuser__is_activery   rx   matieres__nommatieres__lvmatieres__tempsc                       g | ]  fd dD qS )c                    s   g | ]	}|  r|qS r3   	haslanguer   matierer3   r4   r@          3mixtecolloscopemodif.<locals>.<listcomp>.<listcomp>r3   r>   r+   r   r4   r@          z(mixtecolloscopemodif.<locals>.<listcomp>)r   c                    r   )c                    s   g | ]
}|  d r|qS )r)   r   r   r   r3   r4   r@      r^   r   r3   r   r   r   r4   r@      r      i  *   px   )r   zmixte/colloscopeModif.htmlform1rD   form2largeurhauteurr+   r   	matieres2r;   r   r*   r   r   r   r   r   r   Fr)   )r   r   r   r   )/r   rG   rH   r   rJ   rK   r'   r   r   r   r/   r   r   r   r   r   rF   r   r   rI   r0   existsr   rU   listr   r}   r1   annotater   r   excludere   r   distinctr~   strcountlenclasseelever   r   r   rL   rM   r   dictElevespk)r2   r*   r   r   creneaumodifr   r   r   r   r   r   r   r   rF   rD   r   colleursmatieresgroupesmatieresgroupes2listeColleursxr   r   r3   r   r4   mixtecolloscopemodifz   s\   ,

" 8<*20^
>r   c                 C   sT   t || jpd | jp
d }| r!|  t| jjrdndd|jS t	| d||dS )Ncolloscope_colleurcolloscope_secretr$   zmixte/colloscopeimport.html)rD   r*   )
r    rG   FILESrH   rI   r   rJ   rK   r'   r   )r2   r*   rD   r3   r3   r4   mixteColloscopeImport   s
   r   c                 C   sJ   z|   W n ty   t| d Y nw t| jjrdnd|jj||S )Nu>   Vous ne pouvez pas effacer un créneau qui contient des collesr   r   rR   )r2   r   id_seminid_semaxr3   r3   r4   mixtecreneausuppr   s   r   c                 C   s0   d |_ d |_|  t| jrdnd|jj ||S )Nr   r   )r'   r   rI   r   rK   r*   )rJ   r   r   r   r3   r3   r4   mixtecreneaudupli   s   r   c                    s  g d t jj| dddddddjtd	d
ddjddddddd}d fdd|D }t j| j	}|d fdd|D 7 }t jj| dddddjtd	d
ddjdddddd}d fdd|D }t j
| j	}d fdd|D }t jj| ddddjtd	d
ddjddddd}ddd |D }|dtt|  | dtt|  | dtt|  | }|sd}t|S )N)r   r   r   r   r   r   dimancher   )creneau__classematiere__temps__gtcolleur__user__first_namecolleur__user__last_namesemaine__numerocreneau__jourcreneau__heurer'   T)r   )nbcollesr$   )nbcolles__gt
c                    R   g | ]%}d  |d  |d  |d |d  |d  |d d |d d qS )u=   le colleur {} {} a {} colles en semaine {} le {} à {}h{:02d}r  r  r  r  r  r  r   rZ   r   r   r>   valeurLISTE_JOURSr3   r4   r@         R z#mixteajaxcompat.<locals>.<listcomp>c                    r  )uE   le colleur {} {} colle {} étudiants en semaine {} le {} à {}h{:02d}r   r(   nbelevesr   r   r   r   r  r  r  r3   r4   r@      r  )groupe__classegroupe__nomc                    sD   g | ]}d  |d |d |d  |d  |d d |d d qS )u9   le groupe {} a {} colles en semaine {} le {} à {}h{:02d}r  r  r  r  r  r   rY   r  r  r3   r4   r@      rb   c                    r  )u<   l'élève {} {} a {} colles en semaine {} le {} à {}h{:02d}r   r(   r  r   r   r   r   r  r  r  r3   r4   r@      r  matiere__nomc              	   S   s0   g | ]}d  |d |d |d  |d qS )z,le groupe {} a {} colles de {} en semaine {}r  r  r  r  )rZ   r   r  r3   r3   r4   r@      s   0 z

u*   aucune incompatibilité dans le colloscope)r   r/   r0   valuesr   r   r}   joincompatColleurr'   compatEleveintboolr   )r*   r   colleurs_groupeeleves	elevesolor+   reponser3   r  r4   mixteajaxcompat   s   D>:@r   c                    s~  t jj||dj|d st jj||dj d r,t jj||d  t|j}nt jj||ddj	ddd}|jt jj||dj	dddv rbt
d|j |j dd	d
 |D S tj j}|j}|jr|j|kr|j|jhd h dd
 D t jj||d	dddddd }	tfdd
|	D }
tjj|d}t fdd
|D }n,t jj||d	ddddd }	tdd
 |	D }
tjj|d}t fdd
|D }|
| dkrt jj||d  t |||| d  t
d|j |j |jS ddd
 t jj||dj	dddD t|jg }t |||| d  t
d|j |j |S )Nr   r   rK   r   r  Tflat{}:{}r   c                 S      g | ]}t |qS r3   r   r>   r   r3   r3   r4   r@          z'mixteajaxcolloscope.<locals>.<listcomp>c                 S      g | ]}|j qS r3   ri   r(  r3   r3   r4   r@          groupe__groupe2elevegroupe__groupe2eleve__optiongroupe__groupe2eleve__lv1groupe__groupe2eleve__lv2matiere__pkmatiere__lvc                    |   g | ]:}|d   v r|d |d  ks:|d   vr|d dks:|d dkr,|d |d  ks:|d dkr|d |d  kr|qS    r$   r   r   r)      r3   r(  optionsr3   r4   r@         | groupe2c                    `   g | ],} j v r|j ks, j vr jd ks, jdkr"|j ks, jdkr|j kr|qS r   r$   r)   r'   ra   r&   r,   r-   r(  r   r7  r3   r4   r@         ` groupe__groupeelevegroupe__groupeeleve__lv1groupe__groupeeleve__lv2c                 S   T   g | ]&}|d  dks&|d  dkr|d |d ks&|d  dkr|d |d kr|qS r4  r   r$   r5  r)   r3   r(  r3   r3   r4   r@         T rV   c                    B   g | ]} j d ks j dkr|j ks j dkr|j kr|qS r<  r&   r,   r-   r(  r   r3   r4   r@         B r5  r   r   rV   rK   r   c                 S   r&  r3   r'  r(  r3   r3   r4   r@      r)  )r   r/   r0   r   r   rS   r   r(   r}   r1   r   rZ   r*   r   r'   r  r   r   r   rF   r   option1option2r   r   r   rI   )r   rK   rV   r   r   nomsr+   r   r*   r  r  eleves2	nbeleves2r3   r>  r4   mixteajaxcolloscope   s4   8  ,$"6rP  c           	      C   s   z	t jj|d}W n ty   d }Y nw tjj||d  dd tj 	dD }t||||| d}|d u rU|j
|_
|  t|j
 |j d |j
jd d  S |  t|j
 |j d | S )	Nri   r!  c                 S      g | ]}|d  qS dater3   r>   dicr3   r3   r4   r@      r)  z,mixteajaxcolloscopeeleve.<locals>.<listcomp>rS  )r   r   rK   r?   r   :r4  )r   r/   getrT   r   r0   rS   r   re   r  r*   rI   r   r   r'   r(   )	r   rK   r   r   r   loginr?   feriescoller3   r3   r4   mixteajaxcolloscopeeleve   s   (r[  c                 C   s   t jj| |d  tdS )Nr!  efface)r   r/   r0   rS   r   r!  r3   r3   r4   mixteajaxcolloscopeeffacer   s   r]  c                    sN   t jjd|  ddddddd} fdd|D }tt| jg| S )	NT)r   r   r   r<   ry   rx   user__usernamec                    sJ   g | ]!}|d    d |d   d   |d   d |d dqS )ry    rx   z (r<   ))r(   r<   )r   r   r   )r>   valuerw   r3   r4   r@      s   J z'mixteajaxmajcolleur.<locals>.<listcomp>)	r   r/   r0   r  r}   r   rL   rM   r   )r   r*   r   r3   rw   r4   mixteajaxmajcolleur   s   &rb  c	              
   C   s   t |}t |}|j| }	tjj||j|j| d fdjtd| dj|	d }
tj	|j
||||	}tj j}|jjrS|j|k rS|j| |krS| dkrSd}nd}|
r[|d sftd	|
|d |S t| ||||||||	S )
Nr$   )r   semaine__numero__ranger  )semaine_modr   u   Attention, les groupes des 2 semestres sont différents et vous planifiez à cheval sur les 2 semestres.
La planification se fera uniquement au premier semestrer;   r   z{}_{}_{})r  r   r   r/   r0   r   r   r   r   
recupFerier   r   r   r   r*   rF   r   rZ   mixteajaxcolloscopemulticonfirm)r   rK   	id_grouper   r   r   duree	frequencepermutationmoduloecrasenbferiesr   chevalr3   r3   r4   mixteajaxcolloscopemulti  s   
<(ro  c	              	      s<  d|j i}	g |	d< t|}t|}t|}t|}|j}
 dkr_d}t|
|
| |D ]-}ztjj|d}tjj||d	  |	d 
d|ji W n	 tyR   Y nw |d7 }q*tt|	S |dkr|rtt|d	}tjj||d
j|d stjj||d
j d rtjj||d
	  t|j}ntjj||d
djddd}|jtjj||d
jdddv rtd|j |j  ddd |D S tj j}|j}|jr#|j|kr#|j|j hd h dd D tjj||d
dddddd! }t"fdd|D }t#jj|d}t" fdd|D }n,tjj||d
ddd dd! }t"d!d |D }t#jj|d"}t" fd#d|D }|| d$krztjj||d
	  t|||| d%$  td|j |j  |jS dd&d tjj||d
jdddD t|jg }t|||| d%$  |j  j%|j |j  d'}	|j|d(g|	d< tt|	S t|}|sd ntt|d	}|sd ntt#|d	}tj j}|jjr|j|k r|j| |kr||j }|r|jjrb|j|krb |jj|jj fv r t&tjj|j d)! d*}n j'dkr4t&tjj|jd+d*}no j'dkrKt&tjj|j d,! d*}nX j'd-krat&tjj|j d.! d*}nA j'dkrvt&tjj|jd+d*}n- j'dkrt&tjj|j d/! d*}n j'd-krt&tjj|j d0! d*}|j(d1d2 d3 |)|}n<|r j'dkrt&t#jj|jd+}n# j'dkrt&t#jj|j d4}n j'd-krt&t#jj|j d5}|)|}d}|j  j%|j |j  d'}	g |	d< d6d t*j+ ,d7D }|r]t|
|
| |D ]B}z6tjj|d}tjj||d	  ||||  t"|  }t|| ||d8$  |	d 
|j|jd( W n   Y |d7 }qn|rt|
|
| |D ]Y}zGtjj|d}|j-t.|j/d9 |vrtjj||d	  ||||  t"|  }t|| ||d:$  |	d 
|j|j0 |j  d( W n
 ty   Y nw |d7 }qhnTt|
|
| |D ]K}z>tjj|d}|j-t.|j/d9 |vr	tjj||d	  t|| d ||jd;$  |	d 
|j|jjd d< d( W q ty   Y qw tt|	S )=Nr   	semgrouper   r   )r   )r   r   r   r$   ri   r!  r"  r   r  Tr#  r%  r   c                 S   r&  r3   r'  r(  r3   r3   r4   r@   -  r)  z3mixteajaxcolloscopemulticonfirm.<locals>.<listcomp>c                 S   r*  r3   ri   r(  r3   r3   r4   r@   3  r+  r,  r-  r.  r/  r0  r1  c                    r2  r3  r3   r(  r6  r3   r4   r@   5  r8  r9  c                    r;  r<  r=  r(  r>  r3   r4   r@   7  r?  r@  rA  rB  c                 S   rC  rD  r3   r(  r3   r3   r4   r@   :  rE  rF  c                    rG  r<  rH  r(  r   r3   r4   r@   <  rI  r5  rJ  c                 S   r&  r3   r'  r(  r3   r3   r4   r@   A  r)  )r   r   rK   )r   rV   )r*   groupe2eleve__optionr(   rw   )r*   groupe2eleve__lv1r)   )r*   groupe2eleve__lv2)r*   groupeeleve__lv1)r*   groupeeleve__lv2c                 S   s
   t | jS )N)r  r(   )r   r3   r3   r4   <lambda>]  s   
 z1mixteajaxcolloscopemulticonfirm.<locals>.<lambda>)key)r*   r,   )r*   r-   c                 S   rQ  rR  r3   rT  r3   r3   r4   r@   j  r)  rS  )r   rK   r   rV   r   days)r   rK   r   r?   r   )r   rK   r   r?   r   r*   r4  )1r'   r  r   ranger   r/   rW  r   r0   rS   r~   rT   r   rL   rM   r   r   r   r   r   r(   r}   r1   rZ   r*   r   r  r   r   r   rF   rK  rL  r   r   r   rI   r   r   r&   sortindexr   re   r  r   r   r   r   )r   rK   rg  r   r   r   rh  ri  rj  r   
numsemainer\   r   semainecollerV   rM  r+   r   r*   r  r  rN  rO  r?   groupeselevesrangrY  r3   r>  r4   rf    s   

8  ,$"6&
"" " 

""rf  Fc           -         s
  g d}t dd}tjj| jd r*|s*tjj| jdtdd tdd }n
t	jt
d	d
 }| j}d|j |j d }	tjj| ddt ||dd}
d|j|j|j|j|j|j}d||d< td|d|dddd}|jd d|j  d   }d}t|}|
D ]\}}}d}|j|d |}|r|dtdd |D  7 }tg d}g d rdgng  dg g fd dttd!|D  }d } } } }}|D ]\}}}d}||| d< |dkr|d"d|fdt|| d d!f ||7 }|D ]\}} }!|sd#n| || d< |!dkr1|d"d|fdt||! d d!f ||!7 }| D ]\}"}#}$|"|| d< |$dkrZ|d"d|fdt||$ d d!f ||$7 } r|#D ]b\}}%}&||| d$< |&dkr|d"d$|fd$t||& d d!f ||&7 }|%D ]7\}'}(||(7 }|'|	k r|d%d&|fd'|fd( ||'d d  || d&< d)|(d* d+d,|| d'< |d7 }|d-kr|d!krt|d| d$| |d$| ||gtd| d-|g d.})|)| |)|dd\}*}+|) ||jd |* d |j!|+ |d   |"  |j|d tg d}|d!8 }g d/gd0d ttd!|D  }|d!8 }|d!8 }|d!8 }|d!8 }d}|dkr||d d< |dkrb|d"d1dt|d d!f |dkr|sld#n| |d d< |dkr|d"d2dt|d d!f |dkr|"|d d< |dkr|d"d3dt|d d!f |dkr||d d$< |dkr|d"d4d$t|d d!f qqcq7|#D ]\}}(||(7 }||| d$< d)|(d* d+d,|| d&< |d7 }|d-kr|d!krt|d| d$| |d$| |gtd| d-|g d.})|)| |)|dd\}*}+|) ||jd |* d |j!|+ |d   |"  |j|d tg d}|d!8 }g d5gd6d ttd!|D  }|d!8 }|d!8 }|d!8 }d}|dkr| |d d< |dkr|d"d1dt|d d!f |dkr|sd#n| |d d< |dkr|d"d2dt|d d!f |dkr|"|d d< |dkr|d"d3dt|d d!f qːq7q||7 }|r|d"d|fd$  |f |d7d|fd8|fd9 d:| gd;gd$    d)|d* d+d,g ||< |d7 }|d7 }|d7 }|d7 }|d7 }|d-kr|d!krt|d| d$| |d$| |g r>|gng  td| d-|g d.})|)| |)|dd\}*}+|) ||jd |* d |j!|+ |d   |"  |j|d tg d}|d!8 }g d rdgng  dg g fd<dttd!|D  }|d!8 }|d!8 }|d!8 } r|d!8 }d}qd}q|r|d"d|fd$  |f |d7d|fd8|fd= d:|gd;gd$    d)|d* d+d,g ||< |d7 }|d7 }|d7 }|d7 }t|d| d$| |d$| |g r|gng  td| d-|g d.})|)| |)|dd\}*}+|) ||jd |* d |j!|+ |d   |"  q|#  |j$% },|j$&  |'|, |S )>u   Renvoie le fichier PDF du ramassage par classe correspondant au ramassage dont l'id est id_ramassage
	si total vaut 1, les totaux par classe et matière sont calculésr;   Janvieru   FévrierMarsAvrilMaiJuinJuilletu   Août	SeptembreOctobreNovembreu	   Décembreapplication/pdfrn   moisFin__ltmoisFinmoisFin__maxr$   rx  r   
lundi__min   FTr   rz   	parClasseparMoisfullrK   
parColleurz*ramassagePdfParClasse{}-{}-{}_{}-{}-{}.pdfattachment; filename={}rp    Ramassage des colles du {} au {}%d/%m/%Y   titremarge_xmarge_yr)   
   	soustitrec                 S   s   g | ]\}}}|qS r3   r3   )r>   r   yzr3   r3   r4   r@         z.mixteRamassagePdfParClasse.<locals>.<listcomp>)GRIDr   r   r   r   r$   )r   r   r   )
BACKGROUNDr  )r   r   )333333?r  r  )VALIGNr  r  MIDDLE)ALIGNr  r  CENTRE)FACEr  r  Helvetica-Bold)SIZEr  r     )r      ÉtablissementGrader   moisheuresc                       g | ]	}d gd   qS r;   r   r3   r>   r\   parmoisr3   r4   r@     r      SPANInconnur5  	TEXTCOLORr4  r   r$   r   r   {:.2f}hr   .r      	colWidths
rowHeights)r   r  r  r   r  r  c                 S      g | ]}d gd qS )r;      r3   r  r3   r3   r4   r@     r  r   r$   r$   r$   )r)   r$   )r5  r$   )r   r  r  r   r  c                 S   r  r  r3   r  r3   r3   r4   r@     r  r  r   )皙?r  r  ztotal {}r;   c                    r  r  r3   r  r  r3   r4   r@   2  r   )ffffff?r  r  )(r   r	   r/   r0   r  r   	aggregater   r   r   r   yearmonthdecompteRamassager  rZ   dayr!   strftimer  r  debutDePager   r#   rz  minaddr   r   r"   setStylewrapOndrawOnr  	finDePagerI   buffergetvalueclosewrite)-	ramassagetotalr  r  rK   
LISTE_MOISr   debutfin	moisdebut	decomptes
nomfichierpdf
largeurcel
hauteurcelr*   listeClasse
nbMatierestotalclasse
nbKolleurs
LIST_STYLEdataligneMat	ligneEtab
ligneGradeligneColleur	ligneMoisr   
listeEtabsnbEtabstotalmatiereetablissementlisteGradesnbGradesgrader   
nbColleurs	listeMoisnbMoismoir  twhfichierr3   r  r4   mixteRamassagePdfParClasse  sL  
* ":
$
$
$
$
6
*"







34
*"





_:D
*<6D
*



r  c           &         s  g d}t dd}tjj| jd r*|s*tjj| jdtdd tdd }n
t	jt
d	d
 }| j}d|j |j d }tjj| ddt ||dd}	d|j|j|j|j|j|j}
d|
|d< td|d|dddd}|jd d|j  d }d}|	D ]\}}}}}d}|}|j|d |ddd | jd8  _|j|_|dd ||j|jd| |jd |j |_||j|jd| | jd7  _tg d}ddg rd gng  d!g g fd"d#ttd$|D  }d } }}|D ]
\}}}d}||| d< |dkr*|d%d|fdt|| d d$f ||7 } rQ|D ]\}}}||| d< |dkrV|d%d|fdt|| d d$f ||7 }|D ]\} }!||!7 }| |k ru|d&d|fd'|fd( || d d  || d< d)|!d* d+d,|| d'< |d7 }|d-krL|d$krLt |d.| d.| d.| d.| gtd| d-|g d/}"|"!| |""|dd\}#}$|"#||jd |# d |j|$ |d   |$  |j|d tg d}|d$8 }g d0d!g g fd1d#ttd$|D  }|d$8 }|d$8 }d}|dkrL||d d< |dkr.|d%d2dt|d d$f |dkrL||d d< |dkrL|d%d3dt|d d$f q\q3n|D ]\}}!||!7 }||| d< d)|!d* d+d,|| d< |d7 }|d-kr	|d$kr	t |d4| d4| d| gtd| d-|g d/}"|"!| |""|dd\}#}$|"#||jd |# d |j|$ |d   |$  |j|d tg d}|d$8 }ddgd!g g fd5d#ttd$|D  }|d$8 }d}|dkr	|% |d d< |dkr	|d%d2dt|d d$f qS||7 }qt | r$d.| d.| d.| d.| gn
d4| d4| d| gtd| d-|g d/}"|"!| |""|dd\}#}$|"#||jd |# d |j|$ |d   |$  q|&  |j'( }%|j')  |*|% |S )6zdRenvoie le fichier PDF du ramassage par classe correspondant au ramassage dont l'id est id_ramassager  r  rn   r  r  r  r$   rx  r   r  r  FTr  z+ramassagePdfParColleur{}-{}-{}_{}-{}-{}.pdfr  rp   r  r  r  r  r   r)   r  r  r  u   Établissement d'exercice: {}z	Grade: {}r  r   r   r  r  c                    r  r;   r5  r3   r  r  r3   r4   r@   q  r   z/mixteRamassagePdfParColleur.<locals>.<listcomp>r  r  r  r5  r  r  r   r  r   r  g      @r  )r   r   r  c                    r  r  r3   r  r  r3   r4   r@     r   r  r  r4  c                    r  r  r3   r  r  r3   r4   r@     r   )+r   r	   r/   r0   r  r   r  r   r   r   r   r  r  r  r  rZ   r  r!   r  r  r  setFillColorRGBr  r   setFont
drawStringdrawRightStringr#   rz  r  r  r   r"   r  r  r  r  r   rI   r  r  r  r  )&r  r  r  rK   r  r   r  r  r  r  r  r  r  r  r  r  listeMatieresr  totalColleurr  r  r  r  ligneClasser  r   r  	nbClassesr  r*   r  r  r  r  r  r   r  r  r3   r  r4   mixteRamassagePdfParColleurO  s   
* ":
$
$
6
*,



(0
*,

R
*



r  )F)Baccueil.modelsr   r   r   r   r   r   r   r	   r
   r   r   datetimer   django.db.modelsr   r   r   r   r   r   r   django.httpr   r   django.contribr   django.shortcutsr   r   r   colleur.formsr   r   r   r   r   r    pdf.pdfr!   reportlab.platypusr"   r#   rL   rz   r5   rQ   rW   rh   rl   r   r   r   r   r   r   r   r   rP  r[  r]  rb  ro  rf  r  r  r3   r3   r3   r4   <module>   sB   4$ ( 
~ A