+
    iy                        ^ RI H t  ^ RIHt ^ RIHt ^ RIt^ RIt^ RIt^ RIH	t	H
t
HtHtHt ^ RIHtHt ^ RIHtHtHtHtHtHtHt ^ RIHt ^ RI H t  ^ RIt^ RIt^ RIHt ^ R	IHt ^ RIt]P<                  ! ]4      t R
t!R
s"R
s#R
s$Rt%R t&R# )    )datetime)generate_password_hash)_N)	Blueprintrender_templatejsonifyrequestsession)Flaskrender_template_string)get_companiesget_divisions_by_company'get_departments_by_company_and_divisionget_RequestTypeinsert_user_requestget_Correo_Solicitud_de_altaget_divisions_by_id)MIMEMultipart)MIMEText z7marisol.garcia@igsa.com.mx,markjisol.garcia@igsa.com.mxc                 .  a	a
aaa  ! V
3R  lR4      o	\         P                  ! \         P                  R7       \         P                  ! \        4      o
V P                  R4      R 4       pV P                  R4      R 4       pV P                  R4      R 4       pV P                  R	4      R
 4       pV P                  R4      R 4       pV P                  R4      R 4       p\        R\        4      pR oR oR oV P                  RR.R7      V	VVV3R l4       pR# )c                   B   <a  ] tR t^*t o RR ltRV3R lltR tRtV tR# )(PreRegister_routes.<locals>.EmailServiceNc                h   T;'       g!    \         P                  P                  RR4      V n        T;'       g!    \         P                  P                  RR4      V n        \         P                  P                  RR4      V n        \        \         P                  P                  RR4      4      V n        R	# )
u   
Inicializa el servicio de correo electrónico.

Args:
    sender_email (str): Correo electrónico del remitente
    sender_password (str): Contraseña del correo electrónico
EMAIL_SENDERzelephantSyC@igsa.com.mxEMAIL_PASSWORDz	5lEph@n12SMTP_SERVERzsmtp.office365.com	SMTP_PORTiK  N)osenvirongetsender_emailsender_passwordsmtp_serverint	smtp_port)selfr"   r#   s   &&&NC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\App\PreRegister.py__init__1PreRegister_routes.<locals>.EmailService.__init__+   sx     !- i i

~Oh0iD#2#c#cbjjnnEUWb6cD !zz~~m=QRD S!ABDN    c                j  < ^p\        V4      pRP                  V Uu. uF  qUR,          NK  	  up4      p^p\        V4      pRP                  V Uu. uF  qUR,          NK  	  up4      p^p\        V4      p	RP                  V	 Uu. uF  qUR,          NK  	  up4      p
V'       g   . pV'       d!   VP                  VP                  R4      4       V'       d!   VP                  VP                  R4      4       V
'       d!   VP                  V
P                  R4      4       \        '       d%   VP                  \        P                  R4      4       V Uu. uF*  qP                  4       '       g   K  VP                  4       NK,  	  ppVP                  RR4      pRRRR	R
RRR/pVP                  VR4      pTpV P                  V4      p V'       g   SP                  R4       R# \        4       pV P                  VR&   RP                  V4      VR&   VVR&   VP                  \        VR4      4       \        P                  ! V P                  V P                   4      ;_uu_ 4       pVP#                  4        VP%                  V P                  V P&                  4       VP)                  V4       RRR4       SP+                  RRP                  V4       24       R# u upi u upi u upi u upi   + '       g   i     LI; i  \,         d)   pSP                  R\/        T4       24        Rp?R# Rp?ii ; i)u>  
Envía una notificación por correo electrónico sobre una nueva solicitud de alta.

Args:
    request_data (dict): Datos de la solicitud
    recipients (list): Lista de correos electrónicos a los que enviar la notificación
    
Returns:
    bool: True si el correo se envió correctamente, False en caso contrario
, Correos,RequestTypeIDr   EMPLEADO#Nueva solicitud de alta de empleadoDISEUAz#Nueva solicitud de distribuidor EUADISCANu'   Nueva solicitud de distribuidor Canadá   DISMÉX'   Nueva solicitud de distribuidor MéxicoNueva solicitud de altaz*No hay destinatarios para enviar el correoFFromToSubjecthtmlNzCorreo enviado exitosamente a TError al enviar correo: )r   joinextendsplitvar_correo_mexstripr!   _build_email_bodyerrorr   r"   attachr   smtplibSMTPr$   r&   starttlsloginr#   send_messageinfo	Exceptionstr)r'   request_data
recipientsidcorreos_empitemvar_correo_empleados
correos_EUvar_correo_norteamerica_EUcorreos_CANvar_correo_norteamerica_CAN
email_listemailrequest_typesubject_mappingsubjectTitulo	html_bodymessageservereloggers   &&&                  r(   send_registration_notificationGPreRegister_routes.<locals>.EmailService.send_registration_notification8   s    B6r:K#'99+-V+$9oo+-V#W B5b9J)-PZ3[PZOOPZ3[)\&B6r:K*.))Q\4]Q\)__Q\4]*^' 
'%%&:&@&@&EF-%%&@&F&Fs&KL.%%&A&G&G&LM!>%%n&:&:3&?@ :DU{{}mekkm
U'++OR@L A?CD	O &)),8QRGF..|<I!LL!MN  (/"&"3"3 $		* 5%,	" x	6:; \\$"2"2DNNCCvOO%LL!2!2D4H4HI''0 D
 <TYYz=R<STU .W 4\ 5^  VB DC  7Ax@As[   KKK"K'0K'K? K? #B K? #AK,++K? ,K<	7K? ?L2
L--L2c                   VP                  RR4      pVP                  RR4      pVP                  RR4      p\        V4      pV'       dP   \        V4      ^ 8  d@   V^ ,          R,          pVP                  R4      P                  R4      P                  R	4      pR
RRRRRRR/pVP                  VR4      pTp	RV	 R2p
VR
8X  d   V
RVP                  RR4       RVP                  RR4       RVP                  RR4       RVP                  RR4       RVP                  RR4       RVP                  RR4       RVP                  RR4       R VP                  R!R4       R"X R#VP                  R$R4       R%2,          p
MV
R&VP                  R'R4       R(VP                  R)R4       R*VP                  RR4       R+VP                  R,R4       R-2	,          p
VR8X  d   V
R.VP                  R/R4       R02,          p
VR8X  d   V
R1VP                  R2R4       R02,          p
VR8X  d   V
R3VP                  R2R4       R02,          p
V
R4VP                  R5R4       R62,          p
V
# )7u   
Construye el cuerpo del correo electrónico en HTML.

Args:
    request_data (dict): Datos de la solicitud

Returns:
    str: Cuerpo del correo en HTML
	RequestIDzN/Ar0   r   
DivisionIDDivisionz()z''z""r1   r2   r3   z-Nueva solicitud de distribuidor Norte Americar4   r5   r6   r7   a<  
            <!DOCTYPE html>
            <html>
            <head>
                <style>
                html, body { 
                margin: 0;
                padding: 0;
                width: 100%;
                font-family: 'Montserrat', sans-serif;
            }
            .container { 
            width: 600px;  /* Ancho fijo en lugar de max-width */
            margin: 0 auto;
            padding: 20px;
            box-sizing: border-box;
            }
            body { 
                display: flex;
                justify-content: center;
                align-items: center;
                flex-direction: column;
                text-align: center;
            }
            .main-content {
                width: 100%;
                max-width: 600px;
                margin: 0 auto;
                text-align: center;
            }
            .title { 
                color: #2a5885; 
                font-size: 16px; 
                margin: 15px 0;
                font-weight: 600;
                text-align: center;
                width: 100%;
            }
            .message { 
                font-size: 12px; 
                margin: 0 auto 15px auto;
                text-align: center;
                max-width: 450px;
            }
            .data-table { 
                width: 100%;
                max-width: 600px;
                margin: 0 auto;
                border-collapse: collapse;
                border-spacing: 0;
                table-layout: fixed; /* Fija el ancho de la tabla */
            }
        
                
            .data-table th { 
                text-align: left; 
                padding: 8px 10px; 
                font-size: 10px; 
                margin: 0;
                line-height: 1.3;
                vertical-align: top;
                width: 10%
                overflow: hidden;
                background-color: #f2f2f2; 
                font-weight: 600;
            }
            .data-table td { 
                text-align: left; 
                padding: 8px 10px; 
                font-size: 10px; 
                margin: 0;
                line-height: 1.3;
                vertical-align: top;
                width: 70%;
                word-wrap: break-word; /* Permite que las palabras se corten */
                overflow-wrap: break-word; /* Para navegadores modernos */
                hyphens: auto; /* Permite guiones para palabras largas */
                word-break: break-word;
            }
                .data-table { 
        width: 100%;      /* Ocupa el 100% del contenedor */
        table-layout: fixed;  /* Crucial para controlar el ancho */
        border-collapse: collapse;
    }
            p {
                font-size: 12px; 
                margin-bottom: 8px; 
                text-align: center;
            }
            .data-table tr { height: auto; margin: 0; padding: 0; }
            .footer { 
                font-size: 10px; 
                color: #777; 
                margin: 15px auto;
                text-align: center;
                width: 100%;
            }
            .color1 { background-color: rgb(192, 197, 228); }
            .color2 { background-color: rgb(238, 238, 241); }
        .color3 { background-color: rgb(238, 238, 241); }
        
        
            td { 
                font-size: 12px;  
                }
                
            th { 
                font-size: 12px;  
                }
                
                
            </style>
            </head>
            <body>
                <div class="container">
                    <h2>u    </h2>
                    <p>Se ha registrado un nuevo usuario en la plataforma de elephant.  Por favor, revise la información .</p>
                    <br>
                    <table>
                        
                    
            a  
                        <tr>
                        <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left; width: 10%; ">Nombre</th>
                            <td class="color1" style="text-align: left; width: 30%;">	FirstName 
MiddleNameLastNameSecondLastNameuz  </td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                        <tr>
                        <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left;  width: 10%;">Correo Electrónico</th>
                            <td class="color2" style="text-align: left;  width: 30%;">CorporateEmailut  </td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left;  width: 10%;">Teléfono</th>
                            <td class="color1" style="text-align: left;  width: 30%;">ContactPhoneu|  </td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left; width: 10%;">Número de Empleado</th>
                            <td class="color2" style="text-align: left; width: 30%;">EmployeeNumberus  </td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left; width: 10%;">Compañía</th>
                            <td class="color1" style="text-align: left; width: 30%;">	CompanyIDur  </td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left; width: 10%;">División</th>
                            <td class="color2" style="text-align: left; width: 30%;">a  </td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                        
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left; width: 10%;">Puesto</th>
                            <td class="color1" style="text-align: left; width: 30%;">Positionz</td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                        
                        
                u  
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left;  width: 10%;">Razón Social</th>
                            <td class="color1" style="text-align: left;  width: 30%;">BusinessNameu  </td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                    
                    
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left; width: 10%;">Correo Electrónico</th>
                            <td class="color2" style="text-align: left; width: 30%;">ContactEmailur  </td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left; width: 10%;">Teléfono</th>
                            <td class="color1" style="text-align: left; width: 30%;">a  </td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                    
                        
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left; width: 10%;">Estado</th>
                            <td class="color2" style="text-align: left; width: 30%;">Statezp</td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                a  
                        <tr>
                        <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left;  width: 10%; ">RFC</th>
                            <td class="color1" style="text-align: left;  width: 30%;">RFCzt</td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                    a  
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left; width: 10%;">Ciudad</th>
                            <td class="color1" style="text-align: left;width: 30%; ">Citya  
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left; width: 10%;">Ciudad</th>
                            <td class="color1" style="text-align: left; width: 30%;">a  
                        <tr>
                            <th style=" width: 30%;" ></th>
                            <th class="color3" style="text-align: left; width: 10%;">Comentarios</th>
                            <td class="color2" style="text-align: left;   width: 30%;">Commentsu  </td>
                            <th style=" width: 30%;" ></th>
                        </tr>
                    </table>
                    
                    
                    
                    <div class="footer">
                        <p style ="font-size: 8px; ">Este es un correo automático. Por favor no responda a este mensaje.</p>
                    </div>
                </div>
            </body>
            </html>
            )r!   r   lenrA   )r'   rM   
request_idrY   rf   	Division_rg   rZ   r[   r\   r;   s   &&         r(   rB   :PreRegister_routes.<locals>.EmailService._build_email_body   s    &))+u=J'++OR@L%)),;J+Z8IS^a/$Q<
3#>>$/55d;AA$G
 AIID	O &)),8QRGFsf   !gyDx z) V WcVfVfgrtvVwUxxy  {G  {K  {K  LX  Z\  {]  z^  ^_  `l  `p  `p  q{  }  `@  _A  AB  CO  CS  CS  Td  fh  Ci  Bj jW XdWgWghxz|W}V~ W XdWgWghvxzW{V| }V WcVfVfgwy{V|U} ~V WcVfVfgrtvVwUx yV W_U_ `V WcVfVfgqsuVvUw xS. .`  W XdWgWghvxzW{V| }V WcVfVfguwyVzU{ |V WcVfVfguwyVzU{ |V WcVfVfgnprVsUt u5 @  9, !W XdWgWghmoqWrVs t	 D  8+ !V WcVfVfgmoqVrUs t	 D  8+ !V WcVfVfgmoqVrUs t	 D  X YeXhXhisuwXxWy z	 D& Kr+   )r"   r#   r&   r$   )NN)N)	__name__
__module____qualname____firstlineno__r)   rb   rB   __static_attributes____classdictcell__)__classdict__ra   s   @r(   EmailServicer   *   s     	CQ	f^	 ^	r+   r   )levelz/registrationc                      \        4       p V '       g   \        RRR7      # \        RV . . R7      #   \         d&   p\        RT 24       \        RRR7      u Rp?# Rp?ii ; i)uM   
Renderiza la página de registro principal con las compañías disponibles.
registration.html*   No se encontraron compañías disponibles.rC   )	companies	divisionsdepartmentsz[Error en /registration]: u1   Ocurrió un error inesperado. Intenta más tarde.N)r   r   rK   print)r   r`   s     r(   registration(PreRegister_routes.<locals>.registration  sm    
	s%I&':Bnoo"##	   	s.qc23"#6>qrr	ss   0 0 A AA A z"/get_divisions/<string:company_id>c                     \        V 4      pV'       g   \        RR/4      R3# \        V4      #   \         d(   p\        RT 24       \        RR/4      R3u Rp?# Rp?ii ; i)u@   
Obtiene divisiones por compañía ID y las devuelve como JSON.
rC   u2   No se encontraron divisiones para esta compañía.  z[Error en /get_divisions]: u3   Ocurrió un error inesperado al obtener divisiones.  N)r   r   rK   r   )
company_idr   r`   s   &  r(   get_divisions_Preregister5PreRegister_routes.<locals>.get_divisions_Preregister  sp    
	b0<I)]^_addd9%% 	b/s34G%Z[\^aaa	b   !/ 
/ A!AA!A!z9/get_departments/<string:company_id>/<string:division_id>c                     \        W4      pV'       g   \        RR/4      R3# \        V4      #   \         d(   p\        RT 24       \        RR/4      R3u Rp?# Rp?ii ; i)uY   
Obtiene departamentos filtrados por compañía y división ID y los devuelve como JSON.
rC   u4   No se encontraron departamentos para esta división.r   z[Error en /get_departments]: u6   Ocurrió un error inesperado al obtener departamentos.r   N)r   r   rK   r   )r   division_idr   r`   s   &&  r(   get_departments_Preregister7PreRegister_routes.<locals>.get_departments_Preregister  sp    
	eA*ZK)_`acfff;'' 	e1!56G%]^_addd	er   z/registrationMXc                      \        R4      #   \         d&   p \        RT  24       \        RRR7      u Rp ? # Rp ? ii ; i)uB   
Renderiza la página de registro para distribuidores en México.
zregistrationDistMX.htmlz[Error en /registrationMX]: AccessDened.html'   Ocurrió un error al cargar la página.r   Nr   rK   r   r`   s    r(   registrationMX*PreRegister_routes.<locals>.registrationMX  sE    
	h"#<== 	h045"#5=fgg	h   
 =8==z/solicitud_de_altac                     \        4       p \        4       pV'       g   \        RRR7      # V '       g   \        RRR7      # \        RVV . . R7      #   \         d&   p\	        RT 24       \        RRR7      u Rp?# Rp?ii ; i)	uC   
Renderiza la página de registro para hacer la solicitud de alta.
r   r   r   z$No se encontraron datos disponibles.zsolicitud_de_alta.html)r   RequestTypesr   r   z[Error en /solicitud_de_alta]: N)r   r   r   rK   r   )r   r   r`   s      r(   solicitud_de_alta-PreRegister_routes.<locals>.solicitud_de_alta  s    
	l*,L%I&':Bnoo&':Bhii"(#)   	l3A378"#6>jkk	ls-   (A A A  A B A;5B ;B z/registrationEXPc                      \        R4      #   \         d&   p \        RT  24       \        RRR7      u Rp ? # Rp ? ii ; i)uG   
Renderiza la página de registro para distribuidores internacionales.
zregistrationDistExport.htmlz[Error en /registrationEXP]: r   r   r   Nr   r   s    r(   registrationEXP+PreRegister_routes.<locals>.registrationEXP  sE    
	h"#@AA 	h1!56"#5=fgg	hr   formsc                6    Rp\         P                  ! W4      RJ# )zValidar formato de emailz0^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$N)rematch)rX   patterns   & r(   validate_email*PreRegister_routes.<locals>.validate_email  s    Exx't33r+   c                ~    \         P                  ! RRV 4      pVP                  4       ;'       d    \        V4      ^8  # )u+   Validar formato de teléfono más permisivoz[\s\-\(\)\.]r   )r   subisdigitrx   )phoneclean_phones   & r(   validate_phone*PreRegister_routes.<locals>.validate_phone   s9     ff_b%8 ""$>>[)9Q)>>r+   c                    . pV FA  pW09  g(   \        W,          4      P                  4       '       d   K0  VP                  V4       KC  	  V# )zValidar campos requeridos)rL   rA   append)datarequired_fieldsmissing_fieldsfields   &&  r(   validate_required_fields4PreRegister_routes.<locals>.validate_required_fields(  sB    $E DK(8(>(>(@(@%%e, % r+   z/submit-formPOST)methodsc            "      V  < R s R sR s \        P                  p V P                  R4      pVR8X  d6   ^p\        V4      pRP                  V Uu. uF  qDR,          NK  	  up4      s MVR8X  d6   ^p\        V4      pRP                  V Uu. uF  qDR,          NK  	  up4      pMIVR8X  d6   ^p\        V4      pRP                  V Uu. uF  qDR,          NK  	  up4      pMVR8X  d   \        sV'       g   \        RR	R
R/4      R3# R. RbOR. RcOR. RcOR. RdO/p	W9  d   \        RR	R
R,/4      R3# S! W	V,          4      p
V
'       d0   \        RR	R
R-P                  RP                  V
4      4      /4      R3# VR8X  dN   S! V R,          4      '       g   \        RR	R
R./4      R3# S! V R,          4      '       g   \        RR	R
R//4      R3# MVRe9   dP   R pS! W,          4      '       g   \        RR	R
R0/4      R3# R!pS! W,          4      '       g   \        RR	R
R//4      R3# MVR8X  d   S! V R*,          4      '       g   \        RR	R
R0/4      R3# S! V R+,          4      '       g   \        RR	R
R//4      R3# R1p\        P                  ! WR#,          4      '       g   \        RR	R
R2/4      R3# RR3RR4RR4RR5/P                  V4      pV'       d(   V P                  V4      Rf9  d   \        RR	R
R7/4      R3# R8VR9R:/pVR8X  d   TP                  R;V P                  R"R 4      R<V P                  R(R 4      R=V P                  R)R 4      R>V P                  R*R 4      R?V P                  R$R 4      R@V P                  R'R 4      RAV P                  R%R 4      RBV P                  R&R 4      RCV P                  R#R 4      RDV P                  R+R 4      REV P                  RFR 4      RGV P                  R54      Rg9   d   ^M^ /4       EMVRe9   d   TP                  R;V P                  RR 4      R<V P                  RR 4      R=V P                  RR 4      R>V P                  R R 4      R?V P                  RR 4      R@V P                  RR 4      RAV P                  RR 4      RBV P                  RR 4      RDV P                  R!R 4      REV P                  RHR 4      RGV P                  R44      Rg9   d   ^M^ /4       EM/VR8X  Ed(   TP                  RIV P                  RR 4      RJV P                  RKR 4      RLV P                  RR 4      RMV P                  RR 4      RNV P                  RR 4      RDV P                  RR 4      ROV P                  RR 4      RPV P                  RR 4      RQV P                  RR 4      RRV P                  RR 4      RSV P                  RR 4      RTV P                  RR 4      RUV P                  RR 4      REV P                  RVR 4      RGV P                  R34      Rg9   d   ^M^ /4       \        RWV 24       \        V4      w  ppV'       Ed   RXV9   d   VP!                  RX4      Rh,          MRYpV'       d   VVRZ&    S! 4       p. p^p\        V4      pRP                  V Uu. uF  qDR,          NK  	  up4      s ^p\        V4      pRP                  V Uu. uF  qDR,          NK  	  up4      p^p\        V4      pRP                  V Uu. uF  qDR,          NK  	  up4      p\         '       d[   TP#                  \         P!                  R[4       Uu. uF+  pVP%                  4       '       g   K  VP%                  4       NK-  	  up4       V'       dW   TP#                  VP!                  R[4       Uu. uF+  pVP%                  4       '       g   K  VP%                  4       NK-  	  up4       V'       dW   TP#                  VP!                  R[4       Uu. uF+  pVP%                  4       '       g   K  VP%                  4       NK-  	  up4       \        '       d[   TP#                  \        P!                  R[4       Uu. uF+  pVP%                  4       '       g   K  VP%                  4       NK-  	  up4       VP'                  VV4      pV'       d   \        R\V 24       M\        R]V 24        \        RR6R
V/4      # \        RR	R
V/4      R3# u upi u upi u upi u upi u upi u upi u upi u upi u upi u upi   \(         d"   p\        R^\+        T4       24        RYp?LyRYp?ii ; i  \(         d_   p\        R_\+        T4       24       ^ RYIpTP/                  4        \        RR	R
R`P                  \+        T4      4      /4      Ra3u RYp?# RYp?ii ; i)ir   RequestTyper1   r-   r.   r3   r4   r5   successFr^   zTipo de usuario no especificadoi  EMPFirstNameEMPLastNameEMPSecondLastNameEMPCorporateEmailEMPContactPhoneEMPEmployeeNumberEMPCompanyIDEMPDivisionIDEMPDepartamentIDEMPPositionEMPDirectSupervisorEMPPermissionTypeEU_BusinessNameEU_FiscalAddressEU_StateEU_CityEU_PostalCodeEU_LegalRepresentativeEU_PrimaryContactEU_ContactEmailEU_ContactPhoneMX_BusinessNameMX_RFCMX_FiscalAddressMX_StateMX_CityMX_PostalCodeMX_LegalRepresentativeMX_PrimaryContactMX_ContactEmailMX_ContactPhoneu   Tipo de usuario no válidozCampos requeridos faltantes: {}u   Email corporativo no válidou   Número de teléfono no válidou   Email de contacto no válidou-   ^[A-ZÑ&]{3,4}[0-9]{6}[A-V1-9][A-Z1-9][0-9A]$u   RFC no válidoEMPTermsEU_TermsMX_TermsTu(   Debe aceptar los términos y condicionesr0   Status	PENDIENTErr   LegalRepresentativePrimaryContactrs   FiscalAddress
PostalCodert   rv   ru   rn   rw   MX_CommentsTermsEU_Commentsrh   rj   EMPMiddleNamerk   rl   rm   ro   rp   rf   DepartamentIDrq   DirectSupervisorPermissionTypeEMPCommentszDatos procesados: zID: Nre   r/   u6   Correo de notificación enviado para la solicitud ID: z2No se pudo enviar el correo para la solicitud ID: r<   zError en submit_form: z#Error al procesar el formulario: {}r   )r   r   r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r3   r4   )1trueonT)r   r   r   T)rR   var_correo_norteamericar@   r	   formr!   r   r=   correos_mexr   formatr   r   updater   r   r?   r>   rA   rb   rK   rL   	traceback	print_exc)r   rY   rO   rP   rQ   rS   rT   rU   rV   r   missingemail_fieldphone_fieldrfc_patternterms_fieldprocessed_datar   r^   ry   email_servicerN   rX   
email_sentemail_errorr`   r   r   r   r   r   s                             r(   submit_form'PreRegister_routes.<locals>.submit_form2  s[
     ""$M	<<D  88M2L
 z):2>'+yyk1Zkdy//k1Z'[$)9"=
-1YYT^7_T^DYT^7_-`*):2>.2iiU`8aU`TiU`8a.b+*!,u@        
  
  #O4 2u;    
 /t\5RSGu@GG		RYHZ[     z)%d+>&?@@"!5!#A$    &d+<&=>>"!5!#D$    ? !55/%d&788"!5!#A$    0%d&788"!5!#D$    9 *%d+<&=>>"!5!#A$    &d+<&=>>"!5!#D$    Oxx(^<<"!5!#3$    J**:	
 c,  txx4<UUuI      +N
 y(%%"DHH->$C)4884Lb+Q$dhh/BB&G"DHH->$C#TXX.@"%E $((?B"?TXXj"5DHHY3488Hb1"DHH->$C ;$((:"6:S"SQYZ'  !55%%"DHH->$C)4884Lb+Q$dhh/BB&G"DHH->$C#TXX.@"%E $((?B"?TXXj"5DHHY3"DHH->$C ;$((:"6:S"SQYZ'  +%%."!= $((?B"? ;$dhh/BB&G$dhh/BB&G"DHH->$C$dhh/BB&G."!= $((?B"?#TXX.@"%E ;&1F(K$dhh/BB&G ;$((:"6:S"SQYZ' $ &~&678  3>BGWw:@G:KW]]6226QU
2<N;/%I$0NM "$J B">r"BK+/99R]5^R]$9ooR]5^+_(B!=b!AJ15Xb;cXbPTOOXb;c1d. B">r"BK26))Yd<eYdQU)__Yd<e2f/++"))FZF`F`adFe*wFeUinititiv=5;;=Fe*wx1"))F`FfFfgjFk*}FkUotozozo|=5;;=Fk*}~2"))FaFgFghkFl*~FlUpup{p{p}=5;;=Fl*~%~"))nFZFZ[^F_*qF_Uchcncncp=5;;=F_*qr "/!M!Mn^h!iJ! VWaVbcd RS]R^_` tw   
 uw    i 2[ 8` 9bJ 6_ <d
 =f +x*}*~*q ! I4S5E4FGHHI  	*3q6(34!5@GGAO   		s  'd? d? c+d? 	c#+d? c(d? 3d? (d? -Ad? 3d? d?  d? 5d? .d? 5&d? d? 9d? 
d? d? 05d? & d? &d? .M$d? d? %d >c-#d 2c2#d &c77d 
"d ,c<	c<d ,d 
d'd;d 
d (ddd ,"d d+d? d  d .d? /d =d? d? d? -#d d<d72d? 7d<<d? ?f(
Af#f(#f(N)loggingbasicConfigINFO	getLoggerr|   router   )appr   r   r   r   r   r   r   r  r   ra   r   r   r   s   &        @@@@@r(   PreRegister_routesr  )   s6    F gll+x(F
 	YYs  s* 	YY34b 5b 	YYJKe Le 	YY !h "h 	YY#$l %l2 	YY!"h #h gx(E4
? 	YY~xY0W 1Wr+   )'r   werkzeug.securityr   flask_babelr   r   pyodbcr
  flaskr   r   r   r	   r
   r   r   Consultas_SQL.registrationr   r   r   r   r   r   r   rE   r   email.mime.multipartr   email.mime.textr   r  r|   ra   r\   rR   r   r@   r   r   r+   r(   <module>r     s{     4  	   G G /      	 . $ 			8	$
   Gar+   