OZc @sddlmZddlmZddlmZddlmZddlTddl Z ddl m Z ddlm Z dvdwdxdydzd{d|d}d~df Z ddfZddddddddddddf Zddddddddddf Zded8fed9ffZddddfZd>Zd?Zd@ejfdAYZdBejfdCYZdDejfdEYZdFejfdGYZdHejfdIYZdJejfdKYZdLejfdMYZdNejfdOYZ dPejfdQYZ!dRejfdSYZ"dTejfdUYZ#dVejfdWYZ$dXejfdYYZ%dZejfd[YZ&d\ejfd]YZ'd^ejfd_YZ(d`ejfdaYZ)dbejfdcYZ*ddZ+deZ,dfejfdgYZ-dhejfdiYZ.djejfdkYZ/dlejfdmYZ0dnejfdoYZ1dpejfdqYZ2drejfdsYZ3dtejfduYZ4dS(i(t validators(tRegexValidator(tValidationError(tmodels(t*N(tUser(tdatet1sPrimer Grado - Preescolart2sSegundo Grado - Preescolart3sTercer Grado - Preescolart4sPrimer Grado - Primariat5sSegundo Grado - Primariat6sTercer Grado - Primariat7sCuarto Grado - Primariat8sQuinto Grado - Primariat9sSexto Grado - Primariat10s Grado EspecialtHt MasculinotMtFemeninotEnerotFebrerotMarzotAbriltMayotJuniotJuliotAgostot SeptiembretOctubret Noviembret Diciembret2014t2015t2016t2017t2018t2019t2020t2021t2022t2023ttSitNotMATUTINOt VESPERTINOt VERPERTINOtNOCTURNOcCst|}|dkrFtjd|dkrtd|qnP|dkrtjd|dkrtd|qntd||fdS(Nis[a-zA-Z]{4}[0-9]{6}[a-zA-Z]{6}ula CURP "%s" no es correctois,[a-zA-Z]{4}[0-9]{6}[a-zA-Z]{6}[a-zA-Z0-9]{2}uDLa CURP "%s" debe tener una longitud de 16 o 18 caracteres, tiene %s(tlentretmatchtNoneR(ta_curpt longitudCurp((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyt valida_curpDs   cCs`t|}|dkr1td||fn+tjd|dkr\td|ndS(Niu?La CURP "%s" debe tener una longitud de 18 caracteres, tiene %ss,[a-zA-Z]{4}[0-9]{6}[a-zA-Z]{6}[a-zA-Z0-9]{2}ula CURP "%s" no es correcto(R2RR3R4R5(tt_curpt longitudCurpt((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyt valida_t_curpPs   tEstadocBs9eZejdddZdZdddYZRS(R<t max_lengthidcCs d|jS(Ns%s(tnombre(tself((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyt __unicode__\stMetacBseZdgZdgZRS(R>(t__name__t __module__torderingtunique_together(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRA_s ((RBRCRt CharFieldR>R@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR<Ys t MunicipiocBsTeZejdddZejeddddZdZdd d YZ RS( RGR=idtdefaultit verbose_nameR<cCs d|jS(Ns%s(R>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@gsRAcBseZdgZdgZRS(R>(RBRCRDRE(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAjs (( RBRCRRFR>t ForeignKeyR<testadoR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRGcs t Localidadc BseZejeddZejddZejdddZejdde de d ie d 6Z ej d e de de Z d Zd ddYZRS(RIRGR=iRLidtCatTipoPoblaciontnulltblanktlimit_choices_totestatustchoicescCsd|jj|jfS(Ns%s - %s(t municipioR>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@xsRAcBs,eZddgZddgZdZdZRS(RSR>t localidadest Localidades(RBRCRDRERItverbose_name_plural(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRA{s  ((RBRCRRJRGRSRFtnumeroR>tTruettipo_poblaciontNullBooleanFieldtOPCIONES_SiNoNullt zona_indigenaR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRLns( t CatProyectocBsZeZejdddZejddZejeZdZ dddYZ RS(sNumero de ProyectoR=iidcCsd|j|jjfS(Ns %s - %s(tnumeroProyectoRSR>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@sRAcBs&eZdgZdZdZdgZRS(R^s proyecto s Catalogo de Proyectos (RBRCRDRIRVRE(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAs (( RBRCRRFR^t descripcionRJRGRSR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR]s  t CatVehiculocBs~eZejddZejddZejdddddZejddZdZ d Z d d d YZ RS( R=i isCapacidad en toneladast max_digitsitdecimal_placesicCsd|j|j|jfS(Ns %s - %s - %s(tmodelotmarcat capacidad(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@scCst|jd}|S(Ni(tfloatRe(R?tcapacidad_vehiculo((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyttonelajesRAcBs&eZdgZdZdZdgZRS(Rcs el vehiculo s Catalogo de Vehiculos tnumPlaca(RBRCRDRIRVRE(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAs (( RBRCRRFRcRdt DecimalFieldReRiR@RhRA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR`s  t CatProveedorcBsleZejdddZejddddedeZejdeZdZ dd d YZ RS( sNombre del ProveedorR=i,t LicitacionRORNRHcCs d|jS(Nu%s(tnombreProveedor(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@sRAcBs&eZdgZdZdZdgZRS(Rmsnombre del proveedorsCatalogo de Proveedores(RBRCRDRIRVRE(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAs (( RBRCRRFRmRXt licitaciont BooleanFieldtstatusR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRks ! tCatPresentacionProductocBs6eZejddZdZdddYZRS(R=icCs d|jS(Nu%s(t presentacion(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@sRAcBs&eZdgZdZdZdgZRS(Rrs+Catalogo de Presentaciones de los Productos(RBRCRDRIRVRE(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAs ((RBRCRRFRrR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRqs t CatProductoscBseZejddZejdedeZeje ddZ ejdddedeZ ej dZ ejdeZd Zd d d YZRS( R=iRNRORIs Presentaciónis DescripciónRHcCs d|jS(Nu%s(R>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@sRAcBs&eZdgZdZdZdgZRS(R>tproductosCatalogo de Productos(RBRCRDRIRVRE(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAs ((RBRCRRFR>t IntegerFieldRXtcantidadRJRqRrRdt TextFieldR_RoRpR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRss t TipoPaquetecBsHeZejddZejddZdZdddYZRS(R=iicCsd|j|jfS(Nu%s - %s(tpkR>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@sRAcBs&eZdgZdZdZdgZRS(R>stipo de paquetesCatalogo de Tipo de Paquetetclave(RBRCRDRIRVRE(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAs ((RBRCRRFRzR>R@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRxs t CatPaquetec BseZejeZejeZej ddddde de Z eje Z ej ddddZejde Zejd d Zd Zd Zd ddYZRS(RaiRbiRNROiiRHR=icCsd|jj|jjfS(Nu %s - %s (t proveedorRmt tipoPaqueteR>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@scCs8d}x+|jjD]}||j|j}qW|S(Ni(RttalltpesoRv(R?Rtp((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyt peso_paquetesRAcBseZdgZdZdZRS(R}tpaquetes Catalogo Paquetes de Proveedores(RBRCRDRIRV(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAs ((RBRCRRJRxR}tManyToManyFieldRsRtRjRXRRkR|tprecioRoRpRFt noContratoR@RRA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR{s$  tCatRutacBs?eZejZejeZdZdddYZRS(cCs d|jS(Nu%s(R>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@sRAcBs&eZdgZdZdZdgZRS(R>trutasCatalogo de Rutas(RBRCRDRIRVRE(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAs (( RBRCRRuR>RRLR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRs  tCatObservacionescBsHeZejddZejddZdZdddYZRS(R=iicCs d|jS(Ns%s(R>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@ sRAcBs,eZddgZddgZdZdZRS(RzR>t observacionsCatalogo de Observaciones(RBRCRDRERIRV(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAs  ((RBRCRRFRzR>R@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRs t CatEscuelac BseZejeZejeZejddZ ejddZ ejddZ ejdddZ ejdddZ ejdeZejdddd Zejdddd Zejdd d ed edeZdZdddYZRS(R=i idit Domiciliois No de JN.iRHtALTOtURBANAiRRRNROcCs#d|jjj|jj|jfS(Ns %s - %s - %s(t localidadRSR>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@%sRAcBs/eZdddgZdZdZddgZRS(tfolioRR>tescuelasCatalogo de EscuelasRz(RBRCRDRIRVRE(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRA(s((RBRCRRJRRRLRRFRzR>Rt domiciliotno_jnRoRXRptgradotambitot tipoTurnotturnoR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRs$ tCatTipoPersonacBsHeZejddZejddZdZdddYZRS(R=ii2cCs d|jS(Nu%s(R>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@2sRAcBs)eZdgZdZdZddgZRS(R>stipo de personalsCatalogo de Tipo de PersonaRz(RBRCRDRIRVRE(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRA5s ((RBRCRRFRzR>R@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR.s t CatPersonacBseZejddZejdddZejdddZejeZ eje ddZ ej de Zejede de Zd Zd d d YZRS( R=i2sApellido PaternosApellido MaternoRIsTipo de PersonaRHRORNcCsd|j|j|jfS(Ns %s %s %s(R>tapellidoPaternotapellidoMaterno(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@DsRAcBs eZddgZdZdZRS(R>RtpersonasCatalogo de Persona(RBRCRDRIRV(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAGs ((RBRCRRFR>RRRJRGRSRt tipoPersonaRoRXRpRtusuarioR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR;s tProgramacionEntregacBseZejdejZejddeddZ ejdde ddZ ej e ZejeddZej eZej eZdZd d d YZRS( RHtmesesRRR=itanotthroughtProgramacionEntregaEscuelacCsd|jjS(Nu%s(RSR>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@UsRAcBseZdgZdZdZRS(t nombre_chofersprogramacion de entregasProgramacion de Entrega(RBRCRDRIRV(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAXs ((RBRCRt DateFieldtdatetimetnowt fecha_repartoRFtMesestmestAnoRRJRGRSRRRRRR`tvehiculoR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRLs RcBsJeZejeZejeZejddZ ej ddZ RS(R=iRHi( RBRCRRJRt programacionRRRFRQRutregistro_abasto(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR]stComitecBsleZejdejZejeZ eje Z ej ddZ dZdddYZRS(RHt upload_tosDocumentoComite/cCsd|jjS(Nu%s(RR>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@isRAcBseZdgZdZdZRS(RtcomiteR(RBRCRDRIRV(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAls ((RBRCRRRRtfechaRJRRRtpromotort FileFieldtDocumentoComiteR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRcs  cCstj}|j}|dkr*d}n|dkr?d}n|dkrTd}n|dkrid}n|d kr~d }n|d krd }n~|d krd}ni|dkrd}nT|dkrd}n?|dkrd}n*|dkrd}n|dkrd}n|S(NiRiRiRiRiRiRiRiRi Ri Ri Ri R (Rttodaytmonth(tdR((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyt mes_actualqs6                          cCstj}|j}|dkr*d}n|dkr?d}n|dkrTd}n|dkrid}n|dkr~d}n|dkrd}n~|d krd }ni|d krd }nT|d krd}n?|dkrd}n*|dkrd}n|dkrd}n|S(NiR!iR"iR#iR$iR%iR&iR'iR(iR)iR*(RRtyear(RR((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyt ano_actuals6                          tRegistroAbastocBseZejeZejdejZ ej dde ddde Z ej ddedddeZejZejZejZejZejZejeZejZejededeZdZd Zd Z d d d YZ!RS(RHRRRR=isañoRORNcCs)d|jjj|jj|j|jfS(Ns%s - %s - %s- %s(RRR>RR(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@scCstjjd|jjdkrq|jdksQ|jdksQ|jdkra|jd}q|jd}n!tjjd|j}|j }|S(Ntregistro_abasto__pkiRRR ii( tDotaciontobjectstfiltertidtcountRttotalNinosLechetgetRytleches(R?t resultadotdotacion((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyt litros_leches$- cCstjjd|jjdkr|jdkrK|jdkrKd}q|jd}|dkrt|jd}q|dkr|jdd}q|dkr|jd}qn!tjjd|j}|j}|S(NRiii i( RRRRRt totalNinosRRytpaquetes(R?RR((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pytpaquete_alimentarios$      RAcBs8eZdgZdZdZdddddddfZRS(RtabastosRegistro de Abastotver_cuadro_abastosver los cuadro de abastostvalidar_cuadro_abastosvalidar los cuadro de abastostver_requerimientos#ver los requerimientos por procuctot vales_salidasvales de salidatprogramar_entregasprogramar entregatimprimir_programacionsimprimir la programacion(Rsver los cuadro de abastos(Rsvalidar los cuadro de abastos(Rs#ver los requerimientos por procucto(Rsvales de salida(Rsprogramar entrega(Rsimprimir la programacion(RR(RBRCRDRIRVt permissions(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAs (("RBRCRRJRRRRRtanioRFRRRRRRRutninastninosRRt totalMadresRRRotenviadoRRXRR@RRRA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRs !!         tValidarCuadroAbastocBs{eZejeZejddeddZejddeddZ ej de Z dZ dd dYZRS( RRRR=iRRHcCs#d|jj|j|j|jfS(Ns%s - %s - %s - %s(RGR>RRRp(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@sRAcBseZdgZdZdZRS(RGt validacionsValidacion de Cuadro de Abasto(RBRCRDRIRV(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAs ((RBRCRRJRGRFRRRRRoRXRpR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRs  tCatConceptosADcBs&eZejdddZdZRS(tTextoR=icCs d|jS(Ns%s(ttexto(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@s(RBRCRRFRR@(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRsRc BseZddfZejeZejddedeZ ej ddedddedeZ eje dedeZ ejd dedeZej d dedddedeZejd dedeZd dd YZdZRS(tAumentot DisminucionsPaquetes AlimentariosRORNsOpcion paquetesRRR=itLechess Opcion Lechestconcepto_lecheRAcBseZdZRS(R(sregistro_abasto(RBRCRE(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRAscCsd|j|j|jfS(Ns %s - %s - %s(Rtopciontconcepto(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@s(RR(RR((RBRCtOPCIONRRJRRRuRXRRFRRRRt opcion_lechesRRAR@(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRs ''t NivelacioncBs_eZejeZejdZejdZejdddZ eje ddZ RS(sPaquetes AlimentariossPaquetes de LechestTonelajeRHi( RBRCRRJRtprogramacionentregaRuttotal_paquetest total_lechesRhRR(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRs tValidarProgramacioncBs{eZejeZejddeddZejddeddZ ej de Z dZ dd dYZRS( RRRR=iRRHcCs#d|jj|j|j|jfS(Ns%s - %s - %s - %s(RGR>RRRp(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@"sRAcBseZdgZdZdZRS(RGtvalidacion_programacionsValidacion de la Programacion(RBRCRDRIRV(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRA%s ((RBRCRRJRGRFRRRRRoRXRpR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRs  t PadronPersonac BseZejeZejdddZejdddZejdddZ ejdde ddZ ejdde ddZ ejdZejd ddd egZejd ddZejdddZejdddZejdZejdde ddZejd ddd ed ed egZejeddZejdeZdZdddYZRS(sNombre del AlumnoR=i2sApellido MaternosApellido PaternotGeneroRRs Grado EscolarsFecha de nacimientotCURPRsNombre del Padre o TutorRORNRHicCsd|j|j|jfS(Ns %s %s %s(ta_nombret a_paternot a_materno(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@<sRAcBs eZddgZdZdZRS(RRtPadron_personassPadron de Personas(RBRCRDRIRV(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRA?s (( RBRCRRJRRRFRRRRtgenerotGradot grado_escolarRta_fecha_nacimientoR8R6t tutor_nombret tutor_maternot tutor_paternottutor_fecha_nacimientot tutor_generoRXR;R9R<RKRoRpR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR*s$* RMcBsHeZejddZejdeZdZdddYZ RS(R=iRHcCs d|jS(Ns%s(R>(R?((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyR@IsRAcBseZdZdZdZRS(R>stipo poblacionsCatalogo de Tipo de Poblacion(snombre(RBRCRDRIRV(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRALs(( RBRCRRFR>RoRXRQR@RA(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyRMEs (RsPrimer Grado - Preescolar(RsSegundo Grado - Preescolar(R sTercer Grado - Preescolar(R sPrimer Grado - Primaria(R sSegundo Grado - Primaria(R sTercer Grado - Primaria(R sCuarto Grado - Primaria(RsQuinto Grado - Primaria(RsSexto Grado - Primaria(Rs Grado Especial(RR(RR(sEnerosEnero(sFebrerosFebrero(sMarzosMarzo(sAbrilsAbril(sMayosMayo(sJuniosJunio(sJuliosJulio(sAgostosAgosto(s Septiembres Septiembre(sOctubresOctubre(s Noviembres Noviembre(s Diciembres Diciembre(s2014s2014(s2015s2015(s2016s2016(s2017s2017(s2018s2018(s2019s2019(s2020s2020(s2021s2021(s2022s2022(s2023s2023(NR+(NR+(R.R.(R/R0(R1R1(5t django.coreRtdjango.core.validatorsRtdjango.core.exceptionsRt django.dbRRR3tdjango.contrib.auth.modelsRRRRRRR5RXtFalseR[RR8R;tModelR<RGRLR]R`RkRqRsRxR{RRRRRRRRRRRRRRRRRRM(((sMC:\Users\Guillermo R\Documents\PycharmProjects\insumos\apps\control\models.pyts                 C