
    piC                        S SK JrJrJrJrJrJr  S SKJrJ	r	J
r
  S SKrS SKrS SKJr  SSKJrJr  SSKJr  SSKJr  S	S
KJrJrJr  S	SKJrJrJr  \" 5       r\RA                  SS\S9S\4S j5       r!\RE                  SS\S9\" S5      \" S5      \" \5      4S\S\#S\#S\4S jj5       r$\RA                  SS\S9S\4S j5       r%\RE                  SS\S9\" S5      \" \5      4S\S\#S\4S jj5       r&\RA                  SS\S9S\S\#4S j5       r'\RE                  SS \S9\" S5      \" S5      \" \5      4S\S\#S\#S!\#S\4
S" jj5       r(\RA                  S#S$S%9S\4S& j5       r)\RA                  S'S(\S9S\4S) j5       r*\RE                  S'S*\S9\" S5      \" S5      \" S5      \" \5      4S\S+\#S\#S\#S\4
S, jj5       r+\RA                  S-S.\S9S\4S/ j5       r,\RE                  S-S0S%9\" \5      4S\S\4S1 jj5       r-g)2    )	APIRouterRequestForm
UploadFileHTTPExceptionDepends)HTMLResponseRedirectResponseJSONResponseN)Session   )	templatesBASE_DIR)get_db)	auth_crud   )rotate_sessionpwd_contextcurrent_user)generate_password_reset_tokensend_password_reset_emailverify_password_reset_token/loginlogin)nameresponse_classrequestc                 >   #    [         R                  " SU S S.5      $ 7f)N
login.htmlr   errorr   TemplateResponser   s    6/home/mario/Escritorio/thel4footbal/app/auth/routes.py	login_getr&      s     %%lRV4WXXs   
login_post.emailpassworddbc                 d  #    UR                  5       R                  5       n[        R                  " X45      nU(       a  [        R                  " U5      OS nU(       a  [
        R                  " X&S   5      (       d  [        R                  " SU SS.5      $ [        U 5        [        US   5      U R                  S'   US   U R                  S'   US   S:X  d  US	:X  a  [        U R                  S
5      SS9$ US   S:X  a  [        U R                  S5      SS9$ [        U R                  S5      SS9$ 7f)Npassword_hashr   u   Credenciales inválidasr    iduser_idroleadminadmin@admin.esreservas_dashboard/  urlstatus_codedocente	dashboard)striplowercrudget_user_by_emailuser_to_dictr   verifyr   r#   r   intsessionr
   url_for)r   r(   r)   r*   
email_normuser_ormusers          r%   r'   r'      s    $$&J%%b5H*24X&D{))(4IJJ)),GVo8pqq7!$T$ZGOOI"6lGOOFF|w*0@"@GOO4H$IWZ[[	f	"GOOI$>CPPGOOK$@cRRs   D.D0z/recuperar-passwordrecuperar_passwordc                 @   #    [         R                  " SU S S S.5      $ 7f)Nrecuperar-password.htmlr   r!   successr"   r$   s    r%   recuperar_password_getrJ   $   s"     %%&?W_cptAuvvs   recuperar_password_postc                 P  #    UR                  5       R                  5       n[        R                  " X#5      nU(       aI  [	        U5      n[        U R                  5      R                  S5      n[        X5U5        [        SU 35        [        R                  " SU S SU S3S.5      $ 7f)N/zINFO: Recovery email sent to rG   zSi existe una cuenta con u-   , recibirás un correo con las instrucciones.rH   )r9   r:   r;   r<   r   strbase_urlrstripr   printr   r#   )r   r(   r*   rB   rD   tokenrO   s          r%   rK   rK   (   s     $$&J!!"1D-j9w''(//4 	"*X>-j\:;%%!2:,>kl	
 s   B$B&z/reset-passwordreset_password_getrR   c                    #    [        U5      nU(       d  [        R                  " SU SS S.5      $ [        R                  " SU US S S.5      $ 7f)NrG   uL   El enlace de recuperación es inválido o ha caducado. Vuelve a solicitarlo.rH   reset-password.html)r   rR   r!   rI   )r   r   r#   )r   rR   r(   s      r%   rS   rS   ?   s`     '.E))*CcF
  	 %%&;	>  s   A
Areset_password_postconfirm_passwordc                 :  #    [        U5      nU(       d  [        R                  " SU SS S.5      $ X#:w  a  [        R                  " SU USS.5      $ [        U5      S:  a  [        R                  " SU USS.5      $ [        R
                  " XE5      nU(       d  [        R                  " SU S	S S.5      $  [        R                  " XFR                  U5      nU(       d  [        S
5      e [        R                  " SU USS S.5      $ ! [         a    [        SSS9ef = f7f)NrG   z4El enlace ha caducado. Por favor solicita uno nuevo.rH   rU   u   Las contraseñas no coinciden.)r   rR   r!      0   La contraseña debe tener al menos 6 caracteres.zUsuario no encontrado.zFalied to updatei  u$   Error de configuración del servidorr6   detailu/   Tu contraseña se ha actualizado correctamente.)r   rR   rI   r!   )r   r   r#   lenr;   r<   set_user_passwordr-   	ExceptionAttributeErrorr   )r   rR   r)   rW   r*   r(   rD   updateds           r%   rV   rV   P   sJ    '.E))*CKF
  	 #))*?5B
  	 8}q))*?GB
  	 !!",D))*C-F
  	\((WWh?.//  %%&;D	>  	  \4Z[[\s   B0D33D &DDDz/logoutlogout)r   c                 R   #    U R                   R                  5         [        SSS9$ 7f)NrM   r3   r4   )r@   clearr
   r$   s    r%   rb   rb      s"     OO55   %'z	/registerregisterc                 t   #    [        U 5      nU=(       d    SSSS.n[        R                  " SU S US.5      $ 7f)N r   r(   phoneregister.htmlr   r!   rD   r   r   r#   )r   mectx_users      r%   register_getrp      s<     	g	B;b2;H%%o7UYck7lmms   68register_postr   c           	        #    UR                  5       R                  5       n[        R                  " XE5      nU(       a-  [        R
                  " SU SUR                  5       USS.S.5      $ [        U5      S:  a-  [        R
                  " SU SUR                  5       USS.S.5      $ [        R                  " XAR                  5       XSSS	9  [        R                  " XE5      n[        R                  " U5      n[        US
   5      U R                  S'   US   U R                  S'   US   S:X  d  US:X  a  [        U R                  S5      SS9$ [        U R                  S5      SS9$ 7f)Nrk   zEse email ya existerh   ri   rl   rY   u'   La contraseña debe tener 6+ caracteresalumno)r/   r-   r.   r/   r0   r1   r2   r3   r4   r8   )r9   r:   r;   r<   r   r#   r]   create_userr=   r?   r@   r
   rA   )	r   r   r(   r)   r*   rB   existing_userrC   rD   s	            r%   rq   rq      s`    $$&J**2:M))*?RVR\R\R^is  A  JB  C
 	
 8}q))*Sfjfpfpfr  ~H  SU  ^V  W
 	
 	Rz(K%%b5HX&D!$T$ZGOOI"6lGOOFF|w*0@"@GOO4H$IWZ[[GOOK$@cRRs   E#E%z/academy-registeracademy_register_getc                 R   #    [        U 5      n[        R                  " SXS.5      $ 7f)Nzacademy-register.html)r   rD   rm   )r   rn   s     r%   rv   rv      s+     	g	B%%( re   academy_register_postc                   ^#    U R                  5       I S h  vN nUR                  S5      =(       d    SR                  5       R                  5       nUR                  S5      =(       d    SR                  5       nUR                  S5      =(       d    SnUR                  S5      =(       d    SR                  5       nUR                  S5      =(       d    SR                  5       nU(       d
  [	        SSS	9eU(       a  [        U5      S
:  a
  [	        SSS	9eU(       a  [        U5      S
:  a
  [	        SSS	9eU(       a  [        U5      S
:  a
  [	        SSS	9eU(       a  [        U5      S:  a
  [	        SSS	9eUR                  S5      (       d
  [	        SSS	9eUR                  S5      (       d
  [	        SSS	9eUR                  S5      (       d
  [	        SSS	9eUR                  S5      (       d
  [	        SSS	9eUR                  S5      (       d
  [	        SSS	9eUR                  S5      (       d
  [	        SSS	9eUR                  S5      (       d
  [	        SSS	9eUR                  S5      (       d
  [	        SSS	9eUR                  S 5      (       d
  [	        SS!S	9eUR                  S"5      (       d
  [	        SS#S	9eUR                  S$5      (       d
  [	        SS%S	9eUR                  S&5      (       d
  [	        SS'S	9eUR                  S(5      (       d
  [	        SS)S	9eUR                  S*5      (       d
  [	        SS+S	9eUR                  S,5      (       d
  [	        SS-S	9eUR                  S.5      (       d
  [	        SS/S	9eUR                  S05      (       d
  [	        SS1S	9eUR                  S25      (       d
  [	        SS3S	9eUR                  S45      (       d
  [	        SS5S	9eUR                  S65      (       d
  [	        SS7S	9eUR                  S85      (       d
  [	        SS9S	9eUR                  S:5      (       d
  [	        SS;S	9eUR                  S<5      (       d
  [	        SS=S	9eUR                  S>5      (       d
  [	        SS?S	9eUR                  S@5      (       d
  [	        SSAS	9eUR                  SB5      (       d
  [	        SSCS	9eUR                  SD5      nU(       d
  [	        SSES	9eUSF:X  a   UR                  SG5      (       d
  [	        SSHS	9eUR                  SI5      (       d
  [	        SSJS	9eUR                  SK5      (       d
  [	        SSLS	9e[        R                  " X5      n	U	(       a
  [	        SMSNS	9eS n
S nUR                  SO5      n[        USP5      =(       a    [        USQ5      nU(       at  UR                  (       ac   UR                  5       I S h  vN n
U
(       aC  [        R                  R                  UR                  5      SR   R                  5       =(       d    SSn[        R                   " XR                  5       X5SUXgSV9nS nU
(       a^  U(       aW   ["        SW-  SX-  SY-  nUR%                  SZSZS[9  S\U U 3nUU-  n['        US]5       nUR)                  U
5        S S S 5        S^U 3n0 mUR+                  5        H3  u  nn[-        U[.        5      (       a  M  US`;  d  M%  [1        U5      TU'   M5     U4Sa jn[        R2                  " XU" S&Sb5      U" S5      U" SSc5      U" S*5      U" S5      U=(       d	    U" SOSd5      Se9  [        R4                  " XU" SSfSg5      U" S5      U" SS"Sh5      U" S 5      U" S65      U" S85      U" S.5      U" SBSiSj5      Sk9
  [        R6                  " XU" SD5      U" SG5      U" SK5      U" SI5      U" S@5      U" Sl5      U" S<5      Sm9	  [        R8                  " XU" S45      U" S25      U" Sn5      U" So5      U" Sp5      Sq9  [        R:                  " XU" S5      U" SSr5      U" S$Ss5      U" S(St5      Su9  [        R<                  " XU" S,Sv5      U" S>5      U" S:Sw5      U" SxSy5      Sz9  S
S{KJ n  URC                  UUUUUR                  S5      UR                  S5      UR                  S*5      UR                  S5      UR                  S5      UR                  S5      UR                  S"5      UR                  S 5      UR                  S5      UR                  S,5      UR                  S.5      UR                  S:5      UR                  S<5      UR                  S>5      UR                  S@5      UR                  SI5      UR                  SK5      UR                  Sl5      UR                  SD5      UR                  S25      UR                  S45      S|9  [E        SZS}S~.5      $  G	N GN!! [         a  n[        STU 35         S nAGNS nAff = f! , (       d  f       GN= f! [         a  n[        S_U 35         S nAGNS nAff = f7f)Nr(   rh   r   r)   	firstNamelastNamei  zEl email es obligatorio.r[   r   zIndica tu nombre.zIndica tus apellidos.u(   Indica tu nombre (mínimo 2 caracteres).rY   rZ   dnizEl DNI es obligatorio.	birthDatez&La fecha de nacimiento es obligatoria.genderzEl sexo es obligatorio.
occupationzIndica si estudias o trabajas.
studyPlaceu   Indica dónde estudias.categoryu   Selecciona una categoría.currentTeamzIndica tu equipo actual.currentPositionu   Indica tu posición actual.dominantFootzIndica tu pierna dominante.preferredPositionu   Indica tu posición preferida.
parentNamez#El nombre del tutor es obligatorio.rj   u   El teléfono es obligatorio.parentEmailz"El email del tutor es obligatorio.cityzLa ciudad es obligatoria.foundUsu   Indica cómo nos conociste.trainingTypez Indica el tipo de entrenamiento.
commitmentzConfirma tu compromiso.videoPermissionu   Indica el permiso de vídeo.whatsappContentzIndica preferencia de WhatsApp.	strengthszIndica tus virtudes.
weaknesseszIndica tus defectos/mejoras.nervesConfidencez!Responde sobre nervios/confianza.
discomfortzResponde sobre malestar.	enjoymentu$   Responde sobre disfrute/motivación.recoveryu   Responde sobre recuperación.injurieszIndica historial de lesiones.physicalWorku$   Indica si has hecho trabajo físico.siphysicalWorkDetailsu>   Si has hecho trabajo físico, detalla dónde y cuánto tiempo.alcoholzIndica consumo de alcohol.smokingzIndica consumo de tabaco.i  u3   Ya existe un usuario con ese email. Inicia sesión.playerPhotofilenamereadr   z.jpgzERROR: Failed to read photo: rs   )r/   
first_name	last_nameappstaticuploadsT)parentsexist_okuser_wbz/static/uploads/z%ERROR: Failed to save photo to disk: Nrh   nullc                  N   > U  H  nTR                  U5      nUS;  d  M  Us  $    g )Nr   )get)keyskvaldatas      r%   pick#academy_register_post.<locals>.pick  s-    A((1+C,,
      whatsapp
birth_dateavatar)rj   r|   r   r   r~   r   teamclubpositioninjuryHistoryinjury_history)r   r   r   dominant_footr   r   training_typer   	chestPain)physical_workphysical_work_detailsr   r   r   
chest_painr   privacyAcceptancedataConfirmation	agreement)whatsapp_contentvideo_permissionprivacy_acceptancedata_confirmationr   study_placeparent_nameparent_email)r   r   r   r   found_usnerves_confidenceadditionalCommentsadditional_comments)r   r   r   r   )estadisticas_crud)r.   nombrer(   sexofecha_nacimientociudad	categoriaequipo_actualposicionposicion_preferidapierna_dominante	ocupacioncomo_nos_encontrotipo_entrenamientonervios_confianzamalestardisfruterecuperacionr   tabacodolor_pechotrabajo_fisicopermiso_videocontenido_whatsappr   )okredirect)#formr   r9   r:   r   r]   r;   r<   hasattrr   r   ospathsplitextr_   rQ   rt   r   mkdiropenwriteitems
isinstancer   rN   update_user_profileupdate_user_sportsupdate_user_healthupdate_user_consentupdate_user_guardiansupdate_user_marketingmodelsr   crear_estadisticar   )r   r*   r   r(   r   r)   r   r   r   existingphoto_content	photo_extplayer_photo	is_uploader.   avatar_pathuploads_dirr   	file_pathfr   vr   r   r   s                            @r%   rx   rx      s6	    DXXg$"++-335EXXf$"++-D$*H((;'-2446J*%+224I4NOOZ1,4GHHI*4KLL3t9q=4^__s8}q(4fgg 88E??-CH`"aa88K  #Nv(w"w88H]sKd%ee88L!!3Oo)p#p88L!!3Oh)i#i88J}Mi'j!j88M""-CPj*k$k88%&&mTq.r(r88N##=SQn+o%o88'((#Vv0w*w88L!!3Ot)u#u88GMcJh$ii88M""-CPt*u$u88F=SId#ee88ImLi&j j88N##=SQs+t%t88L!!3Oh)i#i88%&&mTr.s(s88%&&mTu.v(v88K  #Nd(e"e88L!!3Om)n#n88&''}Ux/y)y88L!!3Oi)j#j88K  #Nt(u"u88J}Ml'm!m88J}Ml'm!mHH^,M#Fl mmTXX.C%D%D4tuu88ImLh&i i88ImLg&h h%%b0H4ijjMI88M*Lj1SglF6SI\**	7"."3"3"55MGG,,\-B-BCAFLLNXRX	
 r::<x\f|G K		?"U*X5	AKdT:wi	{3H#h.Ii&!& ',XJ7K D

1a$$&&!fDG	 
 	R7J'K\2&\H~;d=(; 	B-0j!')<jI>*{#%>*J9IJ	 	B>*"#89YYj!$% 	R/0/0 3412{# 	r%}5}5-8	 	ri,{#13FG !57LM	 + ''XXh+.xx((:&hh}-+,88$78.1((<(((9-88N3((#56,'+&XXj)#xx	"HH[)xx/hh0188$561 ( 6 t:;;E  J 6  	71!566	7 '&  	?9!=>>	?s   ig"Vi1g( g%Ag( 5i	7h   hh  3iLi%g( (
h2h ihi
hh   
i*h>8i>ii).fastapir   r   r   r   r   r   fastapi.responsesr	   r
   r   r   secretssqlalchemy.ormr   databaser   r   models.baser   r   r   r;   depsr   r   r   email_utilsr   r   r   routerr   r&   postrN   r'   rJ   rK   rS   rV   rb   rp   rq   rv   rx    r   r%   <module>r     s#   P P J J 	  " *   & ; ; n n	H7<@YW Y AY XLF48ItTWyhopvhw Sg Sc S S^e S GS  !(<\Zw' w [w ")BS_`AEcZabhZi 7 3 PW  a, $8Vg c  W  %:<XLPQTIostwox  IP  QW  IX .w .s .c .il .  F . Y.b IH%6' 6 &6 KjFn n Gn
 [|L6:3idSViimnqir  CJ  KQ  CR S S S Scf Sx S MS. &<\Z  [  '>?@G C< C<g C< @C<r   