
    _ij                        d dl 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 d dlmZ d dlmZ d dlmZ d dlmZ  eded	
          Ze                    d          d             Ze                    d          e eg d          d                                     Ze                    d          ed                         Ze                    d          ed                         Ze                    d          d             Ze                    d          d             Ze                    d          d             Ze                    d          d             Ze                    d          d             Z dS )    N)	Blueprintrender_templateurl_forredirectcurrent_appflashrequestsend_from_directory)login_requiredcurrent_user)Rapport)db)SQLAlchemyError)role_requiredmainz../templates)template_folder/c                     t           j        st          d          S t           j        s,t	          dd           t          t          d                    S t           j        dk    rt          t          d                    S t           j        dk    rt          t          d                    S t          t          d	                    S )
u\   
    Page d'accueil racine.
    Sert de 'Traffic Controller' : redirige selon le rôle.
    z
index.htmlu:   Votre compte est désactivé. Contactez un administrateur.dangerzauth.logoutadminzadmin.supervisionmanagerzmanager.manager_dashboardzmain.dashboard)r   is_authenticatedr   is_active_accountr   r   r   role     2/var/www/html/MCyber-Diagnostic/blueprints/main.pyindexr      s     ( -|,,, ) 0JHUUU../// G## 344555I%% ;<<=== G,--...r   z
/dashboard)userr   r   c                  6   	 t           j                            ddt                    } t           j                            dd                                          }d}t
          j                            t          j	                  }|rZ|
                    t
          j                            d| d          t
          j	                            d| d          z            }|                    t
          j                                                                      | |d	
          }t
          j                            t          j	                  }|                                }d}|dk    rjd |                    t
          j                                                  D             }|r-t+          t-          |          t/          |          z  d          }|                    t
          j                                                                                  }	|||	d}
t3          d|j        ||
|          S # t6          $ rR}t8          j                            d| d           t?          dd           t3          dg d d d          cY d }~S d }~ww xY w)Npage   )typesearch    )user_id%F)r!   per_page	error_outr   c                     g | ]	}|j         
S r   )score_total).0rs     r   
<listcomp>zdashboard.<locals>.<listcomp>J   s    hhhamhhhr   )totalscore_moyendernier_rapportzdashboard.html)rapports
paginationstatscurrent_searchzErreur dashboard user: Texc_infoz>Une erreur est survenue lors du chargement du tableau de bord.r   ) r	   argsgetintstripr   query	filter_byr   idfilter
nom_clientilikeorder_bydate_creationdescpaginatecountwith_entitiesr,   allroundsumlenfirstr   items	Exceptionr   loggererrorr   )r!   r$   r)   r=   r4   all_reports_querytotal_rapports	avg_scorescoresr2   r5   es               r   	dashboardrW   +   s   0n|44!!(B//5577 '''@@  	LL#))-f---88!!-f---002 E ^^G$9$>$>$@$@AAJJE K 
 


 $M33LO3LL*0022	Ahh->-L-LWM`-a-a-e-e-g-ghhhF @!#f++F";Q??	+44W5J5O5O5Q5QRRXXZZ $$.
 
 /(2(8*4%*.4	6 6 6 	6  n n n  !>1!>!> NNNNPXYYY/"UYjlmmmmmmmmmns   H9H< <
JAJJJz
/documentsc                  >   ddl m}  | j                            d                              | j                                                                                  }| j                            d                              | j                                                                                  }| j                            d                              | j                                                                                  }t          d|||          S )	z+Page publique de consultation des documentsr   Documentguide)categorycgvotherzdocuments.html)guidesr]   others)	modelsrZ   r=   r>   rC   
created_atrE   rI   r   )rZ   r_   r]   r`   s       r   	documentsrc   e   s       ^%%w%77@@ATAYAYA[A[\\``bbF
.
"
"E
"
2
2
;
;H<O<T<T<V<V
W
W
[
[
]
]C^%%w%77@@ATAYAYA[A[\\``bbF+FFSSSSr   z(/documents/download/<string:document_id>c                 8   ddl m} |j                            |           }t          j                            t          j        d          }t          j	        
                    dt          j         d|j                    t          ||j        d|j                  S )u   Télécharger un documentr   rY   zstatic/uploads/documentsu   📥 u    télécharge: T)as_attachmentdownload_name)ra   rZ   r=   
get_or_404ospathjoinr   	root_pathrP   infor   emailtitler
   filenameoriginal_filename)document_idrZ   documentupload_paths       r   download_documentrt   r   s      ~((55H',,{46PQQKWL$6WWx~WWXXX0	   r   z/aboutc                       t          d          S )u   Page À propos.z
about.htmlr   r   r   r   aboutrw           <(((r   z/contactc                       t          d          S )zPage Contact.zcontact.htmlrv   r   r   r   contactrz           >***r   z/privacyc                       t          d          S )u   Politique de confidentialité.zprivacy.htmlrv   r   r   r   privacyr}      r{   r   z/termsc                       t          d          S )zConditions d'utilisation.z
terms.htmlrv   r   r   r   termsr      rx   r   z/healthc                      	 t           j                            t          j        d                     dddddfS # t          $ r6} t
          j                            d|  d	           d
ddddfcY d} ~ S d} ~ ww xY w)z0
    Health check endpoint pour monitoring.
    zSELECT 1ok	connectedrunning)statusdatabaseapp   zHealth check failed: Tr7   rQ   disconnecteddegradedi  N)r   sessionexecutetextrO   r   rP   rQ   )rV   s    r   health_checkr      s    


27:..///#
 
 	 	
      !<!<!<t LLL&
 
 	 	 	 	 	 	 	s   8; 
A;+A60A;6A;)!rh   flaskr   r   r   r   r   r   r	   r
   flask_loginr   r   ra   r   
extensionsr   sqlalchemy.excr   
decoratorsr   __name__r   router   rW   rc   rt   rw   rz   r}   r   r   r   r   r   <module>r      ss   				 q q q q q q q q q q q q q q q q q q q q 4 4 4 4 4 4 4 4             * * * * * * $ $ $ $ $ $ y>BBB C/ / /2 L+++,,1n 1n -,  1nn L	T 	T  	T 677   87* H) ) ) J+ + + J+ + + H) ) ) I    r   