
    >Tf                     B    d dl mZ d dlmZ d dlmZ dZd
dZd Zd Z	d	S )    )	urlencode)	QueryDict)MultiValueDict)dict_to_querydictnormalize_querydictprepare_cloned_fieldsTc                    t          d          }|                                 D ]Q\  }}t          |t          t          t
          f          rt          ||i          n||i}|                    |           R|sd|_        |S )zG
    Create a QueryDict instance from a regular Python dictionary.
    TmutableF)	r   items
isinstancelisttuplesetr   update_mutable)dr   qdkvitems         8/var/www/html/netbox-4.1.3/netbox/utilities/querydict.pyr   r      s     
4	 	 	 B		  1)3AeS7I)J)JV~q!f%%%QRTUPV
		$ I    c                 >    d |                                  D             S )aQ  
    Convert a QueryDict to a normal, mutable dictionary, preserving list values. For example,

        QueryDict('foo=1&bar=2&bar=3&baz=')

    becomes:

        {'foo': '1', 'bar': ['2', '3'], 'baz': ''}

    This function is necessary because QueryDict does not provide any built-in mechanism which preserves multiple
    values.
    c                 P    i | ]#\  }}|t          |          d k    r|n|d         $S )   r   )len).0r   r   s      r   
<dictcomp>z'normalize_querydict.<locals>.<dictcomp>'   sA       )-AA

11!  r   )lists)	querydicts    r   r   r      s-     1:1B1B   r   c                    t          | d          st          d          S |                                 }g }|                                D ]y\  }t	          |          t
          t          fv r"|                    fd|D                        D|dur||                    |f           b|                    df           zt          t          |          d          S )zU
    Generate a QueryDict comprising attributes from an object's clone() method.
    cloneTr
   c                     g | ]}|fS  r%   )r   r   keys     r   
<listcomp>z)prepare_cloned_fields.<locals>.<listcomp>9   s    333C8333r   FN )
hasattrr   r#   r   typer   r   extendappendr   )instanceattrsparamsvaluer&   s       @r   r   r   ,   s    
 8W%% '&&&&NNE Fkkmm % %
U;;4-''MM3333U3334444%E$5MM3,''''MM3)$$$$ Yv&&5555r   N)T)
urllib.parser   django.httpr   django.utils.datastructuresr   __all__r   r   r   r%   r   r   <module>r5      s~    " " " " " " ! ! ! ! ! ! 6 6 6 6 6 6
 
 
 
  $6 6 6 6 6r   