Ë
    ¸2Úië  ã                   óŠ   — d Z 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
mZ ddlmZ ddlmZ  G d	„ d
«      Z G d„ de«      Zy)aL  
The metadata API is used to allow customization of how `OPTIONS` requests
are handled. We currently provide a single default implementation that returns
some fairly ad-hoc information about the view.

Future implementations might use JSON schema or other definitions in order
to return this information in a more standardized way.
é    )ÚOrderedDict)ÚPermissionDenied)ÚHttp404)Ú	force_str)Ú
exceptionsÚserializers)Úclone_request)ÚClassLookupDictc                   ó   — e Zd Zd„ Zy)ÚBaseMetadatac                 ó   — t        d«      ‚)zx
        Return a dictionary of metadata about the view.
        Used to return responses for OPTIONS requests.
        z).determine_metadata() must be overridden.)ÚNotImplementedError)ÚselfÚrequestÚviews      úN/var/www/html/acx/venv/lib/python3.12/site-packages/rest_framework/metadata.pyÚdetermine_metadatazBaseMetadata.determine_metadata   s   € ô
 "Ð"MÓNÐNó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r   r      s   „ óOr   r   c                   óV  — e Zd ZdZ ei ej                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d	“ej                  d
“ej                   d“ej"                  d“ej$                  d“ej&                  d“ej(                  d“ej*                  d“ej,                  d“ej.                  dej0                  dej2                  dej4                  di¥«      Zd„ Zd„ Zd„ Zd„ Zy)ÚSimpleMetadatazÑ
    This is the default metadata implementation.
    It returns an ad-hoc set of information about the view.
    There are not any formalized standards for `OPTIONS` responses
    for us to base this on.
    ÚfieldÚbooleanÚstringÚurlÚemailÚregexÚslugÚintegerÚfloatÚdecimalÚdateÚdatetimeÚtimeÚchoicezmultiple choicezfile uploadzimage uploadÚlistznested objectc                 ó`  — t        «       }|j                  «       |d<   |j                  «       |d<   |j                  D �cg c]  }|j                  ‘Œ c}|d<   |j
                  D �cg c]  }|j                  ‘Œ c}|d<   t        |d«      r| j                  ||«      }|r||d<   |S c c}w c c}w )NÚnameÚdescriptionÚrendersÚparsesÚget_serializerÚactions)r   Úget_view_nameÚget_view_descriptionÚrenderer_classesÚ
media_typeÚparser_classesÚhasattrÚdetermine_actions)r   r   r   ÚmetadataÚrendererÚparserr0   s          r   r   z!SimpleMetadata.determine_metadata<   s©   € Ü“=ˆØ×-Ñ-Ó/ˆ�ÑØ"&×";Ñ";Ó"=ˆ�ÑØCG×CXÑCXÖY°x˜x×2Ó2ÒYˆ�ÑØ>B×>QÑ>QÖR°F˜f×/Ó/ÒRˆ�ÑÜ�4Ð)Ô*Ø×,Ñ,¨W°dÓ;ˆGÙØ&-�˜Ñ#Øˆùò ZùÚRs   ¿B&Á&B+c                 ó²  — i }ddht        |j                  «      z  D ]‡  }t        ||«      |_        	 t	        |d«      r|j                  |j                  «       |dk(  rt	        |d«      r|j                  «        |j                  «       }| j                  |«      ||<   ||_        Œ‰ |S # t        j                  t        t        f$ r Y Œ+w xY w# ||_        w xY w)zŽ
        For generic class based views we return information about
        the fields that are accepted for 'PUT' and 'POST' methods.
        ÚPUTÚPOSTÚcheck_permissionsÚ
get_object)ÚsetÚallowed_methodsr	   r   r6   r>   r?   r/   Úget_serializer_infor   ÚAPIExceptionr   r   )r   r   r   r0   ÚmethodÚ
serializers         r   r7   z SimpleMetadata.determine_actionsH   sÔ   € ð
 ˆØ˜f�o¬¨D×,@Ñ,@Ó(AÑAò 	'ˆFÜ(¨°&Ó9ˆDŒLð'ä˜4Ð!4Ô5Ø×*Ñ*¨4¯<©<Ô8à˜U’?¤w¨t°\Ô'BØ—O‘OÔ%ð "×0Ñ0Ó2�
Ø"&×":Ñ":¸:Ó"F�˜‘à&�•ð#	'ð& ˆøô ×+Ñ+Ô-=¼wÐGò Ùðûð  '�•ús*   ²AB)Á:$CÂ)C
ÃCÃ	C
Ã
CÃ	Cc           
      ó   — t        |d«      r|j                  }t        |j                  j	                  «       D ��cg c]2  \  }}t        |t        j                  «      s|| j                  |«      f‘Œ4 c}}«      S c c}}w )zn
        Given an instance of a serializer, return a dictionary of metadata
        about its fields.
        Úchild)	r6   rG   r   ÚfieldsÚitemsÚ
isinstancer   ÚHiddenFieldÚget_field_info)r   rE   Ú
field_namer   s       r   rB   z"SimpleMetadata.get_serializer_infoc   sv   € ô
 �:˜wÔ'ð $×)Ñ)ˆJÜà%/×%6Ñ%6×%<Ñ%<Ó%>÷
á!�
˜EÜ˜e¤[×%<Ñ%<Ô=ð ˜×,Ñ,¨UÓ3Ò4ó
ó ð 	ùó 
s   »7A:
c           	      óp  — t        «       }| j                  |   |d<   t        |dd«      |d<   g d¢}|D ](  }t        ||d«      }|€Œ|dk7  sŒt        |d¬«      ||<   Œ* t        |d	d«      r| j	                  |j
                  «      |d	<   n!t        |d
d«      r| j                  |«      |d<   |j                  d«      stt        |t        j                  t        j                  f«      sJt        |d«      r>|j                  j                  «       D ��cg c]  \  }}|t        |d¬«      dœ‘Œ c}}|d<   |S c c}}w )zl
        Given an instance of a serializer field, return a dictionary
        of metadata about it.
        ÚtypeÚrequiredF)Ú	read_onlyÚlabelÚ	help_textÚ
min_lengthÚ
max_lengthÚ	min_valueÚ	max_valueNÚ T)Ústrings_onlyrG   rH   ÚchildrenrQ   Úchoices)ÚvalueÚdisplay_name)r   Úlabel_lookupÚgetattrr   rL   rG   rB   ÚgetrJ   r   ÚRelatedFieldÚManyRelatedFieldr6   r[   rI   )r   r   Ú
field_infoÚattrsÚattrr\   Úchoice_valueÚchoice_names           r   rL   zSimpleMetadata.get_field_infor   s?  € ô
 !“]ˆ
Ø!×.Ñ.¨uÑ5ˆ
�6ÑÜ!(¨°
¸EÓ!Bˆ
�:Ñò
ˆð ò 	GˆDÜ˜E 4¨Ó.ˆEØÑ  U¨b£[Ü#,¨UÀÔ#F�
˜4Ò ð	Gô
 �5˜' 4Ô(Ø"&×"5Ñ"5°e·k±kÓ"BˆJ�wÒÜ�U˜H dÔ+Ø%)×%=Ñ%=¸eÓ%DˆJ�zÑ"à—‘˜{Ô+Ü˜5¤;×#;Ñ#;¼[×=YÑ=YÐ"ZÔ[Ü˜˜yÔ)ð 27·±×1DÑ1DÓ1F÷%ñ
 .�L +ð *Ü$-¨kÈÔ$Móó%ˆJ�yÑ!ð Ðùó%s   ÄD2N) r   r   r   Ú__doc__r
   r   ÚFieldÚBooleanFieldÚ	CharFieldÚ	UUIDFieldÚURLFieldÚ
EmailFieldÚ
RegexFieldÚ	SlugFieldÚIntegerFieldÚ
FloatFieldÚDecimalFieldÚ	DateFieldÚDateTimeFieldÚ	TimeFieldÚChoiceFieldÚMultipleChoiceFieldÚ	FileFieldÚ
ImageFieldÚ	ListFieldÚ	DictFieldÚ
Serializerr^   r   r7   rB   rL   r   r   r   r   r      sŽ  „ ññ #ð $Ø×Ñ˜7ð$à× Ñ  )ð$ð 	×Ñ˜xð$ð 	×Ñ˜xð	$ð
 	×Ñ˜eð$ð 	×Ñ ð$ð 	×Ñ ð$ð 	×Ñ˜vð$ð 	× Ñ  )ð$ð 	×Ñ ð$ð 	× Ñ  )ð$ð 	×Ñ˜vð$ð 	×!Ñ! :ð$ð 	×Ñ˜vð$ð 	×Ñ ð$ð  	×'Ñ'Ð):ð!$ð" 	×Ñ˜}ð#$ð$ 	×Ñ Ø×Ñ˜vØ×Ñ˜Ø×Ñ ñ+$ó €Lò0
òò6ó$r   r   N)rh   Úcollectionsr   Údjango.core.exceptionsr   Údjango.httpr   Údjango.utils.encodingr   Úrest_frameworkr   r   Úrest_framework.requestr	   Ú"rest_framework.utils.field_mappingr
   r   r   r   r   r   ú<module>r…      s;   ðñõ $å 3Ý Ý +ç 2Ý 0Ý >÷Oñ Oôy�\õ yr   