
    >Tf                         d dl mZ d dlmZ d dlmZ d dlT d dlm	Z	 dZ
 G d dej                  Z G d	 d
ej                  ZdS )    )ValidationError)models)gettext_lazy)*)to_grams)RenderConfigMixinWeightMixinc                        e Zd Z ej         ed          dddd          Z ej         ed          ded          Z	 ej
        dd	          Z G d
 d          Z fdZ fdZ xZS )r	   weight      T)verbose_name
max_digitsdecimal_placesblanknullzweight unit2   )r   
max_lengthchoicesr   )r   r   c                       e Zd ZdZdS )WeightMixin.MetaTN__name__
__module____qualname__abstract     7/var/www/html/netbox-4.1.3/netbox/dcim/models/mixins.pyMetar   !           r   r    c                     | j         r'| j        r t          | j         | j                  | _        nd | _         t	                      j        |i | d S )N)r   weight_unitr   _abs_weightsupersave)selfargskwargs	__class__s      r   r&   zWeightMixin.save$   s\     ; 	$4+ 	$'T5EFFD#Dd%f%%%%%r   c                     t                                                       | j        r#| j        st	          t          d                    d S d S )Nz)Must specify a unit when setting a weight)r%   cleanr   r#   r   _)r'   r*   s    r   r,   zWeightMixin.clean.   s[     ; 	Rt/ 	R!!$O"P"PQQQ	R 	R 	R 	Rr   )r   r   r   r   DecimalFieldr-   r   	CharFieldWeightUnitChoicesr#   PositiveBigIntegerFieldr$   r    r&   r,   __classcell__)r*   s   @r   r	   r	      s        V Qx[[  F #&"Q}%%!	  K 1&0  K
       & & & & &R R R R R R R R Rr   r	   c                   b    e Zd Z ej        dej        ddd          Z G d d          Zd ZdS )	r   zextras.ConfigTemplatez
%(class)ssT)to	on_deleterelated_namer   r   c                       e Zd ZdZdS )RenderConfigMixin.MetaTNr   r   r   r   r    r8   ?   r!   r   r    c                     | j         r| j         S | j        r| j        j         r| j        j         S | j        r| j        j         r| j        j         S dS dS )zQ
        Return the appropriate ConfigTemplate (if any) for this Device.
        N)config_templateroleplatform)r'   s    r   get_config_templatez%RenderConfigMixin.get_config_templateB   sn      	(''9 	-2 	-9,,= 	1T]: 	1=00	1 	1 	1 	1r   N)	r   r   r   r   
ForeignKeyPROTECTr:   r    r=   r   r   r   r   r   6   su        'f'".!  O       	1 	1 	1 	1 	1r   r   N)django.core.exceptionsr   	django.dbr   django.utils.translationr   r-   dcim.choicesutilities.conversionr   __all__Modelr	   r   r   r   r   <module>rG      s    2 2 2 2 2 2       6 6 6 6 6 6     ) ) ) ) ) )&R &R &R &R &R&, &R &R &RR1 1 1 1 1 1 1 1 1 1r   