
    ޸(i!$                         d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	  G d dej
                  Z G d d	ej
                  Z G d
 dej
                  Z G d dej
                  ZdS )    )models)date)MinValueValidator)Decimal)timezonec                   z    e Zd ZdZ ej        dd          Z ej        dd          Z G d d          Z	d Z
d	S )

TipoActivouA   Corresponde a la tabla `tipo_activo` (Portátil, Monitor, Mouse).d   T
max_lengthuniquenullblankc                       e Zd ZdZdZdS )TipoActivo.Metatipo_activozTipo de ActivoN)__name__
__module____qualname__db_tableverbose_name     1/var/www/html/Desarrollo/tic/inventario/models.pyMetar      s         'r   r   c                     | j         S Nnombreselfs    r   __str__zTipoActivo.__str__   
    {r   Nr   r   r   __doc__r   	CharFieldr    	TextFielddescripcionr   r#   r   r   r   r	   r	   	   s        KKVT:::F"&"D999K( ( ( ( ( ( ( (    r   r	   c                   z    e Zd ZdZ ej        dd          Z ej        dd          Z G d d          Z	d Z
d	S )
Marcaz9Corresponde a la tabla `marcas` (Dell, Lenovo, Logitech).r
   Tr   r   c                       e Zd ZdZdZdS )
Marca.MetamarcasMarcasNr   r   r   r   verbose_name_pluralr   r   r   r   r-      s        &r   r   c                     | j         S r   r   r!   s    r   r#   zMarca.__str__    r$   r   Nr%   r   r   r   r+   r+      s        CCVT:::F"&"D999K' ' ' ' ' ' ' '    r   r+   c                   z    e Zd ZdZ ej        dd          Z ej        dd          Z G d d          Z	d Z
d	S )
Modeloz>Corresponde a la tabla `modelos` (ThinkPad X1, OptiPlex 3000).r
   Tr   r   c                       e Zd ZdZdZdS )Modelo.MetamodelosModelosNr0   r   r   r   r   r6   )   s        'r   r   c                     | j         S r   r   r!   s    r   r#   zModelo.__str__-   r$   r   Nr%   r   r   r   r4   r4   #   s        HHVT:::F"&"D999K( ( ( ( ( ( ( (    r   r4   c                   z    e Zd ZdZ ej        eej        dd          Z ej        e	ej        dd          Z
 ej        eej        dd          Z ej        ddd          Z ej        ddd          Z ej        dddd          Z ej        dd          Z ej        dddd	
          Z ej        dddd
          Z ej        ddd          Z ej        ddd          Z ej        ddd          Z ej        dd          Z ej        dddd
          Z ej        dddd
          Z ej        ddd          Z ej        dddg d          Z ej        d          Z ej        dg dddd          Z  ej!        dddd e" e#d                    gd           Z$ ej        dg d!ddd"#          Z% ej&        ddd$          Z' ej        dd e"d%          gd&'          Z( ej&        ddd(          Z) ej        ddd          Z* ej        ddd          Z+ ej        ddd          Z, ej        ddd          Z- ej        ddd          Z. ej        d)dd          Z/ ej0        ddd*          Z1 ej        d+ddd,
          Z2 ej        dddd-
          Z3 ej        ddd          Z4 ej        dddd.
          Z5 ej&        e6j7        d/0          Z8 ej9        ddd1          Z: ej        d2dd          Z; ej        dd30          Z< ej9        dddd45          Z= ej9        dddd67          Z> ej        ddd8          Z? G d9 d:          Z@d; ZAeBd<             ZCeBd=             ZDeBd>             ZEeBd?             ZFeBd@             ZG fdAZH xZIS )BEquipoz9Corresponde a la tabla `equipos` (Inventario de activos).T)	on_deleter   r   r
   )r   r   db_index)r   r   r=   )r   r   r   r=   r   UUID)r   r   r   r   2   RAM)r   r   r   u   Núcleos CPU)r   r   r   zSistema Operativou   Versión SO))En UsorA   )
DisponiblerB   )   En ReparaciónrC   )Dado de BajarD   )	En BodegarE   )r   r   r   choicesF)default   ))lowBajo)mediumMedio)highAlto)criticalu   CríticorI   zNivel de Impactoz2Criticidad del equipo para operaciones del negocio)r   rF   rG   r   	help_text      z0.01u   Costo de Adquisición)
max_digitsdecimal_placesr   r   
validatorsr   ))ComprarV   )ArriendorW   )LeasingrX   )ComodatorY   zTipo de Propiedad)r   rF   r   r   r   u   Fecha de Adquisiciónr   u   Meses de Garantía/Leasing)r   r   rU   r   u#   Fecha Vencimiento Garantía/Leasing   u   Dirección IP   u   Dirección MACHostnameu   Último Usuario LoginzFecha de Inventario)rG   r   u   Última Auditoría   zActivo en Sistemau   Fecha de Creación)auto_now_addr   r   r   u   Última Actualización)auto_nowr   r   r   zNotas Adicionalesc                       e Zd ZdZdZdgZ ej        dg           ej        dg           ej        dg           ej        dg           ej        d	g          gZd
S )Equipo.MetaequiposEquiposz-fecha_actualizacion
cod_activo)fieldsserial
estado_usoimpactfecha_vencimiento_garantiaN)	r   r   r   r   r1   orderingr   Indexindexesr   r   r   r   ra      s        '*+FL///FL
+++FL///FL
+++FL!= >???
r   r   c                 (    | j          d| j        pd S )Nz - z
Sin Serial)rd   rf   r!   s    r   r#   zEquipo.__str__   s    /CCdk&A\CCCr   c                 L    | j         r| j         t          j                    k    S dS )u'   Verifica si la garantía está vigente.N)ri   r   todayr!   s    r   garantia_activazEquipo.garantia_activa   s)     * 	C2djllBBtr   c                 r    | j         r/| j         t          j                    z
  }|j        dk    r|j        ndS dS )u%   Calcula días restantes de garantía.r   N)ri   r   ro   daysr"   deltas     r   dias_hasta_vencimientozEquipo.dias_hasta_vencimiento   s=     * 	73djllBE!&a5::Q6tr   c                 (    | j         }||dk    rdS dS )u8   Alerta si la garantía vence pronto (menos de 30 días).N   TF)ru   r"   diass     r   alerta_vencimientozEquipo.alerta_vencimiento   s$     *

4ur   c                 |    | j         r4t          j                    | j                                         z
  }|j        S dS )u*   Calcula días desde la última auditoría.N)fecha_ultima_auditoriar   ro   rr   rs   s     r   dias_sin_auditarzEquipo.dias_sin_auditar   s;     & 	JLL4#>#C#C#E#EEE:tr   c                 N    | j         }|dS | j        dv r|dk    rdS |dk    rdS dS )u9   Indica si necesita auditoría según días transcurridos.NT)rO   rM   <      F)r}   rh   rx   s     r   requiere_auditoriazEquipo.requiere_auditoria   sH     $<4 ;...4"994 #::4ur   c                     | j         r2| j                                                             dd          | _          t                      j        |i | d S )N-:)MACupperreplacesupersave)r"   argskwargs	__class__s      r   r   zEquipo.save   sQ    8 	:x~~''//S99DHd%f%%%%%r   )Jr   r   r   r&   r   
ForeignKeyr4   SET_NULL	id_modelor+   id_marcar	   id_tipo_activor'   rd   IntegerFieldnumero_activorf   asset_iduuidramdisco
procesador	cpu_coresr(   r)   SO
version_sotiporg   BooleanFieldprestamorh   DecimalFieldr   r   costotipo_propiedad	DateFieldfecha_adquisicionmeses_garantiari   departamentociudadsedebodegapisodetalle_ubicacionGenericIPAddressFieldIPr   hostNamedominioultimo_loginr   ro   	fecha_invDateTimeFieldr|   ruta_qractivofecha_creacionfecha_actualizacionnotasr   r#   propertyrp   ru   rz   r}   r   r   __classcell__)r   s   @r   r;   r;   2   s)       CC "!&FO$VZ[[[I v &/TXYYYH&V&zV_SW_cdddN "!SMMMJ'F'T$NNNMV4tdSSSF"v"D999H6sTPVWWWD &
bt4e
T
T
TCFTBBBE!!St4HHHJ##TWWWI"&"D999K 
	St4Na	b	b	bB!!Rd$UbcccJ 6rDAAAD!!
 
 
	  J #v"5111HV
 
 
 'F  F  F%%ggfoo667,  E &V%
 
 
 (  N )(d$Mdeee )V(%%a(()1	  N "2!1:" " " $6#sTJJJLV4tDDDF6sTBBBDV4tDDDF6rDAAAD((Cd$OOO 
&	%4t/	Z	Z	ZB
&
bt4N^
_
_
_Cv3TT^___Hf#DEEEG#6#,	  L ! BWXXXI1V1)  
 f#DEEEG !V <OPPPF)V))	  N /&.-	   F$dATUUUE

 

 

 

 

 

 

 

D D D   X   X   X   X   X"& & & & & & & & &r   r;   N)	django.dbr   datetimer   django.core.validatorsr   decimalr   django.utilsr   Modelr	   r+   r4   r;   r   r   r   <module>r      s#               4 4 4 4 4 4       ! ! ! ! ! !           FL       V\   K& K& K& K& K&V\ K& K& K& K& K&r   