+
    i                     ^   R t ^ RIHtHtHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHtHtHt ^ RIHtHtHtHt ]! RR.R	7      t]P+                  R
]],          R7      ]! ]
4      3R R ll4       t]P+                  R]],          R7      ]! ]
4      3R R ll4       t]P+                  R]R7      ]! ]
4      3R R ll4       t]P3                  R
]^R7      ]! ]
4      3R R ll4       t]P7                  R]R7      ]! ]
4      3R R ll4       t]P;                  R^R7      ]! ]
4      3R R ll4       tR# )u,   
Routes API pour la gestion des catégories
)	APIRouterDependsHTTPExceptionSession)List)get_db)	CategorieArticleStatutArticle)CategorieCreateCategorieUpdateCategorieResponseCategorieArbrez/api/categoriesu   Catégories)prefixtags/)response_modelc                $    V ^8  d   QhR\         /#    dbr   )formats   "XC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO\maestro-backend\app\routes\categories.py__annotate__r      s           c                L    V P                  \        4      P                  4       pV# )u!   Récupère toutes les catégories)queryr	   all)r   
categoriess   & r   lire_categoriesr       s!     )$((*Jr   z/arbrec                $    V ^8  d   QhR\         /# r   r   )r   s   "r   r   r      s     A Ag Ar   c                   a a S P                  \        4      P                  \        P                  R8H  4      P	                  4       pR VV 3R lloV Uu. uF  pS! V4      NK  	  up# u upi )u3   Récupère l'arborescence complète des catégoriesNc                0    V ^8  d   QhR\         R\        /# )r   	categoriereturn)r	   r   )r   s   "r   r   +lire_arbre_categories.<locals>.__annotate__   s      I . r   c                   < SP                  \        4      P                  \        P                  V P                  8H  4      P                  4       p\        V P                  V P                  V P                  V P                  V P                  V P                  TV P                   Uu. uF  pS! V4      NK  	  upR 7      pV# u upi ))idnomiconeniveau	parent_idchemin_completnombre_articlesenfants)r   r
   filtercategorie_idr(   countr   r)   r*   r+   r,   r-   r/   )r$   r.   enfantarbreconstruire_arbrer   s   &   r   r5   /lire_arbre_categories.<locals>.construire_arbre   s    ((7+2273G3G9<<3WX^^`||//##))$33+<E<M<MN<M&%f-<MN	
  Os   %C )r   r	   r0   r,   r   )r   categories_racinescatr5   s   f  @r   lire_arbre_categoriesr9      s`     ),33I4G4G44OPTTV  .@@-?cS!-?@@@s   A(z/{categorie_id}c                0    V ^8  d   QhR\         R\        /# r   r1   r   intr   )r   s   "r   r   r   1   s       ' r   c                    VP                  \        4      P                  \        P                  V 8H  4      P	                  4       pV'       g   \        RRR7      hV# )u%   Récupère une catégorie spécifique     Catégorie non trouvéestatus_codedetail)r   r	   r0   r(   firstr   )r1   r   r$   s   && r   lire_categorierE   0   sF     #**9<<<+GHNNPI4MNNr   )r   rB   c                0    V ^8  d   QhR\         R\        /# )r   r$   r   )r   r   )r   s   "r   r   r   :   s       G r   c                   V P                   '       dc   VP                  \        4      P                  \        P                  V P                   8H  4      P                  4       pV'       g   \        RRR7      h\        R/ V P                  4       B pVP                  V4       VP                  4        VP                  V4       V# )u   Crée une nouvelle catégorier?   u   Catégorie parente non trouvéerA    )r,   r   r	   r0   r(   rD   r   
model_dumpaddcommitrefresh)r$   r   parentdb_categories   &&  r   creer_categorierO   9   s     )$++ILLI<O<O,OPVVXC8YZZ6y3356LFF<IIKJJ|r   c                <    V ^8  d   QhR\         R\        R\        /# )r   r1   categorie_updater   )r=   r   r   )r   s   "r   r   r   I   s"      S O QX r   c                f   VP                  \        4      P                  \        P                  V 8H  4      P	                  4       pV'       g   \        RRR7      hVP                  RR7      pVP                  4        F  w  rV\        W5V4       K  	  VP                  4        VP                  V4       V# )u    Modifie une catégorie existanter?   r@   rA   T)exclude_unset)r   r	   r0   r(   rD   r   rI   itemssetattrrK   rL   )r1   rQ   r   rN   update_datafieldvalues   &&&    r   modifier_categorierY   H   s     88I&--illl.JKQQSL4MNN"--D-AK#))+U+ , IIKJJ|r   )rB   c                0    V ^8  d   QhR\         R\        /# r;   r<   )r   s   "r   r   r   Y   s      c w r   c                    VP                  \        4      P                  \        P                  V 8H  4      P	                  4       pV'       g   \        R RR7      hVP                  \        4      P                  \        P                  V 8H  \        P                  \        P                  8g  4      P                  4       ^ 8  d   \        RR4      h\        VP                  4      ^ 8  d   \        RRR7      hVP                  \        4      P                  \        P                  V 8H  \        P                  \        P                  8H  4      P                  4        VP                  V4       VP                  4        R# )r?   r@   rA   i  uD   Impossible de supprimer une catégorie contenant des articles actifsuA   Impossible de supprimer une catégorie ayant des sous-catégoriesN)r   r	   r0   r(   rD   r   r
   r1   statutr   ARCHIVEr2   lenr/   deleterK   )r1   r   rN   s   && r   supprimer_categorier`   X   s   88I&--illl.JKQQSL4MNN	xx,-/// eg C!ghh
< 1$4wxx HHW,-/// fhIIlIIKr   N)__doc__fastapir   r   r   sqlalchemy.ormr   typingr   app.databaser   
app.modelsr	   r
   r   app.schemas.categorier   r   r   r   routergetr    r9   rE   postrO   putrY   r_   r`   rH   r   r   <module>rl      sF   6 5 "   8 8  
+=/	B C%6 78")&/  9 HT.%9:(/ A ;A* .?@4;FO  A S!2D>Efo  E .?@[bci[j  A  c29@  3r   