From 9d9e6c65490ba319cb2f167edbc87223b37f2a49 Mon Sep 17 00:00:00 2001 From: fatima Date: Thu, 30 Apr 2026 15:10:40 +0200 Subject: [PATCH] Bug: Affichage de la lite des conges en fonction des profil --- .gitignore | 1 + SIRH/__pycache__/__init__.cpython-310.pyc | Bin 126 -> 126 bytes SIRH/__pycache__/settings.cpython-310.pyc | Bin 3074 -> 3074 bytes SIRH/__pycache__/urls.cpython-310.pyc | Bin 1519 -> 1519 bytes SIRH/__pycache__/views.cpython-310.pyc | Bin 1249 -> 1249 bytes SIRH/__pycache__/wsgi.cpython-310.pyc | Bin 523 -> 523 bytes .../fonctions_utilitaire.cpython-310.pyc | Bin 2234 -> 2234 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 135 -> 135 bytes .../__pycache__/admin.cpython-310.pyc | Bin 176 -> 176 bytes .../__pycache__/apps.cpython-310.pyc | Bin 427 -> 427 bytes .../__pycache__/forms.cpython-310.pyc | Bin 861 -> 861 bytes .../__pycache__/models.cpython-310.pyc | Bin 1287 -> 1287 bytes .../__pycache__/urls.cpython-310.pyc | Bin 554 -> 554 bytes .../__pycache__/views.cpython-310.pyc | Bin 6196 -> 6053 bytes gestion_conge/views.py | 81 +++++++++--------- .../__pycache__/__init__.cpython-310.pyc | Bin 137 -> 137 bytes .../__pycache__/admin.cpython-310.pyc | Bin 628 -> 628 bytes .../__pycache__/forms.cpython-310.pyc | Bin 2742 -> 2742 bytes .../__pycache__/models.cpython-310.pyc | Bin 5607 -> 5607 bytes .../__pycache__/urls.cpython-310.pyc | Bin 1511 -> 1511 bytes .../__pycache__/views.cpython-310.pyc | Bin 14436 -> 14436 bytes .../tags_personnaliser.cpython-310.pyc | Bin 1120 -> 1120 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 136 -> 136 bytes .../__pycache__/admin.cpython-310.pyc | Bin 441 -> 441 bytes .../__pycache__/forms.cpython-310.pyc | Bin 4554 -> 4554 bytes .../__pycache__/models.cpython-310.pyc | Bin 7657 -> 7657 bytes .../__pycache__/urls.cpython-310.pyc | Bin 2297 -> 2349 bytes .../__pycache__/views.cpython-310.pyc | Bin 16282 -> 16696 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 135 -> 135 bytes .../__pycache__/admin.cpython-310.pyc | Bin 176 -> 176 bytes .../__pycache__/apps.cpython-310.pyc | Bin 370 -> 370 bytes .../__pycache__/forms.cpython-310.pyc | Bin 1556 -> 1556 bytes .../__pycache__/models.cpython-310.pyc | Bin 1502 -> 1502 bytes .../__pycache__/urls.cpython-310.pyc | Bin 929 -> 929 bytes .../__pycache__/views.cpython-310.pyc | Bin 7363 -> 7435 bytes 35 files changed, 43 insertions(+), 39 deletions(-) diff --git a/.gitignore b/.gitignore index 2d1e761..dd45891 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ media/ staticfiles/ .env migrations/ +*.pyc \ No newline at end of file diff --git a/SIRH/__pycache__/__init__.cpython-310.pyc b/SIRH/__pycache__/__init__.cpython-310.pyc index 4fb9cb6db029e6366a8b4946e5b82b9fd49cc031..78d96969ae083a6a76617b63f58c8b369a74fa11 100644 GIT binary patch delta 16 Wcmb=ch)A{RAQa delta 16 Vcmb=c$-_tB>)_117ZLG diff --git a/SIRH/__pycache__/settings.cpython-310.pyc b/SIRH/__pycache__/settings.cpython-310.pyc index 180f60240b9fcf19c965548b0559e8b560ae7859..1a699968bcfaf993e9f65e62bfd7044ffa810249 100644 GIT binary patch delta 19 ZcmZpYXp-Q{=jG*M00P}L8@YaP0{|y21Ze;O delta 19 ZcmZpYXp-Q{=jG*M0D`r38@YaP0{|&U1iJtL diff --git a/SIRH/__pycache__/urls.cpython-310.pyc b/SIRH/__pycache__/urls.cpython-310.pyc index 1507cc0ba528dfbceb6ae849f2b277c9bc8562ed..c54e4be3abf9203b74ad2a5df58700aa9f58008e 100644 GIT binary patch delta 19 ZcmaFQ{hpgEpO=@50SL~m-pKWo6#zI~1+V}B delta 19 ZcmaFQ{hpgEpO=@50SK(?HgY{>1pqV&1n>X= diff --git a/SIRH/__pycache__/views.cpython-310.pyc b/SIRH/__pycache__/views.cpython-310.pyc index 3ba4f66279df596aa33dccb83805c4c198db95fc..612ae0644945a1a8ee9023dcd63e6d0de37ead80 100644 GIT binary patch delta 19 ZcmaFJ`H+(1N@|=jG*M0D^O?H*zsD0RShH1M>g? delta 19 YcmeBX>1N@|=jG*M00Qf}ja-aO03$#HGXMYp diff --git a/fonction_utilitaire/__pycache__/fonctions_utilitaire.cpython-310.pyc b/fonction_utilitaire/__pycache__/fonctions_utilitaire.cpython-310.pyc index a362d2addf02347a9f0a72f4b25f92d4a883484d..73a176d21a99278dd0dcb06638d21243f161a5ac 100644 GIT binary patch delta 19 ZcmdlbxJ!^LpO=@50SI!|Y~=IBk{iiw;7Zc9H|DOPdmND3+!s-cd-qzAsPR>FXwHYS?+7C#q1h(F>Sg*$FWXm`-le@#XoUX{&9Oe{-UPaige%B^HmTufR4=mXJjqZVwlC;uSiKDzWm{ zN?YqJD-Q@8`<^}^>xx@>-zBo-tF3cTvo#)V1&!+9yno-T22H`E*8SRM!*?lP!K&gR z@(Q8|fYGJF<1D(KLtr94i8znIL)+kGG@k-g`O`p`q~}h%sula(^X|e-JF({_g~C_H zyC`2xzAIEaAE9{*v4#U3j(sY#4tnJ_zTQD>B2b=cEU1gr-ng^2;w|0y;O(WA^+9*Z zJPzt)GMduqnN*jJGu$+oBl|`ph(%qGws+oqoXn5D*TMZmYG_?|{J+~46H|nRcm`OXeFsahs^Lgn8+q(_E9NtS4bno1AKxh!f53$b35g5c@ZKbC7YSSY+4tUj=Xw0*dA`5! zW3v<$i#Y?Xi~WE6-)4R&O;a8bX>YWvcCq>44(hoi9`GWV{QzDD%S;QRT zJmQjiqi~sgpzZ*d)S$4w(8BNpASnngqgb>b#*y^IGKS3ik?1DbttfoJ+tIy1+(5O) zO?A4sdG;>&TLkdpvcSl|?-u-eE%kNrn);K}`__Q&(M=;Pn1-|i^U+me;LYqk`l%6; z&y8IY6rAbY8Bd6$ZCmj)G<`wT3|g*qCH$@G5a zz}U|o7%UI^aaI7md6LKMLz?19nsclK$x}f!sIfAuu(1K%F~pb0a`0_7KBCT_q%ndN zs}9JE#YhX3HCF$^*i9`Nj|pphLm6cg1G;9olQD-1d=hhqai?SYJ;~J{*~!}u4;@cR z9!fp3<8^%INk0mm9`67<-04YA#!}CliKXB1d!FR6aJ(%U^Ny%M-j(@n$ukTW^ z1dhNa5DmbG;xZ7zr!j(UC0;|EL7YY4c8k{$xhp4Zc$+OA3srd;3m3v5FTPfU9U{Gbc5O|2BuTVE-iocr5PUVQc&@B`fMlZ4M5CUuxf8(bd1&*4z2BdRAY^>|my8@$j(O csFFAFzz}$x=!FU#9I4z%`5sJMOD&ejzb)D*1^@s6 diff --git a/gestion_conge/views.py b/gestion_conge/views.py index 338770c..6d9e0a6 100644 --- a/gestion_conge/views.py +++ b/gestion_conge/views.py @@ -135,66 +135,69 @@ def demander_conge(request): @login_required def liste_demande_conges(request): - """Vue de liste des demandes de congés en attente de validation selon le statut de l'utilisateur actuel""" + try: - employe = Employe.objects.get(user__username = request.user) + employe = Employe.objects.get(user=request.user) except Employe.DoesNotExist: return JsonResponse({ "success": False, - "message": "Votre profil Utilisateur n'est lié à aucun profil Employé. Veuillez contacter l'administrateur." + "message": "Profil employé introuvable" }) - try: - affectation = Affectation.objects.get( - employe=employe, - date_fin_daffectation__gte=timezone.now().date() - ) - except Affectation.DoesNotExist: - affectation = None + affectation = Affectation.objects.filter( + employe=employe, + date_fin_daffectation__gte=timezone.now().date() + ).first() + + is_direction = employe.user.groups.filter(name='direction').exists() if employe.chef: - print("chef") - conges_en_attente = Conge.objects.filter( - employe__departement = employe.departement, - validation_hierarchique = None + + conges = Conge.objects.filter( + Q(employe__departement=employe.departement) | + Q(employe=employe) ).order_by('-date_demande') elif affectation and affectation.role == "chef_projet": + employes_du_projet = Affectation.objects.filter( - projet = affectation.projet, - date_fin_daffectation__gte = timezone.now().date() - ).values('employe') + projet=affectation.projet, + date_fin_daffectation__gte=timezone.now().date() + ).values_list('employe', flat=True) - conges_en_attente = Conge.objects.filter( - employe__in = employes_du_projet, - validation_hierarchique = None + conges = Conge.objects.filter( + Q(employe__in=employes_du_projet) | + Q(employe=employe) ).order_by('-date_demande') - elif 'direction' in employe.user.groups.values_list('name', flat=True): - conges_en_attente = Conge.objects.filter( - validation_hierarchique = True, - validation_direction = None - ).order_by('-date_demande') + + elif is_direction: + + conges = Conge.objects.filter( + Q(validation_hierarchique=True) | + Q(employe__user__groups__name='direction') + ).distinct().order_by('-date_demande') else: - conges_en_attente = Conge.objects.filter( - employe__user__username = request.user + + conges = Conge.objects.filter( + employe=employe ).order_by('-date_demande') return JsonResponse({ "success": True, - "data":[ - { - **model_to_dict(conge), - "prenom_nom": f"{conge.employe.user.first_name} {conge.employe.user.last_name}", - "date_demande": conge.date_demande, - "nombre_jours": conge.nombre_jours, - "type": dict(conge.TYPE_CHOICES).get(conge.type), - "solde_conge": fonctions_utilitaire.solde_conge(conge.employe)["quota_annuel"] - } - for conge in conges_en_attente]}, - safe=False - ) + "data": [ + { + **model_to_dict(conge), + "prenom_nom": f"{conge.employe.user.first_name} {conge.employe.user.last_name}", + "date_demande": conge.date_demande, + "nombre_jours": conge.nombre_jours, + "type": dict(conge.TYPE_CHOICES).get(conge.type), + "solde_conge": fonctions_utilitaire.solde_conge(conge.employe)["quota_annuel"] + } + for conge in conges + ] + }) @login_required def validation_de_conge(request): diff --git a/gestion_employe/__pycache__/__init__.cpython-310.pyc b/gestion_employe/__pycache__/__init__.cpython-310.pyc index 446b36c7d3ff86bfd50e78a13fba665a1a117a34..7eb8cf8c73214b687c3a382f31972e915537d0ac 100644 GIT binary patch delta 18 YcmeBV>}2H1=jG*M0D^O?Cvw#T03#X%MF0Q* delta 18 XcmeBV>}2H1=jG*M00Qf}iCpynABO{l diff --git a/gestion_employe/__pycache__/admin.cpython-310.pyc b/gestion_employe/__pycache__/admin.cpython-310.pyc index 9e885bbfbc0009666675db66ccf8e8c2fbeeafe6..947a89b78409155f9947d913e052bded1aecf861 100644 GIT binary patch delta 19 Zcmeyu@`Z&fpO=@50SL~m-pG~31OPWF1ug&p delta 19 Zcmeyu@`Z&fpO=@50SK(?HgaV#0RS@A1a1HT diff --git a/gestion_employe/__pycache__/forms.cpython-310.pyc b/gestion_employe/__pycache__/forms.cpython-310.pyc index f0df9aa6d513524702652e15270bb221b4ae18ea..317d145c902d0a47ff76165e70c34d0065d4a56a 100644 GIT binary patch delta 19 Zcmdlcx=oZTpO=@50SL~m-pI9v3ji@c1s(tZ delta 19 Zcmdlcx=oZTpO=@50SK(?Hgc`u0st)R1YQ6D diff --git a/gestion_employe/__pycache__/models.cpython-310.pyc b/gestion_employe/__pycache__/models.cpython-310.pyc index e64a2f530009f101837d7ab462d4c663a5457b38..5fe7a42ba34a35610835eae7386a567aa709bc7d 100644 GIT binary patch delta 19 ZcmaE^{al+XpO=@50SGRw*~oQQ6aYJ!1?>O; delta 19 ZcmaE^{al+XpO=@50SH3tH*(z-1pqh71w#M; diff --git a/gestion_employe/__pycache__/urls.cpython-310.pyc b/gestion_employe/__pycache__/urls.cpython-310.pyc index c4747fbac9192d7631cd9c645d54affde06e1003..cafc2f8acc86f86b6c61f34388c9b35fef14a7ed 100644 GIT binary patch delta 19 ZcmaFP{hXUCpO=@50SI2L*~oR56#zHc1+@SG delta 19 ZcmaFP{hXUCpO=@50SHR#H*(!&1pqWU1rq=O diff --git a/gestion_employe/__pycache__/views.cpython-310.pyc b/gestion_employe/__pycache__/views.cpython-310.pyc index 01c89552817c627c711cec94f8781312486d529d..481b9bbaada86094fb4147dbc6363deeb6d728f8 100644 GIT binary patch delta 19 ZcmaD-@T7n%pO=@50SJ26Zsdxx002ST1yhz diff --git a/gestion_employe/templatetags/__pycache__/tags_personnaliser.cpython-310.pyc b/gestion_employe/templatetags/__pycache__/tags_personnaliser.cpython-310.pyc index cdb50e134b6d8ace8da7c4f69ba2fbe2b934aa84..2dc6580b495d86af966144597cdc50c36e85738e 100644 GIT binary patch delta 19 ZcmaFB@qmLXpO=@50SL~m-pCck0su6-1pEL1 delta 19 ZcmaFB@qmLXpO=@50SK(?Hgbir001y(1Uvu$ diff --git a/gestion_projet/__pycache__/__init__.cpython-310.pyc b/gestion_projet/__pycache__/__init__.cpython-310.pyc index 0164acfb11f59ed8a7f3c94c9275418cf70015f4..00339893870c450769de3b966ac0b48f7038ddb6 100644 GIT binary patch delta 18 YcmeBR>|o@|=jG*M0D^O?Cvw#R03!DULI3~& delta 18 XcmeBR>|o@|=jG*M00Qf}iClF6A7lf9 diff --git a/gestion_projet/__pycache__/admin.cpython-310.pyc b/gestion_projet/__pycache__/admin.cpython-310.pyc index 4c5a626b560c53f27aafc5a75c4776f0e49dd738..ec3bca329eb1fccc3d244778417e61e3cf23d57c 100644 GIT binary patch delta 19 ZcmdnVypx$LpO=@50SL~m-pI9{5dbel1o{8~ delta 19 ZcmdnVypx$LpO=@50SK(?Hgc_J1OO`W1Udi! diff --git a/gestion_projet/__pycache__/forms.cpython-310.pyc b/gestion_projet/__pycache__/forms.cpython-310.pyc index 90ef06612742c755fbff689a834ebef9b9d8ec27..d9a0c6b12b0eeb45fef7bdefcb1443874461688d 100644 GIT binary patch delta 19 ZcmX@5d`g)spO=@50SL~m-pF-85CAqB1$_Vj delta 19 ZcmX@5d`g)spO=@50SK(?HgX*h1OPF|1ib(N diff --git a/gestion_projet/__pycache__/models.cpython-310.pyc b/gestion_projet/__pycache__/models.cpython-310.pyc index c057aeaee23ee58842c094326f58807d2b4145c9..884b5ccc9c8759419ad356c4aa5b0dd962063cdb 100644 GIT binary patch delta 19 ZcmaE9{nDB%pO=@50SL~m-pF-d763i)1{MGS delta 19 ZcmaE9{nDB%pO=@50SK(?HgesU1pqmn1y%q6 diff --git a/gestion_projet/__pycache__/urls.cpython-310.pyc b/gestion_projet/__pycache__/urls.cpython-310.pyc index 6288b67b7f9417001241890a7e9c0555eff5149b..8383432d777afcd6537c620055f741c6d6463e8f 100644 GIT binary patch delta 348 zcmewCzpO=@50SFv7{K?$F!@%$u#6bqqK#l_t7pG0s?&1_pVee&5WlRy9xKF>H z7s`=IWzG^zk%jW)fIOiTc_>c-$P-Rcgz}VtJdqS-C{G2*6HQTt^3;Glu@rSEPXovk zPtk<(w17N`6m2L^2gs95(ba--^?+Qd6n!Yq0LYV0F$D3_#iL|WjDi_7jVE_7E|TF& zO3cj3Ni8iZ*018v$t*5O)rE^})?^A{+}y{kz{Ds!c|B_sKOa~@JWRo64z?4FY|6lJ nC{mt$joq5(9gxYxz{AMG#Kb(=kVBo34M;XJasx>#CXOxuSrb(i delta 295 zcmZ20^ixnfpO=@50SK(?{$v{RFfcp@agc!&kmCTv#Ss&=yEsKs*n62%8B;_j?$fWA zfpTP1nX?2_Mlop9LXjCMms-=gJdZwE9bK9GL?c2=4wDREoiZ|jr)(>iZFSK7q>e6HtgnpwDod!u!+`e1#mA=p6W zl4xVBDcD4EX>?VrIoJ$x8845njwwMU<`4Q~Ey0#pYp^xe7Hp%oifDVRBiIq^40gu4 zf?csdFc9kwc0*ewue#F`?BUhi2k$k!hS$QoSFPZ6JY9dMp*Vit4Zz$S>b+?2S9G&tt1bE+{W8UUJr5y?<9Ex$Xz@@@a#6Z>*%PKQvBszO&Yd#zu!+FKwDqD8(}yqOKi23yF96#=X8%hNVrQyUZv zHY3bl*tG+p6JSt2ZM(uMW!m1vYUG3VHu($t2-_$>vJb9W+THL*H9e_@=0##oO*YHx z9D{5!bJ|hPCU)WcweyLTh^X;ocvcOCXJ*t$GMv;B@ttA_ngd=@j%yAhjADN$hv~F< zBq_$_TTVYKlmBw|^-W-t%UmO*al@&`=A((@sxG$SNL;DV3_0a$VnZ_Ss%QJ^`0}VSw7;KYVU`xpf*NK zC%CESqx_0DzNZrVkmg%Z8bK%nFziRe(G0Z0K*YU#FOema+xxQO^b7N;d*&@Nh>=nkCatsUM}&m z?l6oAxM)(t9#fNt6I^IGk5kh_pcaI+SPw(?x+N=Xq>u|7BMu@gHP|SN2$k|En|NV) zZCN`@WR8?Iuo9eAbOT&sqC4}=@^+SYVjuE!!R?%k14^}UJYQ195yLeN5bOYfA~U`U$Pj(X`p`^5#FlGV71MN84~0W>Kmcb}&0}&$Wq_q*yfU07Epgrh zI|Fvp>r_Rm=2ym~x@0vMUC9#_i=N2k(A_XX_X4=BZsvr4FZ_#RP!VAO*+2Pko9&R@yVh&8$5P+9Pl{dadGQ| zwu_8ej(C&qlU82Di_cnNFS4B&ROCN;n$t=$kVzUM3hM3 zNYb#WF(8alJRd%;XIbbmQ*l`?6AKqWXPQ79N9hE@ml24E#ptpxTEvZ5L%YP6P+FEp zrAz52p^J{RFE1(v#}ya+yFc_g#L3Kfm1I7O(+xPCA3;Hwm+x1vV=-ChTj;^299?%{ zbR&&nVBM%ZfkAKy?FPGfj-eu8aI+#t8t%#C)kz@|La10tdl>Dkc1jdA;1Cn?!6WCP^71=>ne@HHa-qq0>khIba=5-TP3gH6`UFasbB$DW<6^`vWRf7e zh-YM6KIMsQ4xERAn9~x+ti*t-Sb}RaTBM|KL-@J;puUscBYh3;l%K(osJpluL6aXf ztWW3NNM8Lk1r0k_qiRy69Uw=3a)yF)6*vuwMx~ybpBJjG!wHwA{8gyes{yPgM)C#F&xLjBCf?}MK5-_4q>mwBKIjZz6mUt`Gyija+f@%1X|G=qav9| zhNFd7ghJ=a*OVsqNBJiu!XC<8;}0-)MkZSZJZ3;~z8mCIEj_@bcUwlmRgJ9!?7ZCD z+M6Z<(Dw1EaaM3VWh3#3>_;-0COXuGNHoP&)AakX9!(X*|HZ=rw(tq4HA)LE5=db? z@n1RLR$qPrM-?QD474e%R$kLK$sWzz*VfM19{F7Rs}S^bhr*=1(6P@?HyeuacW|@< z04w#NdKL{eO~9F0f)xq^E!&UM075-N1HvkVJYfg2H!=mQXAuglhN4jpo4s~aOTzhRZYKS5 ztZO@af^I!e47%jQUH|rd3kQB1;V}dSL6esP_fM^4-eO7$v`0LSK=#nB?fY1y2$Rwj z;rxE1$aCG*2gx@v?6~Nl++~iUpkNbbt>Mh6zud0cFdX(kg;1_T*1Y|a^|Z3*GVMKO zZ1+lb9e`<1czS_hYKW`Tsbs)S>1NoHT2iQD4X)jbupZ$lglFWbHN)vX5VJ>RW5HcI zANSATm|C1pLFh&pLCBx5Kg8mS3P8gS@jN!afPku)XRpZx^IEPzt>MZ!#JsQ@EL`Y1 zd7`(Gsq!1W{p>Pb*MHyp#%^5JD2{4s?o+`f>Tm&~GVMLKd7;7e)d5@oVNDfAQA$Kj zy<4#(9*h`3`S-O=2e#pC&Zu@&gr}ow;o{g(XWjyG&2VeW=I5<&VbbxWD5d*=m+k}Q z%>A*qSiF)s)VGhdVJ;aSjW3Q7&tQ!$mPl$d;w6y98Tq?)x1=*51}e=gqy)qm88%>; zHZLdyWEyQjIE5Kya&Hui`TV4a=vYU))F;yQXV^qjyo%DZ2rV?6c-SFd?{9&l@q_+e z_PT5wc#~=JuLE82r?DSt={B__T9bXYoxAr;?iYE=L*p0fpBp=(jB|QXU z!1sAguEvQJgl+`l^RH3*4Z>RpKSg*Mfw;1awPQfroE_Qk>~`!+Ib2aAKt{SW_~n0#0E(F z+fg~BiTEYL8HC>g95Bj>^PzA&o{G|46av{cGMfGgcA>GPKV@2;HhJnVnr%2}4poTP zaOgV-OKpR%iwUeXxs6gjBDLAUxgANqH{xXP%fE~S90v5<8`vi6N2fM=_*^(Xn^+6G zrY@Y&V0d#iNe!x8SXG*>!cTpnO~beOy`yb=J=j#9ZQ|2w!Fei-@M3jUwi>^Q^;}B{ zw)kdM_-O|&#@Qcl)>0QydVZ|QUj`j0(~as}FLR&BcB+u0V~uo;h2IX$)hNMzIF7D( zLO6zS65%d{dl1edJY=~U@KF?>KzI(} zGQukeuOnPRK%R@Y5w0Sj&kIPCkCSr*EJ;PxF*sx_dR+F6*UBB^owa3dW>w&+gr@|) P;QOr&Ao=C3<4yku97OD) delta 5164 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 diff --git a/gestion_salle/__pycache__/__init__.cpython-310.pyc b/gestion_salle/__pycache__/__init__.cpython-310.pyc index ae1b83c9d28d40cf4881fc5d09913e967a0500f5..85587a64b0e23703bb7af09a4db1ac2d2d1f1780 100644 GIT binary patch delta 18 YcmZo?Y-i-k=jG*M0D^O?Cvw#S03y@`KL7v# delta 18 XcmZo?Y-i-k=jG*M00Qf}iCnb+A3+0u diff --git a/gestion_salle/__pycache__/admin.cpython-310.pyc b/gestion_salle/__pycache__/admin.cpython-310.pyc index 0b5c756ecd9dcb4c82f052b166a8beb6ec06513c..082cec0f01034ad670e67c2c11d88169c8681278 100644 GIT binary patch delta 18 YcmdnMxPg%?pO=@50SL~mp2)Qf04Q$+x&QzG delta 18 YcmdnMxPg%?pO=@50SK(?CUPwU03_T4`Tzg` diff --git a/gestion_salle/__pycache__/apps.cpython-310.pyc b/gestion_salle/__pycache__/apps.cpython-310.pyc index 676e30cecaca7526e0ca53d5090f59bd6931cdb3..3e0b9e8d3e1d67ef83f80bacaa6eb1c80610c34a 100644 GIT binary patch delta 19 Zcmeyw^ofZppO=@50SL~m-pG}~2mm&i1tS0e delta 19 Zcmeyw^ofZppO=@50SK(?HgaV!0st~a1Y-aI diff --git a/gestion_salle/__pycache__/forms.cpython-310.pyc b/gestion_salle/__pycache__/forms.cpython-310.pyc index d7b437410b9fcecb8c79d7bf274050a0fccde3cf..15fd593618a79a73f4598d827d244295c7b8314f 100644 GIT binary patch delta 19 ZcmbQjGlhpMpO=@50SL~m-pIwp1^_Aj1R?+c delta 19 ZcmbQjGlhpMpO=@50SK(?Hga*X0RSbc17ZLG diff --git a/gestion_salle/__pycache__/models.cpython-310.pyc b/gestion_salle/__pycache__/models.cpython-310.pyc index d02440b4bd676c2478a515daf396e3ea1fb574d4..563752a46bd9524056e06222831eaf0992e7fb54 100644 GIT binary patch delta 22 ccmcb|eUF|BpV@TRGds?i z8I!oPSs_OPDOe>s>JuPrAw}{70+c>gs(A1lQlAh44M+&ycp$0@;sMfx|3B;4o68I0 z0gv|ccmDIw`LE}k+4=mf(^)T*F%|fm`^Ej{_hxTr$Gav`6s9oZC@!fHf}A?kRcor` zs-wAjO_yAA3^!3rxXD^lj&&#Hnl;l+*V1xqIF_5KWh75HSvOb9NuG4_?m%ro@|06> zi?t$flck-K+b!41M6q>d+35yl8J4}Nt&`f|?l{NtH?`Uj%nz`_O$BC#afTJ`k%q=f ztPHcGdv6c2A^G;$o@AJfNXht~WR#6b$wW^w1V+c%gcMD($$6zZ^;b-gI7dFp7J=m8 z_X_;{uZtP_diRqc6)7!qopfkKH`7}R|0JR|~TeO&y(nC`CS&e{H?ZtW!*zLfsnsK7%q|FOpNZitAhGN4H>OmOr3`j66R=@6tN5zNwsCv||-u=C< zlGoxCgVmRCMO10mUAsy-#?B`IV%lU2IMHzG!8VbywbJ}`Kd@bluHkVP+_@UsB9pvB z4vP1a^%Jq#XmUST#KmIW4|sDWPC4~m3D4rX#uB$7b+J)jS+UzpR8nt=@23u(G$7xB z&11v9*7O5EPD55h+h25G6zfY~*bZV9Qp61ms>pFy^KtQ~)Pak!?s`G9!G}>af<_WO zBP_O-LJm0(78%-1b9*n1{5WcV1>tiD&-dQ*AgR}aZH3Q^wZyTm-fT1b8s^cz13=Xh z$r1}5`oJ_ylB6bi{7F)aBteciOf^E`(HnFuw;2$m#%B#BFOzQkZE-*Kp*u< z3AxErI4c_`kL)zU83bt&i@s|XnS6)F^!RgJI`Fvd*gS*vUh>?Pv)=)AAA8zRs7~)2 zggzXm;$G&J+5HF;FkMx9z3@%o()a#&#O3T{`3B7Rcxh%StfFJqI1}$?-%mkf&*Ezp z@p`VBmNB4%d_vsF&7YNaUcm9QqLYdkVr4}*z&!0e+Z~hV0KV%I*WaJw?OVs0%U2DP%RIgli%${4LEcgG5(=h zS>C>TCqGS$w?UOR#76_C$gXC8b@`6p-oHkBXm_PmqTAb9pMEwhDN2 zio_sW2+@;^cwNY&yuyw=dAj#%u@`>$S$N^A^~WxNiodh%^iJ;f&bBQ+9w?PBf*PL! z_*e2}uMG+26=>?83?9x;3gT+SZIPwPJA!_y228MC5ciHm( zt?+A@@DBo*DjdvId~tY+yd#VEM-c86&-tHA6@+UDPZjRNk++RQICDfC9-Zx;ua5oSN(Yr|D*QS+ zgU8ylE5&=6>95pZK)J6{g}uwv(BQa|*X0E`#EefZL;D+#K>K`kN?aKG`;9u9VF0m; z-(qbX1_-MN?;xOhU%SZ0SpZp_JmY#SbnLSPM*edEmV$S99v=MPd#DQ6>Nn_+NeUJ% O=LsEwUk-jlCGsC*Ef1~$ delta 3455 zcmbVOON<;>6|Gml{#AEZ|K`*4t1)4Qj*S(^HdbQCaUeE0C|1Bf(F%;p{c22=tE$JZ zs>kuDMokz?kwCKuZ-o;}JrV-VG71X>Sp->;SilYmR2$Yv*##64z~SE4?e_SyK$%vZ zIq$yTefQq??)~ZWcb_YDi^aSIe;@ziKkl8@+ojoll}HkmDDkB>{+E3c$ZeS*S9~Q< z+p6HIuLXKr7hLl*LAIR@a_yXG>wZ2cv@2WHz8Jm*(}Y8y6$ zwex;0sJH8+FVO-u{6;X*o*{v2Qn?f=-mdwyulvwTgv1pFYi$M#NoR?Y)e@8=|<1dmw zl`6o>@O=ZmNa9WTmHvluE|I+a7TJ^&c~IDq*oTSi83UPWJ7iNCaUHli;u+xDh-ZQ8 zBc21E8Sy;u?1&eD=SJKBo==oSy++t(TuewG8cL!idXhc?lT1$whcoV?t zf=vQzjFf>9gZ>nq5CbPiLOAK*zHBPV!tm)k#dsRG*&?*Lt-zKUIjA$sy*oG-3I@k4c59*)OWA=u)wn2>D=9=4zui@6*ytf zTK?|CYlsDwt&YvC^=`}@YmIeRUEjJGyS@u9aeB-Omq825ckk|6cL%Uirx)HIb~;$| zyEmPK)+MLsf+`zUryIt0ryj$e{<2L2H*}+ziG}z;?aQqk|42JjW<}5y6{q&isJFz6 zdXq%&Kdmc-AJ!K8&{M)At*ju1cHpEr>N2N;XHQiWT)^3@z8!bqi5UOMz!dn-!xvQn zu1bmYeQlFKm`HES*X8rluCz;1*`>R3Dj$3%E$p!>+Yd7Uc$zz~m_Gp)h&$b2?c^z3 zO$X2=o#>x$OuHd<-r%HEKa}R3aK(;eCybqz%$hJL)uY&sd+{z|N3dy}4OhD?0KZ-D zIcNBK=9grV&t>fbD`B@9+3OB}FMDw!zv{9mUKt+Ow?~v~xut`Jb=&Vb(F&@R>fj+T zaH@5>y)aIdup2Pcu2o_946r7*bNhJFH2cqB^BBUb2+t!N2S_vMC+Cg${)s_;2<4hM z89FEWF@UVpNr@Qnlker#Jjn`V>zhsWWR_EAZ{`11+r4zu}YY4)4y1lmMgfx}cuCZ^T^jioo@S1UY zUYzcAY>)f~3{SzX0G#9N#(pKouJG?P>ijpxbNXTII?6vaydTT~9eIn@k>^kHyRTADkltvX(M*jg50qy}c9pxzc=N6@(FH zKd=#zHLy*Vb@-d5UuW0>96!fTmRkj(pxFHgXXW$9#V#*k|C3Y~15y7}KY!t+3l}d4 zn=-r??At#x=Q=Jjp`SL?kD@@>71vA6J(pv}i@M=nwQ)d|Id z5)qhyf34Bvzp6DR$GQJw=z$~!_0lz&Is7B@3^%81#NmH!EM#O%bpw^(YtSQ%jddRS z1Dg+ycL|%b0H0;Q-VMP{%!2s)+r*NIeq{>?7Q!NLOukO`aW;8$XpPw~Y7LBhb{gRf z!jtZxxcS2C!vMx{HH1lo%OYSkCxCDiagY|TI`PVC&-cZP$}lb;4c{6(t1jfnz26Ji%_RcG5L6yns!-J>TSS+>2dV3ZM72a&$tB7lkL6O_FL(x{altE6 zon~O0l2?WjCM%c;EEiW`QS>iVQ(jG!K2VT(^+AI|p#~!iXibb;MQCBoRJwy~3f7yx zN}wLYG6_I4@`G)b-MTViodIC&4_ymI0l7LNnI3u*omrp42Yb(wg^hVPrWUSB+* z4v!*Ayr?%|o6(Dc#Y$|mC*D>5>de&9Kfu_?0x(46R7n*R-RHWJCAzFaEWJkZME|d$ zvp%kBu?_ggZ_j+v7a5@gtyFQtnEAlib%YoJqfboP6Tae|I0PMO_C(O7@J5`(Iw*P; kAS(^CGv?X*c^WdfY?9I`c`8q;hFk~5rr|5YH&G|#fACNPEC2ui