
    >Tf                     b    d dl mZ d dlmZ dZ G d de          Z G d de          Zd	 Z	d
S )    )settings)gettext_lazy)	ChoiceSetunpack_grouped_choicesc                   .     e Zd ZdZ fdZd Zd Z xZS )ChoiceSetMetaz!
    Metaclass for ChoiceSet
    c                 >   |                     d          x}rt          |d                   t          u s+J t          d                              |                      |d                             dd          d         }| d| }|r| d	nd }|r$|t          j        v rt          j        |         |d<   n;|r9|t          j        v r+|d                             t          j        |                    g |d
<   i |d<   |d         D ]}t          |d         t          t          f          r~g }	|d         D ]O}
|	                    |
d         |
d         f           t          |
          dk    r|
d         |d         |
d         <   P|d
                             |d         |	f           |d
                             |d         |d         f           t          |          dk    r|d         |d         |d         <   t                                          | |||          S )NkeyCHOICESz2{name} has a key defined but CHOICES is not a list)name
__module__.   r   +_choicescolors      )gettypelist_formatsplitr   FIELD_CHOICESextend
isinstancetupleappendlensuper__new__)mcsr   basesattrsr
   appreplace_key
extend_keychoicegrouped_choicesc	__class__s              6/var/www/html/netbox-4.1.3/netbox/utilities/choices.pyr"   zChoiceSetMeta.__new__   s=    ))E"""3 	Li())T1111D4 4f$f 211 %++C33A6C ..3..K.9CK****tJ L{h.DDD#+#9+#Fi   L
h.D D Di ''(>z(JKKK jhI& 	; 	;F&)dE]33 
;"$ 5 5A#**AaD!A$<8881vv{{01!h!-j!((&)_)EFFFFj!((&)VAY)?@@@v;;!##17E(OF1I.wwsD%777    c                 $    t          | dd          S Nr    )getattr)clsargskwargss      r-   __call__zChoiceSetMeta.__call__1   s    sJ+++r.   c                 >    t          t          | dd                    S r0   )iterr2   r3   s    r-   __iter__zChoiceSetMeta.__iter__5   s    GCR00111r.   )__name__r   __qualname____doc__r"   r6   r:   __classcell__)r,   s   @r-   r   r   
   sa         !8 !8 !8 !8 !8F, , ,2 2 2 2 2 2 2r.   r   c                   <    e Zd ZdZ e            Zed             ZdS )r   z
    Holds an iterable of choice tuples suitable for passing to a Django model or form field. Choices can be defined
    statically within the class as CHOICES and/or gleaned from the FIELD_CHOICES configuration parameter.
    c                 >    d t          | j                  D             S )Nc                     g | ]
}|d          S )r   r1   ).0r+   s     r-   
<listcomp>z$ChoiceSet.values.<locals>.<listcomp>B   s    CCC!CCCr.   )r   r   r9   s    r-   valueszChoiceSet.values@   s!    CC4S\BBCCCCr.   N)r;   r   r<   r=   r   r   classmethodrD   r1   r.   r-   r   r   9   sI          dffGD D [D D Dr.   r   )	metaclassc                     g }| D ]X\  }}t          |t          t          f          r |D ]\  }}|                    ||f           A|                    ||f           Y|S )am  
    Unpack a grouped choices hierarchy into a flat list of two-tuples. For example:

    choices = (
        ('Foo', (
            (1, 'A'),
            (2, 'B')
        )),
        ('Bar', (
            (3, 'C'),
            (4, 'D')
        ))
    )

    becomes:

    choices = (
        (1, 'A'),
        (2, 'B'),
        (3, 'C'),
        (4, 'D')
    )
    )r   r   r   r   )choicesunpacked_choicesr
   valueoptgroup_keyoptgroup_values         r-   r   r   E   s    0  2 2
UedE]++ 	205 H H,n ''~(FGGGGH ##S%L1111r.   N)
django.confr   django.utils.translationr   r   __all__r   r   r   r   r1   r.   r-   <module>rP      s                6 6 6 6 6 6,2 ,2 ,2 ,2 ,2D ,2 ,2 ,2^	D 	D 	D 	D 	D- 	D 	D 	D 	D         r.   