§
    ¥”jæ  ã                   óŒ   — d 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dS )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.
é    )ÚPermissionDenied)ÚHttp404©Ú	force_str)Ú
exceptionsÚserializers)Úclone_request)ÚClassLookupDictc                   ó   — e Zd Zd„ ZdS )Ú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      úf/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/rest_framework/metadata.pyÚdetermine_metadatazBaseMetadata.determine_metadata   s   € õ
 "Ð"MÑNÔNÐNó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r   r      s(   € € € € € ðOð Oð Oð Oð Or   r   c                   óš  — 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j        dej        dej        dej        di¥¦  «        Zd„ Zd„ Zd„ Zd„ Z dS )Ú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ÚdurationÚchoicezmultiple choicezfile uploadzimage uploadÚlistznested objectc                 óò   — |                      ¦   «         |                     ¦   «         d„ |j        D ¦   «         d„ |j        D ¦   «         dœ}t	          |d¦  «        r|                      ||¦  «        }|r||d<   |S )Nc                 ó   — g | ]	}|j         ‘Œ
S r   ©Ú
media_type)Ú.0Úrenderers     r   ú
<listcomp>z5SimpleMetadata.determine_metadata.<locals>.<listcomp>?   s   € ÐRÐRÐR°˜Ô+ÐRÐRÐRr   c                 ó   — g | ]	}|j         ‘Œ
S r   r-   )r/   Úparsers     r   r1   z5SimpleMetadata.determine_metadata.<locals>.<listcomp>@   s   € ÐKÐKÐK¨V�vÔ(ÐKÐKÐKr   )ÚnameÚdescriptionÚrendersÚparsesÚget_serializerÚactions)Úget_view_nameÚget_view_descriptionÚrenderer_classesÚparser_classesÚhasattrÚdetermine_actions)r   r   r   Úmetadatar9   s        r   r   z!SimpleMetadata.determine_metadata;   s•   € à×&Ò&Ñ(Ô(Ø×4Ò4Ñ6Ô6ØRÐR¸DÔ<QÐRÑRÔRØKÐK°tÔ7JÐKÑKÔKð	
ð 
ˆõ �4Ð)Ñ*Ô*ð 	.Ø×,Ò,¨W°dÑ;Ô;ˆGØð .Ø&-�˜Ñ#Øˆr   c                 óÚ  — i }ddht          |j        ¦  «        z  D ]Î}t          ||¦  «        |_        	 t	          |d¦  «        r|                     |j        ¦  «         |dk    r$t	          |d¦  «        r|                     ¦   «          |                     ¦   «         }|                      |¦  «        ||<   n"# t          j
        t          t          f$ r Y nw xY w||_        ŒÃ# ||_        w xY w|S )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   r>   rD   rE   r8   Úget_serializer_infor   ÚAPIExceptionr   r   )r   r   r   r9   ÚmethodÚ
serializers         r   r?   z SimpleMetadata.determine_actionsH   s  € ð
 ˆØ˜f�o­¨DÔ,@Ñ(AÔ(AÑAð 	'ð 	'ˆFÝ(¨°&Ñ9Ô9ˆDŒLð'å˜4Ð!4Ñ5Ô5ð 9Ø×*Ò*¨4¬<Ñ8Ô8Ð8à˜U’?�?¥w¨t°\Ñ'BÔ'B�?Ø—O’OÑ%Ô%Ð%ð "×0Ò0Ñ2Ô2�
Ø"&×":Ò":¸:Ñ"FÔ"F�˜‘�øõ Ô+Õ-=½wÐGð ð ð Ø�ðøøøð  '�”�ø˜w�”Ð&Ð&Ð&Ð&àˆs*   ´AB5Â-CÂ5CÃCÃCÃCÃ	C(c                 ó|   ‡ — t          |d¦  «        r|j        }ˆ fd„|j                             ¦   «         D ¦   «         S )zn
        Given an instance of a serializer, return a dictionary of metadata
        about its fields.
        Úchildc                 óv   •— i | ]5\  }}t          |t          j        ¦  «        °|‰                     |¦  «        “Œ6S r   )Ú
isinstancer   ÚHiddenFieldÚget_field_info)r/   Ú
field_namer   r   s      €r   ú
<dictcomp>z6SimpleMetadata.get_serializer_info.<locals>.<dictcomp>l   sP   ø€ ð 
ð 
ð 
á!�
˜EÝ˜e¥[Ô%<Ñ=Ô=ð
Ø˜×+Ò+¨EÑ2Ô2ð
ð 
ð 
r   )r>   rM   ÚfieldsÚitems)r   rK   s   ` r   rH   z"SimpleMetadata.get_serializer_infoc   s[   ø€ õ
 �:˜wÑ'Ô'ð 	*ð $Ô)ˆJð
ð 
ð 
ð 
à%/Ô%6×%<Ò%<Ñ%>Ô%>ð
ñ 
ô 
ð 	
r   c                 óB  — | j         |         t          |dd¦  «        dœ}g d¢}|D ]/}t          ||d¦  «        }|�|dk    rt          |d¬¦  «        ||<   Œ0t          |d	d¦  «        r|                      |j        ¦  «        |d	<   n)t          |d
d¦  «        r|                      |¦  «        |d<   |                     d¦  «        s\t          |t          j	        t          j
        f¦  «        s6t          |d¦  «        r&d„ |j                             ¦   «         D ¦   «         |d<   |S )zl
        Given an instance of a serializer field, return a dictionary
        of metadata about it.
        ÚrequiredF)ÚtyperW   )	Ú	read_onlyÚlabelÚ	help_textÚ
min_lengthÚ
max_lengthÚ	min_valueÚ	max_valueÚ
max_digitsÚdecimal_placesNÚ T©Ústrings_onlyrM   rT   ÚchildrenrY   Úchoicesc                 ó<   — g | ]\  }}|t          |d ¬¦  «        dœ‘ŒS )Trc   )ÚvalueÚdisplay_namer   )r/   Úchoice_valueÚchoice_names      r   r1   z1SimpleMetadata.get_field_info.<locals>.<listcomp>�   sH   € ð %ð %ð %ñ
 .�L +ð *Ý$-¨kÈÐ$MÑ$MÔ$Mðð ð%ð %ð %r   )Úlabel_lookupÚgetattrr   rQ   rM   rH   ÚgetrO   r   ÚRelatedFieldÚManyRelatedFieldr>   rf   rU   )r   r   Ú
field_infoÚattrsÚattrrh   s         r   rQ   zSimpleMetadata.get_field_infor   sb  € ð Ô% eÔ,Ý  z°5Ñ9Ô9ð
ð 
ˆ
ð

ð 
ð 
ˆð ð 	Gð 	GˆDÝ˜E 4¨Ñ.Ô.ˆEØÐ  U¨b¢[ [Ý#,¨UÀÐ#FÑ#FÔ#F�
˜4Ñ øå�5˜' 4Ñ(Ô(ð 	EØ"&×"5Ò"5°e´kÑ"BÔ"BˆJ�wÑÐÝ�U˜H dÑ+Ô+ð 	EØ%)×%=Ò%=¸eÑ%DÔ%DˆJ�zÑ"à—’˜{Ñ+Ô+ð 		Ý˜5¥;Ô#;½[Ô=YÐ"ZÑ[Ô[ð		å˜˜yÑ)Ô)ð		ð%ð %ð
 27´×1DÒ1DÑ1FÔ1Fð%ñ %ô %ˆJ�yÑ!ð Ðr   N)!r   r   r   Ú__doc__r
   r   ÚFieldÚBooleanFieldÚ	CharFieldÚ	UUIDFieldÚURLFieldÚ
EmailFieldÚ
RegexFieldÚ	SlugFieldÚIntegerFieldÚ
FloatFieldÚDecimalFieldÚ	DateFieldÚDateTimeFieldÚ	TimeFieldÚDurationFieldÚChoiceFieldÚMultipleChoiceFieldÚ	FileFieldÚ
ImageFieldÚ	ListFieldÚ	DictFieldÚ
Serializerrl   r   r?   rH   rQ   r   r   r   r   r      s¢  € € € € € ðð ð #�?ð $ØÔ˜7ð$àÔ  )ð$ð 	Ô˜xð$ð 	Ô˜xð	$ð
 	Ô˜eð$ð 	Ô ð$ð 	Ô ð$ð 	Ô˜vð$ð 	Ô  )ð$ð 	Ô ð$ð 	Ô  )ð$ð 	Ô˜vð$ð 	Ô! :ð$ð 	Ô˜vð$ð 	Ô! :ð$ð  	Ô ð!$ð" 	Ô'Ð):ð#$ð$ 	Ô˜}ØÔ ØÔ˜vØÔ˜ØÔ ð-$ð $ñ ô €Lð2ð ð ðð ð ð6
ð 
ð 
ð&ð &ð &ð &ð &r   r   N)rt   Ú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ñ   ððð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø >Ð >Ð >Ð >Ð >Ð >ðOð Oð Oð Oð Oñ Oô Oð Oð}ð }ð }ð }ð }�\ñ }ô }ð }ð }ð }r   