Ë
    ¢ù@j:B  ã            
       ód  — d Z ddlZddlZddlZddlmZmZ ej                  j                  dej                  j                  e	«      «       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mZmZmZmZmZmZ ej@                  jC                  dd	«      Z"ej@                  jC                  d
d«      Z#dedz  fd„Z$dZ%de&de'e&   fd„Z(d%d„Z)d%d„Z*d%d„Z+d%d„Z,d%d„Z-d%d„Z.d%d„Z/d%d„Z0d%d„Z1dZ2d%d„Z3eeeeeeeeeef
Z4d%d„Z5deddfd„Z6d%d„Z7d%d „Z8d%d!„Z9d%d"„Z:d%d#„Z;e<d$k(  r e;«        yy)&uF   
Initialise ou met Ã  jour la base SQLite.

Usage : python init_db.py
é    N)ÚdateÚdatetime)ÚinspectÚtext)Ú
create_app)ÚDEFAULT_LOT_TYPESÚDEFAULT_MILLIEME_TYPESÚDEFAULT_RELEVE_TYPES)ÚCompteurÚCoproprieteÚLotÚLotMilliemesÚLotPersonneRoleÚLotTypeÚMilliemeTypeÚPersonneÚReleveÚ
ReleveTypeÚUserÚdbÚADMIN_USERNAMEzstessy.cauetÚADMIN_PASSWORDz
Scauet.000Úreturnc                 óž   — | €y t        | t        «      r| S t        | t        «      r't        j                  | d d d«      j                  «       S | S )Né
   z%Y-%m-%d)Ú
isinstancer   Ústrr   Ústrptime)Úvalues    úY:\copro_gestion\init_db.pyÚ_parse_sql_dater!   %   sJ   € Ø€}ØÜ�%œÔØˆÜ�%œÔÜ× Ñ   s¨ ¨ZÓ8×=Ñ=Ó?Ð?Ø€Ló    )ÚcoproprietesÚ	personnesÚlotsÚ	compteursÚrelevesÚlot_personne_rolesÚtablec                 óˆ   — || j                  «       vr
t        «       S | j                  |«      D �ch c]  }|d   ’Œ	 c}S c c}w )NÚname)Úget_table_namesÚsetÚget_columns)Ú	inspectorr)   Úcs      r    Ú_table_columnsr1   9   sC   € Ø�I×-Ñ-Ó/Ñ/Ü‹uˆØ(×4Ñ4°UÔ;Ó<Ñ;˜!ˆAˆf‹IÐ;Ñ<Ð<ùÒ<s   °?c                 ó6  — t         D ]�  }t        | |«      }|sŒd|vr;t        j                  j	                  t        d|› d�«      «       t        d|› d�«       d|vsŒVt        j                  j	                  t        d|› d�«      «       t        d|› d�«       Œ’ y )	NÚstatutúALTER TABLE z7 ADD COLUMN statut VARCHAR(20) NOT NULL DEFAULT 'actif'ú  + z.statutÚdate_suppressionz% ADD COLUMN date_suppression DATETIMEz.date_suppression)ÚSOFT_DELETE_TABLESr1   r   ÚsessionÚexecuter   Úprint©r/   r)   Úcolumnss      r    Úmigrate_soft_deleter=   ?   s¦   € ß#ˆÜ  ¨EÓ2ˆÙØØ˜7Ñ"Ü�J‰J×ÑÜØ" 5 'ð *Mð Móôô �D˜˜˜wÐ'Ô(Ø WÒ,Ü�J‰J×ÑÜ�| E 7Ð*OÐPÓQôô �D˜˜Ð0Ð1Õ2ñ! $r"   c                 ó’   — t        | d«      }|sy d|vr4t        j                  j                  t	        d«      «       t        d«       y y )NÚusersÚis_adminz@ALTER TABLE users ADD COLUMN is_admin BOOLEAN NOT NULL DEFAULT 0z  + users.is_admin©r1   r   r8   r9   r   r:   ©r/   r<   s     r    Úmigrate_adminrC   S   sG   € Ü˜Y¨Ó0€GÙØØ˜Ñ Ü
�
‰
×ÑÜÐSÓTô	
ô 	Ð"Õ#ð	 !r"   c                 ó’   — t        | d«      }|sy d|vr4t        j                  j                  t	        d«      «       t        d«       y y )Nr?   Útel_affichagezWALTER TABLE users ADD COLUMN tel_affichage VARCHAR(20) NOT NULL DEFAULT 'international'z  + users.tel_affichagerA   rB   s     r    Úmigrate_user_tel_affichagerF   ^   sK   € Ü˜Y¨Ó0€GÙØØ˜gÑ%Ü
�
‰
×ÑÜð3óô	
ô 	Ð'Õ(ð &r"   c                  óä   — ddl m}  ddlm} d}| j                  j                  «       D ]3  } ||j                  «      }|sŒ||j                  k7  sŒ(||_        |dz  }Œ5 |rt        d|› d�«       y y )Nr   )Ú	Telephone)Únormalize_phoneé   z  -> u(    numÃ©ro(s) de tÃ©lÃ©phone normalisÃ©(s))Ú
app.modelsrH   Ú	app.phonerI   ÚqueryÚallÚnumeror:   )rH   rI   ÚupdatedÚtelÚ
normalizeds        r    Úmigrate_normalize_phonesrS   l   sl   € Ý$Ý)à€GØ�‰×"Ñ"Ö$ˆÙ$ S§Z¡ZÓ0ˆ
Ú˜*¨¯
©
Ó2Ø#ˆCŒJØ�q‰L‰Gð	 %ñ
 Ü��g�YÐFÐGÕHð r"   c                 óÐ  — t        | d«      }|sy d|vr3t        j                  j                  t	        d«      «       t        d«       d|vr3t        j                  j                  t	        d«      «       t        d«       d|vr3t        j                  j                  t	        d	«      «       t        d
«       d|vr3t        j                  j                  t	        d«      «       t        d«       d|vr3t        j                  j                  t	        d«      «       t        d«       t        | d«      }d|v r4t        j                  j                  t	        d«      «       t        d«       y y )Nr%   Údesignationz?ALTER TABLE lots ADD COLUMN designation VARCHAR(200) DEFAULT ''z  + lots.designationÚetagez8ALTER TABLE lots ADD COLUMN etage VARCHAR(30) DEFAULT ''z  + lots.etageÚportez8ALTER TABLE lots ADD COLUMN porte VARCHAR(30) DEFAULT ''z  + lots.porteÚlot_type_idz/ALTER TABLE lots ADD COLUMN lot_type_id INTEGERz  + lots.lot_type_idÚnumero_fiscalz@ALTER TABLE lots ADD COLUMN numero_fiscal VARCHAR(50) DEFAULT ''z  + lots.numero_fiscalÚetage_portez‹UPDATE lots SET designation = etage_porte WHERE (designation IS NULL OR designation = '') AND etage_porte IS NOT NULL AND etage_porte != ''u(     -> etage_porte migrÃ© vers designationrA   rB   s     r    Úmigrate_lot_champsr[   z   s/  € Ü˜Y¨Ó/€GÙØØ˜GÑ#Ü
�
‰
×ÑÜÐRÓSô	
ô 	Ð$Ô%Ø�gÑÜ
�
‰
×Ñœ4Ð ZÓ[Ô\ÜÐÔØ�gÑÜ
�
‰
×Ñœ4Ð ZÓ[Ô\ÜÐÔØ˜GÑ#Ü
�
‰
×Ñœ4Ð QÓRÔSÜÐ$Ô%Ø˜gÑ%Ü
�
‰
×ÑÜÐSÓTô	
ô 	Ð&Ô'ä˜Y¨Ó/€GØ˜ÑÜ
�
‰
×ÑÜðDóô	
ô 	Ð8Õ9ð  r"   c                 óª  — d| j                  «       vry| j                  d«      D �ci c]  }|d   |“Œ
 }}d|vry|d   j                  dd«      rt        d«       yt        d«       t        j
                  j                  t        d	«      «       t        j
                  j                  t        d
«      «       t        j
                  j                  t        d«      «       t        j
                  j                  t        d«      «       t        j
                  j                  t        d«      «       t        j
                  j                  t        d«      «       t        j
                  j                  t        d«      «       t        j
                  j                  t        d«      «       t        j
                  j                  t        d«      «       yc c}w )u[   SQLite : date_debut ne peut pas passer en NULL via ALTER TABLE â€” recrÃ©ation de la table.r(   Nr+   Ú
date_debutÚnullableTu2     Â· lot_personne_roles.date_debut dÃ©jÃ  nullablez1  -> lot_personne_roles.date_debut rendu nullablezPRAGMA foreign_keys=OFFa²  
            CREATE TABLE lot_personne_roles_new (
                id INTEGER NOT NULL PRIMARY KEY,
                lot_id INTEGER NOT NULL,
                personne_id INTEGER NOT NULL,
                role VARCHAR(20) NOT NULL,
                date_debut DATE,
                date_fin DATE,
                notes TEXT,
                public_id VARCHAR(36),
                statut VARCHAR(20) NOT NULL DEFAULT 'actif',
                date_suppression DATETIME,
                created_at DATETIME,
                updated_at DATETIME,
                FOREIGN KEY(lot_id) REFERENCES lots (id),
                FOREIGN KEY(personne_id) REFERENCES personnes (id)
            )
            a³  
            INSERT INTO lot_personne_roles_new (
                id, lot_id, personne_id, role, date_debut, date_fin, notes,
                public_id, statut, date_suppression, created_at, updated_at
            )
            SELECT
                id, lot_id, personne_id, role, date_debut, date_fin, notes,
                public_id, statut, date_suppression, created_at, updated_at
            FROM lot_personne_roles
            zDROP TABLE lot_personne_rolesz?ALTER TABLE lot_personne_roles_new RENAME TO lot_personne_roleszVCREATE INDEX IF NOT EXISTS ix_lot_personne_roles_lot_id ON lot_personne_roles (lot_id)z`CREATE INDEX IF NOT EXISTS ix_lot_personne_roles_personne_id ON lot_personne_roles (personne_id)zVCREATE INDEX IF NOT EXISTS ix_lot_personne_roles_statut ON lot_personne_roles (statut)zPRAGMA foreign_keys=ON)r,   r.   Úgetr:   r   r8   r9   r   )r/   r0   r<   s      r    Ú migrate_role_date_debut_nullabler`   ž   sy  € à 9×#<Ñ#<Ó#>Ñ>ØØ%.×%:Ñ%:Ð;OÔ%PÓQÑ%P ˆq�‰y˜!‰|Ð%P€GÐQØ˜7Ñ"ØØˆ|Ñ× Ñ  ¨TÔ2ÜÐBÔCØä	Ð
=Ô>Ü‡J�J×Ñ”tÐ5Ó6Ô7Ü‡J�J×ÑÜðó	
ôô, ‡J�J×ÑÜð	ó	
ôô ‡J�J×Ñ”tÐ;Ó<Ô=Ü‡J�J×Ñ”tÐ]Ó^Ô_Ü‡J�J×ÑÜÐeÓfôô ‡J�J×ÑÜð2ó	
ôô ‡J�J×ÑÜÐeÓfôô ‡J�J×Ñ”tÐ4Ó5Õ6ùòw Rs   §Gc                 ó’   — t        | d«      }|sy d|vr4t        j                  j                  t	        d«      «       t        d«       y y )Nr$   Úraison_socialezGALTER TABLE personnes ADD COLUMN raison_sociale VARCHAR(200) DEFAULT ''z  + personnes.raison_socialerA   rB   s     r    Úmigrate_personne_raison_socialerc   à   sG   € Ü˜Y¨Ó4€GÙØØ˜wÑ&Ü
�
‰
×ÑÜÐZÓ[ô	
ô 	Ð,Õ-ð	 'r"   c                 óŒ   — t        | d«      }d|vryt        j                  j                  t	        d«      «       t        d«       y)uC   Colonne obsolÃ¨te : le rÃ´le gestionnaire remplace est_prestataire.r$   Úest_prestataireNz1ALTER TABLE personnes DROP COLUMN est_prestataireu'     - personnes.est_prestataire supprimÃ©rA   rB   s     r    Úmigrate_remove_est_prestatairerf   ë   s:   € ä˜Y¨Ó4€GØ Ñ'ØÜ‡J�J×Ñ”tÐOÓPÔQÜ	Ð
3Õ4r"   c                 ó’   — t        | d«      }|sy d|vr4t        j                  j                  t	        d«      «       t        d«       y y )Nr&   Úreleve_type_idz7ALTER TABLE compteurs ADD COLUMN releve_type_id INTEGERz  + compteurs.releve_type_idrA   rB   s     r    Úmigrate_compteur_releve_typeri   ô   sB   € Ü˜Y¨Ó4€GÙØØ˜wÑ&Ü
�
‰
×Ñœ4Ð YÓZÔ[ÜÐ,Õ-ð 'r"   )r$   r%   r(   c                 óª  — t         D ]�  }t        | |«      }|sŒd|vr;t        j                  j	                  t        d|› d�«      «       t        d|› d�«       d|vsŒVt        j                  j	                  t        d|› d�«      «       t        d|› d�«       Œ’ t        j                  j                  «        t         D ]ˆ  }|d	k(  r)t        j                  j	                  t        d
«      «       n,t        j                  j	                  t        d|› d�«      «       t        j                  j	                  t        d|› d�«      «       ŒŠ t        d«       y )NÚ
created_atr4   z ADD COLUMN created_at DATETIMEr5   z.created_atÚ
updated_atz ADD COLUMN updated_at DATETIMEz.updated_atr(   zgUPDATE lot_personne_roles SET created_at = datetime(date_debut || ' 12:00:00') WHERE created_at IS NULLúUPDATE z: SET created_at = datetime('now') WHERE created_at IS NULLzK SET updated_at = COALESCE(updated_at, created_at) WHERE updated_at IS NULLu     -> horodatages initialisÃ©s)ÚTIMESTAMP_TABLESr1   r   r8   r9   r   r:   Úcommitr;   s      r    Úmigrate_timestampsrp      s4  € ß!ˆÜ  ¨EÓ2ˆÙØØ˜wÑ&Ü�J‰J×Ñœt l°5°'Ð9XÐ$YÓZÔ[Ü�D˜˜˜{Ð+Ô,Ø˜wÒ&Ü�J‰J×Ñœt l°5°'Ð9XÐ$YÓZÔ[Ü�D˜˜˜{Ð+Õ,ð "ô ‡J�J×ÑÔç!ˆØÐ(Ò(Ü�J‰J×ÑÜð/óõô �J‰J×ÑÜ�w˜u˜gÐ%_Ð`Óaôô 	�
‰
×ÑÜØ˜%˜ð !+ð +óõ	
ð "ô$ 
Ð
)Õ*r"   c           	      óP  — t         D ]]  }|j                  }t        | |«      }|sŒd|vsŒ#t        j                  j                  t        d|› d�«      «       t        d|› d�«       Œ_ t        j                  j                  «        t         D ]Ž  }|j                  }t        j                  j                  t        d|› d�«      «      }|D ]O  \  }t        j                  j                  t        d|› d	�«      t        t        j                  «       «      |d
œ«       ŒQ Œ� t        d«       y )NÚ	public_idr4   z! ADD COLUMN public_id VARCHAR(36)r5   z
.public_idzSELECT id FROM z* WHERE public_id IS NULL OR public_id = ''rm   z$ SET public_id = :pid WHERE id = :id)ÚpidÚidu     -> public_id initialisÃ©s)ÚPUBLIC_ID_MODELSÚ__tablename__r1   r   r8   r9   r   r:   ro   r   ÚuuidÚuuid4)r/   Úmodelr)   r<   ÚrowsÚrow_ids         r    Úmigrate_public_idsr|   0  s   € ß!ˆØ×#Ñ#ˆÜ  ¨EÓ2ˆÙØØ˜gÒ%Ü�J‰J×Ñœt l°5°'Ð9ZÐ$[Ó\Ô]Ü�D˜˜˜zÐ*Õ+ð "ô ‡J�J×ÑÔç!ˆØ×#Ñ#ˆÜ�z‰z×!Ñ!Ü�? 5 'Ð)SÐTÓUó
ˆó ‰IˆVÜ�J‰J×ÑÜ�w˜u˜gÐ%IÐJÓKÜœDŸJ™J›LÓ)°Ñ8õñ ð "ô 
Ð
'Õ(r"   Úcoproc           	      ó  — | j                   sLt        t        «      D ]:  \  }}t        j                  j                  t        | j                  ||¬«      «       Œ< | j                  sPt        t        «      D ]>  \  }\  }}t        j                  j                  t        | j                  |||¬«      «       Œ@ | j                  sMt        t        «      D ]:  \  }}t        j                  j                  t        | j                  ||¬«      «       Œ< y y )N)Úcopropriete_idÚlibelleÚordre)r   r€   Úuniter�   )Úmillieme_typesÚ	enumerater	   r   r8   Úaddr   rt   Úreleve_typesr
   r   Ú	lot_typesr   r   )r}   Úir€   r‚   s       r    Úseed_types_coproprieter‰   H  sÇ   € Ø×ÒÜ#Ô$:Ö;‰JˆAˆwÜ�J‰J�N‰Nœ<°u·x±xÈÐXYÔZÕ[ð <à×ÒÜ#,Ô-AÖ#BÑˆAÑ�˜Ü�J‰J�N‰NÜØ#(§8¡8°WÀEÐQRôõð $Cð �?Š?Ü#Ô$5Ö6‰JˆAˆwÜ�J‰J�N‰Nœ7°%·(±(ÀGÐSTÔUÕVñ 7ð r"   c                 óæ  — d| j                  «       vry t        j                  j                  «       ry d| j                  «       v r�t        j
                  j                  t        d«      «      }|D ]U  }t        j
                  j                  t        |d   |d   dt        |d   «      t        |d   «      |d	   xs d
¬«      «       ŒW t        d«       d| j                  «       v rŽt        j
                  j                  t        d«      «      }|D ]U  }t        j
                  j                  t        |d   |d   dt        |d   «      t        |d   «      |d	   xs d
¬«      «       ŒW t        d«       y y )Nr(   Úproprietaires_lotzNSELECT lot_id, personne_id, date_debut, date_fin, notes FROM proprietaires_lotr   rJ   Úproprietaireé   é   é   Ú )Úlot_idÚpersonne_idÚroler]   Údate_finÚnotesu     -> proprietaires_lot migrÃ©sÚlocataires_lotzKSELECT lot_id, personne_id, date_debut, date_fin, notes FROM locataires_lotÚ	locataireu     -> locataires_lot migrÃ©s)r,   r   rM   Úfirstr   r8   r9   r   r…   r!   r:   )r/   rz   Úrows      r    Úmigrate_roles_from_legacyrš   X  sZ  € Ø 9×#<Ñ#<Ó#>Ñ>ØÜ×Ñ×"Ñ"Ô$Øà˜i×7Ñ7Ó9Ñ9Ü�z‰z×!Ñ!Üð)óó
ˆó ˆCÜ�J‰J�N‰NÜØ˜q™6Ø # A¡Ø'Ü.¨s°1©vÓ6Ü,¨S°©VÓ4Ø˜a™&š, Bôõ	ð ô 	Ð.Ô/à˜9×4Ñ4Ó6Ñ6Ü�z‰z×!Ñ!Üð&óó
ˆó ˆCÜ�J‰J�N‰NÜØ˜q™6Ø # A¡Ø$Ü.¨s°1©vÓ6Ü,¨S°©VÓ4Ø˜a™&š, Bôõ	ð ô 	Ð+Õ,ð% 7r"   c           	      óì  — t        | d«      }|rd|vry t        j                  j                  t        j                  dk7  t        j                  j                  d «      «      j                  «       }|D ]ò  }|j                  rŒ|j                  }t        |«       t        j                  j                  «        t        j                  j                  |j                  d¬«      j!                  «       }|sŒ�|j                  j#                  «       sŒœt        j                  j%                  t'        |j                  |j                  |j                  j#                  «       ¬«      «       Œô |rt)        d«       y y )Nr%   Ú	milliemesr�   zCharges communes©r   r€   )r‘   Útype_idÚvaleuru     -> milliÃ¨mes legacy migrÃ©s)r1   r   rM   Úfilterrœ   ÚisnotrN   Úmilliemes_valeursÚcoproprieter‰   r   r8   Úflushr   Ú	filter_byrt   r˜   Ústripr…   r   r:   )r/   r<   r%   Úlotr}   Útype_defs         r    Úmigrate_milliemes_legacyr©   ‡  s  € Ü˜Y¨Ó/€GÙ�k¨Ñ0ØÜ�9‰9×ÑœCŸM™M¨RÑ/´·±×1DÑ1DÀTÓ1JÓK×OÑOÓQ€DÛˆØ× Ò ØØ—‘ˆÜ˜uÔ%Ü
�
‰
×ÑÔä×Ñ×(Ñ(Ø$Ÿx™xÐ1Cð )ó ç‰e‹gð 	ò
 ˜Ÿ™×+Ñ+Õ-Ü�J‰J�N‰NÜ C§F¡F°H·K±KÈÏÉ×H[ÑH[ÓH]Ô^õð ñ ÜÐ.Õ/ð r"   c                 ó|  — d| j                  «       vry dddœ}t        j                  j                  t	        d«      «      }|D ]ì  \  }}}}|rŒt        j                  j                  t        |«      }|sŒ2t        |j                  «       t        j                  j                  «        |j                  |xs dd«      }t        j                  j                  |j                  |¬«      j                  «       }	|	sŒ·t        j                  j                  t	        d	«      |	j                  |d
œ«       Œî t!        d«       y )Nr&   z
Eau froidez
Eau chaude)Ú
eau_froideÚ
eau_chaudez?SELECT id, lot_id, type_compteur, releve_type_id FROM compteursr�   ÚAutrer�   z:UPDATE compteurs SET releve_type_id = :tid WHERE id = :cid)ÚtidÚcidu%     -> types relevÃ©s compteurs migrÃ©s)r,   r   r8   r9   r   r_   r   r‰   r£   r¤   r   rM   r¥   r   r˜   rt   r:   )
r/   Úmappingr&   r¯   r‘   Útype_compteurrh   r§   r€   Úrts
             r    Úmigrate_compteur_types_legacyr³   Ÿ  s  € Ø˜)×3Ñ3Ó5Ñ5ØØ)¸ÑF€GÜ—
‘
×"Ñ"ÜÐNÓOó€Ió 7@Ñ2ˆˆV�] NÙØÜ�j‰j�n‰nœS &Ó)ˆÙØÜ˜sŸ™Ô/Ü
�
‰
×ÑÔØ—+‘+˜mÒ1¨r°7Ó;ˆÜ×Ñ×'Ñ'Ø×-Ñ-°wð (ó 
ç
‰%‹'ð 	ò Ü�J‰J×ÑÜÐQÓRØŸ™ cÑ*õð 7@ô" 
Ð
1Õ2r"   c                  óf  — t         j                  j                  t        ¬«      j	                  «       } | sXt        t        d¬«      } | j                  t        «       t        j                  j                  | «       t        dt        › �«       y | j                  sd| _        t        dt        › �«       y )N)ÚusernameT)rµ   r@   u   Utilisateur crÃ©Ã© : u   Utilisateur dÃ©jÃ  prÃ©sent : )r   rM   r¥   r   r˜   Úset_passwordr   r   r8   r…   r:   r@   )Úusers    r    Úensure_admin_userr¸   º  s   € Ü�:‰:×Ñ¬ÐÓ8×>Ñ>Ó@€DÙÜœ^°dÔ;ˆØ×Ñœ.Ô)Ü
�
‰
�‰�tÔÜÐ%¤nÐ%5Ð6Õ7à�}Š}Ø ˆDŒMÜÐ.¬~Ð.>Ð?Õ@r"   c                  ó¤  — t        «       } | j                  «       5  t        d«       t        j                  «        t        d«       t        t        j                  «      }t        |«       t        |«       t        |«       t        |«       t        |«       t        |«       t        |«       t        |«       t        |«       t!        |«       t        j"                  j%                  «        t        t        j                  «      }t        d«       t'        j(                  «       j+                  «       D ]  }t-        |«       Œ t        j"                  j%                  «        t/        |«       t        j"                  j%                  «        t1        |«       t3        |«       t        j"                  j%                  «        t        d«       t5        «        t        j"                  j%                  «        t        d«       t7        «        t        j"                  j%                  «        t        d| j8                  d   › �«       d d d «       y # 1 sw Y   y xY w)Nu&   CrÃ©ation des tables si nÃ©cessaireâ€¦u   Migrations de schÃ©maâ€¦u    DonnÃ©es et types par dÃ©fautâ€¦u!   Normalisation des tÃ©lÃ©phonesâ€¦u   Compte administrateurâ€¦u   TerminÃ©. Base : ÚSQLALCHEMY_DATABASE_URI)r   Úapp_contextr:   r   Ú
create_allr   Úenginer=   rC   rF   rc   rf   ri   r[   r`   rp   r|   r8   ro   r   Úquery_actifsrN   r‰   rš   r©   r³   rS   r¸   Úconfig)Úappr/   r}   s      r    ÚmainrÁ   Ç  s…  € Ü
‹,€CØ	�‰Õ	ÜÐ6Ô7Ü
�‰ŒäÐ(Ô)ÜœBŸI™IÓ&ˆ	Ü˜IÔ&Ü�iÔ Ü" 9Ô-Ü'¨	Ô2Ü& yÔ1Ü$ YÔ/Ü˜9Ô%Ü(¨Ô3Ü˜9Ô%Ü˜9Ô%Ü
�
‰
×ÑÔäœBŸI™IÓ&ˆ	ÜÐ0Ô1Ü ×-Ñ-Ó/×3Ñ3Ö5ˆEÜ" 5Õ)ð 6ä
�
‰
×ÑÔä! )Ô,Ü
�
‰
×ÑÔÜ  Ô+Ü% iÔ0Ü
�
‰
×ÑÔäÐ1Ô2Ü Ô"Ü
�
‰
×ÑÔäÐ(Ô)ÜÔÜ
�
‰
×ÑÔäÐ! #§*¡*Ð-FÑ"GÐ!HÐIÔJ÷M 
×	Ñ	ús   ›H"IÉIÚ__main__)r   N)=Ú__doc__ÚosÚsysrw   r   r   ÚpathÚinsertÚdirnameÚ__file__Ú
sqlalchemyr   r   rÀ   r   Úapp.constantsr   r	   r
   rK   r   r   r   r   r   r   r   r   r   r   r   r   Úenvironr_   r   r   r!   r7   r   r-   r1   r=   rC   rF   rS   r[   r`   rc   rf   ri   rn   rp   ru   r|   r‰   rš   r©   r³   r¸   rÁ   Ú__name__© r"   r    Ú<module>rÏ      sd  ðñó
 
Û 
Û ß #à ‡�‡���2—7‘7—?‘? 8Ó,Ô -ç $å ß YÑ Y÷÷ ÷ ó ð —‘—‘Ð 0°.ÓA€Ø—‘—‘Ð 0°,Ó?€ð˜d T™kó ðÐ ð= Sð =¨S°©Xó =ó3ó($ó)óIó!:óH?7óD.ó5ó.ð ?Ð ó+ðF 	ØØØØØØØØØ
ðÐ ó)ð0W +ð W°$ó Wó ,-ó^0ó03ó6
Aó(KðV ˆzÒÙ…Fð r"   