
    >Tf}	                     `    d dl Z d dlmZ d dlmZ d dlmZ ddlmZ dZ	d Z
d	 Zd
 Zd Zd ZdS )    N)ImproperlyConfigured)_TaggableManager)current_request   )CustomValidator)image_upload	is_report	is_scriptis_taggablerun_validatorsc                 h    t          | d          r!t          | j        j        t                    rdS dS )zT
    Return True if the instance can have Tags assigned to it; False otherwise.
    tagsTF)hasattr
issubclassr   	__class__r   )objs    1/var/www/html/netbox-4.1.3/netbox/extras/utils.pyr   r      s8     sF ch(*:;; 	45    c                    d}|                     d          d                                         }| j        r!|dv rd                    | j        |g          }n| j        r| j        }d                    || j        j        | j        |          S )z8
    Return a path for uploading image attachments.
    zimage-attachments/.)bmpgifjpegjpgpngz
{}{}_{}_{})rsplitlowernamejoinformatobject_type	object_id)instancefilenamepath	extensions       r   r   r      s      D $$R(..00I} !&JJJ88X]I677	 !=tX%9%>@RT\]]]r   c                     ddl m} ddlm} 	 t	          | |          r| |k    pt	          | |          o| |k    S # t
          $ r Y dS w xY w)z;
    Returns True if the object is a Script or Report.
    r   Report)ScriptF)reportsr*   scriptsr+   r   	TypeError)r   r*   r+   s      r   r
   r
   ,   s      3''9C6Miz#v?V?V?h[^bh[hi   uus   +: 
AAc                 ^    ddl m} 	 t          | |          o| |k    S # t          $ r Y dS w xY w)z7
    Returns True if the given object is a Report.
    r   r)   F)r,   r*   r   r.   )r   r*   s     r   r	   r	   8   sV      #v&&83&=8   uus    
,,c                    t          j                    }|D ]}t          |          t          u rD|                    dd          \  }} t          t          j        |          |                      }nRt          |          t          u rt          |          }n,t          |j        t                    st          d|            || |           dS )zI
    Run the provided iterable of CustomValidators for the instance.
    r   r   z$Invalid value for custom validator: N)r   gettypestrr   getattr	importlibimport_moduledictr   r   r   r   )r$   
validatorsrequest	validatormoduleclss         r   r   r   C   s     !##G % %	 	??c!!#**322KFCE	 7 ? ?EEGGII )__$$'	22III/AA 	[&'Yi'Y'YZZZ	(G$$$$% %r   )r5   django.core.exceptionsr   taggit.managersr   netbox.contextr   r8   r   __all__r   r   r
   r	   r    r   r   <module>rB      s        7 7 7 7 7 7 , , , , , , * * * * * * ' ' ' ' ' '  ^ ^ ^ 	 	 	  % % % % %r   