&Rc@sddlmZmZddlmZddlmZddlmZddl m Z ddl m Z ddl mZmZmZddlmZdd lmZdd lmZdd lmZdd lmZmZmZmZmZmZm Z dd l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)ddl*m+Z+ddl,m,Z,ddl-Z-ddl.m/Z/ddl0m1Z1ddl2m3Z3m4Z4ddl5m6Z6dZ7dZ8edZ9dZ:edZ;dZ<eddZ=edZ>dZ?ddl@mAZAmBZBmCZCedd ZDeddd!ZEeddd"ZFd#ZGed$ZHd%ZId&ZJd'ZKd(ZLddd)ZMd*ZNd+ZOed,ZPed-ZQd.ZRdd/lSmTZTeTd0ZUd1ZVdS(2i(t HttpResponsetHttpResponseRedirect(t transaction(t simplejson(tTemplateResponse(trender_to_response(tRequestContext(t authenticatetlogintlogout(tlogin_required(tmessages(tinlineformset_factory(tPerfil(tanuencia_datostanuencia_detalletestatustrevisiont autorizaciont addProyectost addPartidas(t anuenciasFormtanuencias_detalleFormtcalificar_anuenciaFormt"anuencias_detalle_autorizacionFormtagregarproyectoFormtagregarpartidasFormtaddDetalleproyectoFormtaddDetallepartidaForm(tQ(tdatetimeN(t serializers(tforms(t format_htmltformat_html_join(t SortedDictcCs t|dS(Ns index.html(R(trequest((s$c:\Minos\anuencias_tecnicas\views.pytlogin_scCs|jd}|jd}td|d|}d}|dk r~|jrqt||d}tdi|d6S|d}n |d}t|d i|d 6S( Ntusernametpasswordttactives /tablero/0t menuactivo1scuenta desactivadas-Usuario no valido, verifique sus credencialess index.htmltmsj(tPOSTRtNonet is_activeRRR(R$R&R'tusertmensajeR*((s$c:\Minos\anuencias_tecnicas\views.pyt validarViews       cCs2tjjd|jj}t|di|d6S(Nt usuario_idsanuencias.htmltp(R tobjectstgetR/tidR(R$R3((s$c:\Minos\anuencias_tecnicas\views.pyt anuenciasView.scCst|}tdS(Nt/(R R(R$tresponse((s$c:\Minos\anuencias_tecnicas\views.pyt logout_user5s cCscytjjd|jj}Wn6tk rW}|j}tj||t |dSXd}tjj dj d|j }t jj d|dtjd}|jjdkrt jj}n|jjd krt jj}n|j d d }|j d d }|j d d} |j d d } |j d d} |j d d } |j d d} |j d d}d|_d|_d| _d| _d| _d| _d| _d|_|jdkrt|jd|j|_t|jd|j|_t| jd|j| _t| jd|j| _t| jd|j| _t| jd|j| _t| jd|j| _t|jd|j|_ntjj}t |di |d6|d6|d6|d6|d6|d6| d6| d6| d6| d6| d6|d6S( NR2s index.htmlR)t direccion_idtusuario_id__intactivos-fecha_registrotRtAtestatus__clave__intStNtUtVtCtEigY@sprincipal.htmlR3R*Rt anuenciast anuenciasSt anuenciasNt anuenciasRt anuenciasUt anuenciasVt anuenciasAt anuenciasCt anuenciasE(R R4R5R/R6t ExceptiontmessageR terrorRt values_listtfilterR;RtTruetorder_byttipotclavetalltpercenttcounttstrR(R$R3teR+R*tinner_qsRGRHRIRJRKRLRMRNRO((s$c:\Minos\anuencias_tecnicas\views.pyt principalView9sh !$        #######& cCs:ytjjd|}Wntjk r5d}nX|S(NRX(RR4R5t DoesNotExistR-(tcadena_busquedate_((s$c:\Minos\anuencias_tecnicas\views.pytobtiene_estatus_id~s  ic Csytjjd|jj}Wn6tk rW}|j}tj||t |dSXd}|j dkr+t d}|j j dkrt d}n|j j dkrt d }n|d krtd td |jd tjd|}nBtjjd|}t|_|j|_tj|_||_t|j|jd|}|d krD|jr+y>|j} d| j}tj||td| jSWn,tk r}|j}tj||nXd|jkrtj|dtdSd|jkrAtj|dtdSq(d}tj||qm|jry>|j} d| j}tj||td| jSWn,tk r}|j}tj||nXd|jkrtj|dtdSd|jkr(tj|dtdSqmd}tj||nBt}d} |d krmtdtjjd|}d} nt |di|d6|d 6|d!6| d"6S(#NR2s index.htmlR)R,RAR>tCRR?tCAt0R=tusuariotfecha_registroRtpktinstances%•El registro %s se ha Actualizado .s /agregar/%s?tguardars /tablero/0tguardar_y_agregar_otrosguardar y agregar otros /agregar/0s&Por favor, corrija el siguiente error.s?•El registro %s se ha guardado, por favor ingrese el Detalle.s/detalle/add/%s?iR6is agregar.htmlR3t menuactivo2t formulariotvar(R R4R5R/R6RPRQR RRRtmethodRcRWRXRRURtnowR=RgRhRRR,tFILEStis_validtsavetsuccessR( R$t anuencia_idR3R]R+Rmtestatus_segun_capturatiRntatuno((s$c:\Minos\anuencias_tecnicas\views.pytanuenciasAddViews   -                    cCsytjjd|jj}Wn6tk rW}|j}tj||t |dSXt jjd|}t jj d|}t jj}d}t |di|d6|d6|d6|d 6|d 6|d 6S( NR2s index.htmlRiRvR)s detalle.htmlR3RmtanuenciatdetalleR(R R4R5R/R6RPRQR RRRRRRTRRY(R$RvR3R]R+R|R}Rm((s$c:\Minos\anuencias_tecnicas\views.pytanuenciasDetalleViews"  cCstjjd|}ttt}|jdkrw||j|jd|}|jr|j t |j Sn|d|}t di|d6S(NRiR,Rjsmanage_books.htmltformset( tAuthorR4R5R tBookRpR,RrRsRtRtget_absolute_urlR(R$t author_idtauthortBookInlineFormSetR((s$c:\Minos\anuencias_tecnicas\views.pyt manage_bookss   (t Paginatort EmptyPagetPageNotAnIntegerc Cshytjjd|jj}WnTtk ru}|j}|jddkrXd}ntj ||t |dSXtjj dj d|j }tjj d|dtjd }tjj d|dtjd }|jjd krtjj}n|jjd kr'tjj}n|j d d }|j d d} |j d d } |j d d} |j d d} |j d d } |j d d}|j d d}d|_d| _d| _d| _d| _d| _d|_d|_|jdkr,t|jd|j|_t| jd|j| _t| jd|j| _t| jd|j| _t| jd|j| _t| jd|j| _t|jd|j|_t|jd|j|_ntjj}tjj td d d|j}|jjd krtjj td d>td dd|jB}n|jjd krtjj td d?td dd|jB}n|dkr |jd d@}nCtjj dj tddtd|B}|j d|}d}|dkrtjj tdd}nd}d|jkr)|jjd}|j td |td!|Btd"|Btd#|Btd$|Btd%|Btd&|Btd'|Btd(|B}nd)}d*|jkrS|jjd*}nt||}|jjd+}y|j|}WnBtk r|jd,}n#t k r|j|j!}nXtjj}d-}t |d.i|d/6|d06|d16|d26|d*6|d6|d36|d46|d56| d66| d76| d86| d96| d:6|d;6|d<6|d=6S(ANR2s<Perfil matching query does not exist. Lookup parameters wereis%No existe el perfil para este usuarios index.htmlR;R<R=s-fecha_registroR>R?R@RARBRCRDRERFigY@RgRdReRfR6t clave__intestatus__id__int estatus_idiR(tbscrt id__icontainstno_oficio__icontainstcontacto_tecnico__icontainsttelefono_fax__icontainstextension__icontainstcorreo_electronico__icontainstno_requisicion__icontainstjustificacion__icontainstestatus__nombre__icontainsi trpptpageiR)s tablero.htmlR3RmtdatosRt id_statusRGRHRIRJRKRLRMRNROt autorizados(R?RERCRBRDsCRR>RA(RCR?sCARA(R?RE("R R4R5R/R6RPRQtfindR RRRRSRTR;RRURVRWRXRYRZR[R\RRR2texcludeR-tGETRRRRt num_pages(R$RR3R]R+R^RGtanuencias_estadisticasRHRIRJRKRLRMRNRORt anuenciasaRRt paginatorRRRm((s$c:\Minos\anuencias_tecnicas\views.pyt tableroView s  !$$        #######&$     g   c Csytjjd|jj}Wn6tk rW}|j}tj||t |dSXt jjd|}t jj d|}|j dkrt d|dtjdtjdtd |j} |d kr t d|d |d|jdtjd |j} nt|j|jd | } | jry-| j} d | j}tj||Wn,tk r}|j}tj||nXd|jkrtd||jd|jdfSqnd}tj||nd} d} d|jkr|jd} nd|jkr&|jd} nt d| d| } |d kr_t jjd|} ntd | } t jjj d|jd}d}t |di|d6|d6|d6|d6| d6|d6|jd 6S(!NR2s index.htmlRiRvR,Rhtfecha_ultimo_cambioR=RgiR6Rjs0• El registro %s se ha guardado correctamente.Rks,/detalle/add/%s?id_proyecto=%s&id_partida=%stproyectotpartidas&Por favor, corrija el siguiente error.t id_proyectot id_partidat proyecto_idt partida_idtarticuloR)sagregar_detalle.htmlR3RmR|R}Rnt articulos_acR/(R R4R5R/R6RPRQR RRRRRRTRpRRqRURhRR,RrRsRtRuRR-RRYRV(R$Rvt detalle_idtid_pR3R]R+R|R}RxRnRytprotparRRm((s$c:\Minos\anuencias_tecnicas\views.pytanuenciasAgregarDetalleViewsst             ( $ c CsQytjjd|jj}Wn6tk rW}|j}tj||t |dSXt jjd|}t jj d|}|j dkrAt d|dtjdtjdtd |j} |d kr t d|d |d|jdtjd |j} nt|j|jd | } t} |jd j} |jdj} |jdj}|jd}t jj d | d| d|d|}t jj d | d| d|d|d|}|jd kr| jryV| j}|d kr|}n |j}d|}tj||td|SWn,tk rf}|j}tj||nXd|jkrtd|Sq>d}tj||q|jd kry4| j}d}tj||td|SWq>tk r:}|j}|jddkr,d}tj||ntd|SXqnd}d}d|jkrl|jd}nd|jkr|jd}nd }t d|d|} |d krt jjd|} d}ntd | } t jjj d|j d }d}t jj!j d|j d}d }d }d}d!}|jd krnt"|d d}n|d krt#t"||}||}n|dkrt#||}||}n9|d"krt#||}||}nt"|d}t |d#i |d$6|d%6|d&6|d'6| d(6|d)6|jd*6|d+6|d,6S(-NR2s index.htmlRiRvR,RhRR=RgiR6RjRRRtno_lotes6• El detalle con id %s se ha guardado correctamente.s/detalle/add/%sRks&Por favor, corrija el siguiente error.sActualizacion terminadas.llave duplicada viola restricción de unicidadis9Ya existe el articulo con la partida y proyecto ingresadoRRRRiR)s-no_loteRfR(i sagregar_detalle.htmlR3RmR|R}RnRR/tsiguiente_loteRo($R R4R5R/R6RPRQR RRRRRRTRpRRqRURhRR,RrtFalsetupperR[RsRtRuRRR-RRYRVtvaluestintR\(R$RvRRR3R]R+R|R}RxRntexiste_articuloRRRtlotetcontadortconsultaRytbtdatRRtvariableRRmRtctdtkt consecutivo((s$c:\Minos\anuencias_tecnicas\views.pytanuenciasAgregarDetalleViews                         $$        c Csytjjd|jj}Wn6tk rW}|j}tj||t |dSXt jjd|}t jj d|}|j dkrt|j}|jrt}d} x|D]} dt| j|jkr|jjdt| j| _ndt| j|jkrW|jjdt| j| _t}| d 7} n t| _tj| _| jqW|j| krtd }||_tj|_|jtj|d |jtd S|r3td }||_tj|_|jtj|d|jtd Std}||_tj|_|jd}tj|||jtd Stj |dqd}tj||n t}d} t |di|d6| d6|d6|d6S(NR2s index.htmlRiRvR,it observacionest autorizadoiRCs6La Anuencia se Revisó satisfactoriamente, quedando %ss /tablero/0RAs6La Anuencia se Revisó Parcialmente, quedando %sRFs#La anuencia se Revisó, quedando %ssLa calificacion se ha guardados&Por favor, corrija el siguiente error.R)scalificar.htmlR3RmR|R}(!R R4R5R/R6RPRQR RRRRRRTRpRR,RsRR\RRRURRqRRtR[RcRtinfotnombreRRu( R$RvR3R]R+R|R}t formulario2t en_revisionttotal_articulos_autorizadostitemRm((s$c:\Minos\anuencias_tecnicas\views.pytanuenciasCalificarViewsl   %"                cCst|di|jd6S(Ns perfil.htmlR/(RR/(R$tuser_id((s$c:\Minos\anuencias_tecnicas\views.pytperfilscCsgyGtjjd|}t||_tj|_|jd}Wnt k rb}|}nX|S(NRiR(( RR4R5RcRRRqRRtRP(Rvt estatus_nuevoRytrR]((s$c:\Minos\anuencias_tecnicas\views.pytcambiar_estatus s   c Cst|d}|dkrwtd|d|jdtjdtj}tj|_|jtj|dntj ||t dS( NRBR(RvRgRhRs*la anuencia se ha enviado para su revisions /tablero/0( RRR/RRqRRtR RuRRR(R$RvRR((s$c:\Minos\anuencias_tecnicas\views.pytenvio_a_revisions 0 c Cst|d}|dkrwtd|d|jdtjdtj}tj|_|jtj|dntj ||t dS( NRCR(RvRgRhRs.la anuencia se ha enviado para su autorizacions /tablero/0( RRR/RRqRRtR RuRRR(R$RvRR((s$c:\Minos\anuencias_tecnicas\views.pytenvio_a_autorizacion$s 0 cCsHt|d}|dkr.tj|dntj||tdS(NR?R(sla anuencia se ha autorizados /tablero/0(RR RuRRR(R$RvR((s$c:\Minos\anuencias_tecnicas\views.pytautorizar_view/s  cCs'tjjd|jtd|S(NRis/detalle/add/%s(RR4R5tdeleteR(R$RvRR((s$c:\Minos\anuencias_tecnicas\views.pytanuenciasBorrarDetalleView8scCsHt|d}|dkr.tj|dntj||tdS(NRFR(sla anuencia se ha rechazados /tablero/0(RR RuRRR(R$RvR((s$c:\Minos\anuencias_tecnicas\views.pytanuenciaRechazarView<s  cCsHt|d}|dkr.tj|dntj||tdS(NRER(sla anuencia se ha cancelados /tablero/0(RR RuRRR(R$RvR((s$c:\Minos\anuencias_tecnicas\views.pytanuenciaCancelarViewDs  cCs|jdkrWt|j|j}|jr`|jtj|dtdSn t}t di|d6dt |S(NR,sProyecto Guardados /altaproyectosproyectosadd.htmlRntcontext_instance( RpRR,RrRsRtR RuRRR(R$Rn((s$c:\Minos\anuencias_tecnicas\views.pytagregarproyectoLs    cCs|jdkrWt|j|j}|jr`|jtj|dtdSn t}t di|d6dt |S(NR,sPartida Guardada Correctamentet altapartidassaltaspartidas.htmlRnR( RpRR,RrRsRtR RuRRR(R$Rn((s$c:\Minos\anuencias_tecnicas\views.pytagregarpartidaYs    cCs||jdkrSt|j|j}|jr\tjr\|jtdSn t}tdi|d6dt |S(NR,s /altadetallesaddDetalle.htmlRnR( RpRR,RrRsRRttresponse_to_responseRR(R$t formulario1((s$c:\Minos\anuencias_tecnicas\views.pyt addDetallehs   (t csrf_exemptcCs|jrs|jdkr$d}qs|jdkrs|jd}tjdtjjjd|dd }qsnt |d d S( NRseste se envio via getR,Rtjsont proyectostfieldsR6Rtmimetypesapplication/javascript(sidsnombre( tis_ajaxRpR,Rt serializeRR4RYRTR(R$trespuestRtpartidas((s$c:\Minos\anuencias_tecnicas\views.pytmuestrapartidaxs   3cCs/tjj}tdi|d6dt|S(Nsagrega_detalle_anuencia.htmlRR(RR4RYRR(R$R((s$c:\Minos\anuencias_tecnicas\views.pytpruebas(Wt django.httpRRt django.dbRt django.utilsRtdjango.template.responseRtdjango.shortcutsRtdjango.templateRtdjango.contrib.authRRR tdjango.contrib.auth.decoratorsR tdjango.contribR tdjango.forms.modelsR tdependencias.modelsR tanuencias_tecnicas.modelsRRRRRRRtanuencias_tecnicas.formsRRRRRRRRtdjango.db.modelsRRRt django.coreRtdjangoR tdjango.utils.htmlR!R"tdjango.utils.datastructuresR#R%R1R7R:R_RcR{R~Rtdjango.core.paginatorRRRRRRRRRRRRRRRRRRtdjango.views.decorators.csrfRRR(((s$c:\Minos\anuencias_tecnicas\views.pytsf4:    E ] N h