
    >Tf                         d dl Z d dlmZ d dlmZ d dlT d dlmZm	Z	 dZ
 G d dej                  Z G d	 d
ej                  ZdS )    N)forms)gettext_lazy)*)expand_alphanumeric_patternexpand_ipaddress_pattern)ExpandableIPAddressFieldExpandableNameFieldc                   (     e Zd ZdZ fdZd Z xZS )r	   zt
    A field which allows for numeric range expansion
      Example: 'Gi0/[1-3]' => ['Gi0/1', 'Gi0/2', 'Gi0/3']
    c                 t     t                      j        |i | | j        st          d          | _        d S d S )NzAlphanumeric ranges are supported for bulk creation. Mixed cases and types within a single range are not supported (example: <code>[ge,xe]-0/0/[0-9]</code>).super__init__	help_text_selfargskwargs	__class__s      F/var/www/html/netbox-4.1.3/netbox/utilities/forms/fields/expandable.pyr   zExpandableNameField.__init__   sN    $)&)))~ 	K DNNN	 	    c                 |    |sdS t          j        t          |          rt          t	          |                    S |gS )N )researchALPHANUMERIC_EXPANSION_PATTERNlistr   r   values     r   	to_pythonzExpandableNameField.to_python   sB     	293U;; 	<3E::;;;wr   __name__
__module____qualname____doc__r   r    __classcell__r   s   @r   r	   r	      sQ         
          r   r	   c                   (     e Zd ZdZ fdZd Z xZS )r   z
    A field which allows for expansion of IP address ranges
      Example: '192.0.2.[1-254]/24' => ['192.0.2.1/24', '192.0.2.2/24', '192.0.2.3/24' ... '192.0.2.254/24']
    c                 t     t                      j        |i | | j        st          d          | _        d S d S )NzcSpecify a numeric range to create multiple IPs.<br />Example: <code>192.0.2.[1,5,100-254]/24</code>r   r   s      r   r   z!ExpandableIPAddressField.__init__+   sS    $)&)))~ 	Q  P Q QDNNN	Q 	Qr   c                     d|v r7t          j        t          |          rt          t	          |d                    S d|v r7t          j        t
          |          rt          t	          |d                    S |gS )N.   :   )r   r   IP4_EXPANSION_PATTERNr   r   IP6_EXPANSION_PATTERNr   s     r   r    z"ExpandableIPAddressField.to_python1   so    %<<BI&;UCC<0::;;;E\\bi(=uEE\0::;;;wr   r!   r'   s   @r   r   r   %   sV         
Q Q Q Q Q      r   r   )r   djangor   django.utils.translationr   r   utilities.forms.constantsutilities.forms.utilsr   r   __all__	CharFieldr	   r    r   r   <module>r8      s    				       6 6 6 6 6 6 ' ' ' ' W W W W W W W W    %/   ,    u     r   