
    >Tf<                         d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlT d dlmZmZ d dlmZmZ d d	lmZ d
Z G d de          Z G d de          ZdS )    )gettext)OpenApiTypes)extend_schema_field)serializers)
ObjectType)*)CustomFieldCustomFieldChoiceSet)ChoiceFieldContentTypeField)ValidatedModelSerializer)CustomFieldChoiceSetSerializerCustomFieldSerializerc                       e Zd Z eed          Z ej         ej        dd                    Z G d d          Z	dS )	r   Fchoicesrequired   )
min_length
max_length)childc                       e Zd ZeZg dZdZdS )#CustomFieldChoiceSetSerializer.Meta)idurldisplay_urldisplaynamedescriptionbase_choicesextra_choicesorder_alphabeticallychoices_countcreatedlast_updated)r   r   r   r   r   r#   N)__name__
__module____qualname__r
   modelfieldsbrief_fields     I/var/www/html/netbox-4.1.3/netbox/extras/api/serializers_/customfields.pyMetar      s,        $
 
 
 Xr-   r/   N)
r&   r'   r(   r   CustomFieldChoiceSetBaseChoicesr    r   	ListFieldr!   r/   r,   r-   r.   r   r      s        ;/  L *K)#k#
 
 
  MX X X X X X X X X Xr-   r   c                      e Zd Z eej                            d          d          Z ee	          Z
 eej                                        dd          Z eed          Z ej                    Z eddd          Z eed          Z eed          Z G d	 d
          Zd Z eej                  d             ZdS )r   custom_fieldsT)querysetmany)r   F)r4   r   
allow_nullr   )nestedr   r6   c                       e Zd ZeZg dZdZdS )CustomFieldSerializer.Meta)r   r   r   r   object_typestyperelated_object_type	data_typer   label
group_namer   r   uniquesearch_weightfilter_logic
ui_visibleui_editableis_cloneabledefaultrelated_object_filterweightvalidation_minimumvalidation_maximumvalidation_regex
choice_setcommentsr$   r%   )r   r   r   r   r   N)r&   r'   r(   r	   r)   r*   r+   r,   r-   r.   r/   r9   <   s,        
 
 
 Gr-   r/   c                 v    | j         r1| j         j        |k    r!t          j        t	          d                    |S )Nz4Changing the type of custom fields is not supported.)instancer;   r   ValidationError_)selfvalues     r.   validate_typez#CustomFieldSerializer.validate_typeG   s;    = 	iT]/588-a0f.g.ghhhr-   c                     t           }|j        |j        k    rdS |j        |j        k    rdS |j        |j        k    rdS |j        |j        |j        fv rdS |j        |j        |j        fv rdS dS )Nintegerdecimalbooleanobjectarraystring)	CustomFieldTypeChoicesr;   TYPE_INTEGERTYPE_DECIMALTYPE_BOOLEAN	TYPE_JSONTYPE_OBJECTTYPE_MULTISELECTTYPE_MULTIOBJECT)rR   objtypess      r.   get_data_typez#CustomFieldSerializer.get_data_typeM   s    &8u)))98u)))98u)))98):;;;88.0FGGG7xr-   N)r&   r'   r(   r   r   objectswith_featurer:   r   r\   r;   allr<   CustomFieldFilterLogicChoicesrB   r   SerializerMethodFieldr=   r   rL   CustomFieldUIVisibleChoicesrC   CustomFieldUIEditableChoicesrD   r/   rT   r   r   STRrf   r,   r-   r.   r   r   '   sc       ###00AA  L ;5666D**#''))  
 ;'DuUUUL1133I//  J
 %@5QQQJ+&BUSSSK	G 	G 	G 	G 	G 	G 	G 	G   )**  +*  r-   r   N)django.utils.translationr   rQ   drf_spectacular.typesr   drf_spectacular.utilsr   rest_frameworkr   core.modelsr   extras.choicesextras.modelsr	   r
   netbox.api.fieldsr   r   netbox.api.serializersr   __all__r   r   r,   r-   r.   <module>ry      s   1 1 1 1 1 1 . . . . . . 5 5 5 5 5 5 & & & & & & " " " " " "     ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;X X X X X%= X X X*3 3 3 3 34 3 3 3 3 3r-   