
    }Vi_-                         d dl Z d dlmZ d dlmZ d dlZ ej
                  d       d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ  e
e	      Zd
Z e j,                  ed       d Zd Zd Zd Zd Zd Zy)    N)defaultdictdatetimeAgg)sessionmaker)engine)Visita)func)bindz%/var/www/ceduoda/static/estadistiquesTexist_okc                 L   | j                  t        j                  t        j                  t        j
                              j                  t        j                        j                  t        j                  t        j
                        j                               j                         }|D cg c]  }|d   	 }}|D cg c]  }|d   	 }}t        j                  d       t        j                  ||       t        j                  dd       t        j                  d       t        j                  d	       t        j                           t#        j$                  t&        d
       t        j(                  t&         d       t        j*                          y c c}w c c}w )Nr      
      figsize-   rightrotationhau   Nombre de visites per pàginaVisitesTr   z/visites_per_pagina.png)queryr	   paginar
   countidgroup_byorder_bydescallpltfigurebarxtickstitleylabeltight_layoutosmakedirs
OUTPUT_DIRsavefigclose)sessio	resultatsrpaginestotalss        !/var/www/ceduoda/estadistiques.pygraf_visites_per_paginar5      s   MMJJvyy!	
 
&--	 	$**VYY',,.	/	  ''qt'G'%&qad&F&JJwGGGVJJw'II-.JJyKK
T*KK:,567IIK (&s   /FF!c           	      |   | st        d       y | j                         }| j                         }t        j                  d       t        j
                  ||ddg dddi	       t        j                  d
       t        j                          t        j                  t         d       t        j                          y )NzNo hi ha dades de dispositius)r   r   r   z%1.1f%%Z   )z#4CAF50z#2196F3z#FFC107z#9C27B0	edgecolork)labelsautopct
startanglecolors
wedgepropszVisites per tipus de dispositiuz/dispositius.png)printkeysvaluesr#   r$   pier'   r)   r-   r,   r.   )dispositiusr:   sizess      r4   graf_dispositiusrE   ;   s    -.F EJJvGG;% II/0KK:,./0IIK    c                    t        t              }| D ]6  }|j                  s|j                  j                         }||xx   dz  cc<   8 t	        |j                               }|D cg c]  }||   	 }}t        j                  d       t        j                  ||ddd       t        j                  d       t        j                  d	       t        j                  d
       t        j                         j                  j                  t        j                   d             t        j                         j                  j#                  t        j$                                t        j&                  dd       t        j(                          t        j*                  t,         d       t        j.                          y c c}w )Nr   )   r   r   o-bluemarker	linestylecoloru   Evolució diària de visitesDatazNombre de visites%d/%m/%yr   r   r   z/evolucio_diaria.png)r   int	data_horadatesortedr@   r#   r$   plotr'   xlabelr(   gcaxaxisset_major_formattermdatesDateFormatterset_major_locatorAutoDateLocatorr&   r)   r-   r,   r.   )visitesvisites_per_diavdiadiesdvalorss          r4   graf_visites_per_diarf   U   s9   !#&O &;;++""$CC A% &
 /&&()D*./Qoa /F/JJwHHT6#FCII,-JJvJJ"# GGIOO''(<(<Z(HIGGIOO%%f&<&<&>?JJw'KK:,234IIK 0s   (G c                    | j                  t        j                  t        j                  t        j
                              j                  t        j
                  dkD        j                  t        j                  j                  d             j                  t        j                        j                  t        j                  t        j
                        j                               j                         }|D cg c]  }|d   	 }}|D cg c]  }t        |d   d       }}t        j                  d       t        j                  ||       t        j                   dd       t        j"                  d	       t        j$                  d
       t        j&                          t        j(                  t*         d       t        j,                          y c c}w c c}w )Nr   zcanvi_idioma_%r   r   r   r   r   r   u   Temps mitjà per pàgina (s)Segonsz/temps_mig_per_pagina.png)r   r	   r   r
   avgduradafilterliker   r    r!   r"   roundr#   r$   r%   r&   r'   r(   r)   r-   r,   r.   )r/   r0   r1   r2   tempss        r4   graf_temps_mig_per_paginaro   p   s9   MMHHV]]#	
 
!	"	##$455	6	&--	 	$((6==)..0	1	  ''qt'G'%./U1Q4^/E/JJwGGGUJJw'II,-JJxKK:,789IIK (/s   <GGc                    t        t              }| D ]D  }|j                  s|j                  ||j                     j	                  |j                         F |st        d       y t        |j                               }|j                         D cg c]  }t        |      t        |      z   }}t        j                  d       t        j                  ||d       t        j                  dd       t        j                  d	       t        j                  d
       t        j                   dd       t        j"                          t        j$                  t&         d       t        j(                          y c c}w )Nu$   No hi ha dades de scroll per pàginar   r   skyblue)rO   r   r   r   u(   Percentatge mitjà de scroll per pàginaz
Scroll (%)r   d   z/scroll_mig_per_pagina.png)r   listr   
scroll_maxappendr?   r@   rA   sumlenr#   r$   r%   r&   r'   r(   ylimr)   r-   r,   r.   )r_   scroll_per_paginara   r2   lstre   s         r4   graf_scroll_mig_per_paginar{      s   #D) =880ahh'..q||<= 45$))+,G+<+C+C+EFCc#hs3xFFFJJwGGGV9-JJw'II89JJ|HHQKK:,89:IIK Gs   E<c                     dd l } ddlm} t               }|j                  t              j                         }|j                          |st        d       y t        d |D        d       }|t        d       y |j                         }g d}|D cg c]"  }| j                  j                  t        |      $ }}g }	|D ]_  }
| j                  j                  |
      s|	j                  |
       0	 | j                  j                  |
      |k  r|	j                  |
       a |	st        d       y t        d	t#        |	       d
|	D 
cg c]  }
| j                  j%                  |
       c}
        t'        t(              }t'        t*              }g }t'        t(              }t'        t(              }t'        t(              }t'        t(              }t'        t(              }t'        t(              }|D ]  }|j,                  s|j,                  }|j.                  |j                  |j.                         |j0                  r||j0                  xx   dz  cc<   |j2                  r||j2                  xx   dz  cc<   ||j5                         xx   dz  cc<   ||j6                  xx   dz  cc<   ||j8                  xx   dz  cc<   |j;                         \  }}}|| d|dxx   dz  cc<    t=        |       t?        |       g d}tA        d      D cg c]  }||   	 }}tC        jD                          tC        jF                  ||       tC        jH                  d       tC        jJ                  d       tC        jL                  t         d       tC        j                          t+        tA        d            }|D cg c]  }||   	 }}tC        jD                          tC        jF                  ||       tC        jH                  d       tC        jN                  d       tC        jJ                  d       tC        jL                  t         d       tC        j                          g d}tA        d      D cg c]  }|jQ                  |dz   d       }}tC        jD                  d       tC        jR                  ||       tC        jH                  d       tC        jN                  d       tC        jJ                  d       tC        jT                          tC        jL                  t         d       tC        j                          tW        |jY                               }|D  cg c]  } ||    	 }} g }!|D ]\  } t[        t(        | j]                  d            \  }} |j^                  | d| dd       ja                         }"|!j                  |"       ^ tC        jD                  d!       tC        jb                  |!|d"dd#$       tC        jH                  d%       tC        jJ                  d       dd l2m3}# tC        jh                         jj                  jm                   |#jn                  d&             tC        jh                         jj                  jq                   |#jr                                tC        jt                  d'd()       tC        jT                          tC        jL                  t         d*       tC        j                          tC        jD                          tC        jv                  |d+d,-       tC        jH                  d.       tC        jN                  d/       tC        jJ                  d0       tC        jL                  t         d1       tC        j                          ty        |       t{        |       t}        |       y c c}w # t         $ r |	j                  |
       Y w xY wc c}
w c c}w c c}w c c}w c c} w )2Nr   r   u)   No hi ha dades per generar estadístiquesc              3   N   K   | ]  }|j                   s|j                     y w)N)rS   ).0ra   s     r4   	<genexpr>z(generar_estadistiques.<locals>.<genexpr>   s     >!!++!++>s   %%)defaultzCap visita amb data_hora valida)
zvisites_per_pagina.pngztemps_mig_per_pagina.pngzscroll_mig_per_pagina.pngzdispositius.pngzidiomes.pngzvisites_dia_setmana.pngzvisites_per_hora.pngzvisites_per_mes.pngzevolucio_setmanal.pngzevolucio_diaria.pngz,Imatges actualitzades. No cal regenerar res.zRegenerant z imatges obsoletes: r   z-W02d)DlDtDcDjDvDsDg   zVisites per dia de la setmanar   z/visites_dia_setmana.png   zVisites per hora del diaHoraz/visites_per_hora.png)GenerFebreru   MarçAbrilMaigJunyJuliolAgostSetembreOctubreNovembreDesembrerH   )      r   zVisites per mes de l'anyMesz/visites_per_mes.pngrJ   z-1z%Y-%W-%w)r      rI   rK   rL   u    Evolució de visites per setmanarQ   r   r   r   z/evolucio_setmanal.pngr   )r   rr   )binsrangeu   Distribució del scroll (%)zPercentatge de scrollu   Freqüènciaz/histograma_scroll.png)?r*   r   Sessionr   r	   r"   r.   r?   max	timestamppathjoinr,   existsru   getmtimeOSErrorrw   basenamer   rR   rs   rS   rt   tipus_dispositiuidioma_baseweekdayhourmonthisocalendarr5   ro   r   r#   r$   r%   r'   r(   r-   rW   getbarhr)   rU   r@   mapsplitstrptimerT   rV   matplotlib.datesdatesrX   rY   rZ   r\   r]   r^   r&   histrE   rf   r{   )$r*   r   r/   r_      últim	   últim_tsimatgesnomimatges_pathsneedp
per_paginatemps_per_paginascrollsrC   idiomesper_dia_setmanaper_horaper_mesper_setmanara   dtany_setmana__rc   ire   horesh
noms_mesossetmanessdates_dillunsdillunsr[   s$                                       r4   generar_estadistiquesr      s2   !YFll6"&&(G
LLN9: >w>MF~/0  "IG ?FFsRWW\\*c2FMF D ww~~a KKN77##A&2KKN <=CI;&:Y];^TUBGG<L<LQ<O;^:_`a
 S!J"4(Gc"K#G!#&O3H#Gc"K
  %4{{[[ <<#NN1<<( **+q0+ ==AMM"a'" 	

%*% 	Q 	Q NN,htfBxn-.!3.K%4T F#
 f%
 6D*/(3Qoa 3F3JJLGGD&II-.JJyKK:,678IIK
 rOE#()ahqk)F)JJLGGE6II()JJvJJyKK:,345IIK
J
 .32Y7gkk!a%#7F7JJvHHZ II()JJyJJuKK:,234IIK* k&&()H&./k!n/F/ M &S!''$-0h#(##tfAhZr$:JGLLNW%&
 JJwHH]F3#VLII01JJy &GGIOO''(<(<(<Z(HIGGIOO%%&<f&<&<&>?JJw'KK:,456IIK JJLHHW2X.II+,JJ&'JJ~KK:,456IIK [! ! w'] G  A <_R 4 *$ 8> 0s6   '^:./^?"_ _%6_*._/_4?__)r*   collectionsr   r   
matplotlibusematplotlib.pyplotpyplotr#   sqlalchemy.ormr   
crea_dadesr   modelsr	   
sqlalchemyr
   r   r   r[   r   r,   r+   r5   rE   rf   ro   r{   r    rF   r4   <module>r      sp    	 #   
u   '    !
F
#4
 J &P4642n(rF   