Ë
    ¹ûàgƒ#  ã                   óv  — 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
mZ d dlmZmZmZ  G d„ de	«      Z G d	„ d
ee«      Z G d„ de«      Z G d„ dee«      Z G d„ de
e«      Z G d„ dee«      Z G d„ dee«      Z G d„ dee«      Z G d„ dee«      Z G d„ d«      Z G d„ deee«      Z G d„ dee«      Zy) é    )ÚImproperlyConfigured)ÚForm)Úmodels)ÚHttpResponseRedirect)ÚContextMixinÚTemplateResponseMixinÚView)ÚBaseDetailViewÚSingleObjectMixinÚ!SingleObjectTemplateResponseMixinc                   ód   ‡ — e Zd ZdZi ZdZdZdZd„ Zd„ Z	d„ Z
dd„Zd„ Zd„ Zd	„ Zd
„ Zˆ fd„Zˆ xZS )Ú	FormMixinz5Provide a way to show and handle a form in a request.Nc                 ó6   — | j                   j                  «       S )z6Return the initial data to use for forms on this view.)ÚinitialÚcopy©Úselfs    úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/views/generic/edit.pyÚget_initialzFormMixin.get_initial   s   € à�|‰|× Ñ Ó"Ð"ó    c                 ó   — | j                   S )z#Return the prefix to use for forms.)Úprefixr   s    r   Ú
get_prefixzFormMixin.get_prefix   s   € à�{‰{Ðr   c                 ó   — | j                   S )zReturn the form class to use.)Ú
form_classr   s    r   Úget_form_classzFormMixin.get_form_class   s   € à�‰Ðr   c                 óR   — |€| j                  «       } |di | j                  «       ¤ŽS )z7Return an instance of the form to be used in this view.© )r   Úget_form_kwargs)r   r   s     r   Úget_formzFormMixin.get_form!   s-   € àÐØ×,Ñ,Ó.ˆJÙÑ3˜D×0Ñ0Ó2Ñ3Ð3r   c                 óð   — | j                  «       | j                  «       dœ}| j                  j                  dv r<|j	                  | j                  j
                  | j                  j                  dœ«       |S )ú8Return the keyword arguments for instantiating the form.)r   r   )ÚPOSTÚPUT)ÚdataÚfiles)r   r   ÚrequestÚmethodÚupdater#   ÚFILES)r   Úkwargss     r   r   zFormMixin.get_form_kwargs'   sg   € ð ×'Ñ'Ó)Ø—o‘oÓ'ñ
ˆð
 �<‰<×Ñ /Ñ1Ø�M‰Mà ŸL™L×-Ñ-Ø!Ÿ\™\×/Ñ/ñôð ˆr   c                 óZ   — | j                   st        d«      ‚t        | j                   «      S )ú<Return the URL to redirect to after processing a valid form.ú-No URL to redirect to. Provide a success_url.)Úsuccess_urlr   Ústrr   s    r   Úget_success_urlzFormMixin.get_success_url7   s(   € à×ÒÜ&Ð'VÓWÐWÜ�4×#Ñ#Ó$Ð$r   c                 ó4   — t        | j                  «       «      S )z3If the form is valid, redirect to the supplied URL.)r   r1   ©r   Úforms     r   Ú
form_validzFormMixin.form_valid=   s   € ä# D×$8Ñ$8Ó$:Ó;Ð;r   c                 óD   — | j                  | j                  |¬«      «      S )z0If the form is invalid, render the invalid form.)r4   ©Úrender_to_responseÚget_context_datar3   s     r   Úform_invalidzFormMixin.form_invalidA   s!   € à×&Ñ& t×'<Ñ'<À$Ð'<Ó'GÓHÐHr   c                 óP   •— d|vr| j                  «       |d<   t        ‰| �  di |¤ŽS )z&Insert the form into the context dict.r4   r   )r    Úsuperr9   ©r   r+   Ú	__class__s     €r   r9   zFormMixin.get_context_dataE   s-   ø€ à˜ÑØ!Ÿ]™]›_ˆF�6‰NÜ‰wÑ'Ñ1¨&Ñ1Ð1r   ©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r/   r   r   r   r   r    r   r1   r5   r:   r9   Ú__classcell__©r>   s   @r   r   r      sM   ø„ Ù?à€GØ€JØ€KØ€Fò#òòó4òò %ò<òI÷2ð 2r   r   c                   ó<   ‡ — e Zd ZdZdZd„ Zˆ fd„Zd„ Zˆ fd„Zˆ xZ	S )ÚModelFormMixinz:Provide a way to show and handle a ModelForm in a request.Nc                 óÄ  — | j                   �| j                  rt        d«      ‚| j                  r| j                  S | j                  �| j                  }n>t	        | dd«      �| j
                  j                  }n| j                  «       j                  }| j                   €"t        d| j                  j                  z  «      ‚t        j                  || j                   ¬«      S )z*Return the form class to use in this view.Nz;Specifying both 'fields' and 'form_class' is not permitted.ÚobjectzUUsing ModelFormMixin (base class of %s) without the 'fields' attribute is prohibited.)Úfields)rJ   r   r   ÚmodelÚgetattrrI   r>   Úget_querysetr@   Úmodel_formsÚmodelform_factory)r   rK   s     r   r   zModelFormMixin.get_form_classQ   sÆ   € à�;‰;Ð" t§¢Ü&ØMóð ð �?Š?Ø—?‘?Ð"à�z‰zÐ%àŸ
™
‘Ü˜˜x¨Ó.Ð:ð Ÿ™×-Ñ-‘ð ×)Ñ)Ó+×1Ñ1�à�{‰{Ð"Ü*ð<Ø>B¿n¹n×>UÑ>UñVóð ô
 ×0Ñ0°¸t¿{¹{ÔKÐKr   c                 óv   •— t         ‰| �  «       }t        | d«      r|j                  d| j                  i«       |S )r"   rI   Úinstance)r<   r   Úhasattrr)   rI   r=   s     €r   r   zModelFormMixin.get_form_kwargsn   s4   ø€ ä‘Ñ(Ó*ˆÜ�4˜Ô"Ø�M‰M˜: t§{¡{Ð3Ô4Øˆr   c                 óè   — | j                   r2 | j                   j                  di | j                  j                  ¤Ž}|S 	 | j                  j	                  «       }|S # t
        $ r t        d«      ‚w xY w)r-   z^No URL to redirect to.  Either provide a url or define a get_absolute_url method on the Model.r   )r/   ÚformatrI   Ú__dict__Úget_absolute_urlÚAttributeErrorr   )r   Úurls     r   r1   zModelFormMixin.get_success_urlu   sx   € à×ÒØ)�$×"Ñ"×)Ñ)ÑA¨D¯K©K×,@Ñ,@ÑAˆCð ˆ
ðØ—k‘k×2Ñ2Ó4�ð ˆ
øô "ò Ü*ð?óð ðús   Á A ÁA1c                 óL   •— |j                  «       | _        t        ‰| �  |«      S )z0If the form is valid, save the associated model.)ÚsaverI   r<   r5   )r   r4   r>   s     €r   r5   zModelFormMixin.form_validƒ   s    ø€ à—i‘i“kˆŒÜ‰wÑ! $Ó'Ð'r   )
r@   rA   rB   rC   rJ   r   r   r1   r5   rD   rE   s   @r   rG   rG   L   s%   ø„ ÙDà€FòLô:ò÷(ð (r   rG   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚProcessFormViewz.Render a form on GET and processes it on POST.c                 ó@   — | j                  | j                  «       «      S )z=Handle GET requests: instantiate a blank version of the form.r7   ©r   r'   Úargsr+   s       r   ÚgetzProcessFormView.getŒ   s   € à×&Ñ& t×'<Ñ'<Ó'>Ó?Ð?r   c                 ó†   — | j                  «       }|j                  «       r| j                  |«      S | j                  |«      S )zˆ
        Handle POST requests: instantiate a form instance with the passed
        POST variables and then check if it's valid.
        )r    Úis_validr5   r:   ©r   r'   r_   r+   r4   s        r   ÚpostzProcessFormView.post�   s8   € ð
 �}‰}‹ˆØ�=‰=Œ?Ø—?‘? 4Ó(Ð(à×$Ñ$ TÓ*Ð*r   c                 ó&   —  | j                   |i |¤ŽS r?   )rd   )r   r_   r+   s      r   ÚputzProcessFormView.put�   s   € Øˆt�y‰y˜$Ð) &Ñ)Ð)r   N)r@   rA   rB   rC   r`   rd   rf   r   r   r   r\   r\   ‰   s   „ Ù8ò@ò	+ó*r   r\   c                   ó   — e Zd ZdZy)ÚBaseFormViewz"A base view for displaying a form.N©r@   rA   rB   rC   r   r   r   rh   rh   ¡   s   „ Ú,r   rh   c                   ó   — e Zd ZdZy)ÚFormViewz?A view for displaying a form and rendering a template response.Nri   r   r   r   rk   rk   ¥   s   „ ÚIr   rk   c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚBaseCreateViewz„
    Base view for creating a new object instance.

    Using this base class requires subclassing to provide a response mixin.
    c                 ó8   •— d | _         t        ‰| �  |g|¢­i |¤ŽS r?   )rI   r<   r`   ©r   r'   r_   r+   r>   s       €r   r`   zBaseCreateView.get°   s#   ø€ ØˆŒÜ‰w‰{˜7Ð4 TÒ4¨VÑ4Ð4r   c                 ó8   •— d | _         t        ‰| �  |g|¢­i |¤ŽS r?   )rI   r<   rd   ro   s       €r   rd   zBaseCreateView.post´   s#   ø€ ØˆŒÜ‰w‰|˜GÐ5 dÒ5¨fÑ5Ð5r   ©r@   rA   rB   rC   r`   rd   rD   rE   s   @r   rm   rm   ©   ó   ø„ ñô5÷6ð 6r   rm   c                   ó   — e Zd ZdZdZy)Ú
CreateViewzQ
    View for creating a new object, with a response rendered by a template.
    Ú_formN©r@   rA   rB   rC   Útemplate_name_suffixr   r   r   rt   rt   ¹   s   „ ñð #Ñr   rt   c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚBaseUpdateViewz�
    Base view for updating an existing object.

    Using this base class requires subclassing to provide a response mixin.
    c                 óT   •— | j                  «       | _        t        ‰| �  |g|¢­i |¤ŽS r?   )Ú
get_objectrI   r<   r`   ro   s       €r   r`   zBaseUpdateView.getÈ   s*   ø€ Ø—o‘oÓ'ˆŒÜ‰w‰{˜7Ð4 TÒ4¨VÑ4Ð4r   c                 óT   •— | j                  «       | _        t        ‰| �  |g|¢­i |¤ŽS r?   )r{   rI   r<   rd   ro   s       €r   rd   zBaseUpdateView.postÌ   s*   ø€ Ø—o‘oÓ'ˆŒÜ‰w‰|˜GÐ5 dÒ5¨fÑ5Ð5r   rq   rE   s   @r   ry   ry   Á   rr   r   ry   c                   ó   — e Zd ZdZdZy)Ú
UpdateViewzDView for updating an object, with a response rendered by a template.ru   Nrv   r   r   r   r~   r~   Ñ   s   „ ÙNà"Ñr   r~   c                   ó&   — e Zd ZdZdZd„ Zd„ Zd„ Zy)ÚDeletionMixinz&Provide the ability to delete objects.Nc                 ó–   — | j                  «       | _        | j                  «       }| j                  j                  «        t	        |«      S )zn
        Call the delete() method on the fetched object and then redirect to the
        success URL.
        )r{   rI   r1   Údeleter   )r   r'   r_   r+   r/   s        r   r‚   zDeletionMixin.deleteÜ   s;   € ð
 —o‘oÓ'ˆŒØ×*Ñ*Ó,ˆØ�‰×ÑÔÜ# KÓ0Ð0r   c                 ó.   —  | j                   |g|¢­i |¤ŽS r?   )r‚   r^   s       r   rd   zDeletionMixin.postç   s   € Øˆt�{‰{˜7Ð4 TÒ4¨VÑ4Ð4r   c                 ó�   — | j                   r0 | j                   j                  di | j                  j                  ¤ŽS t	        d«      ‚)Nr.   r   )r/   rT   rI   rU   r   r   s    r   r1   zDeletionMixin.get_success_urlê   s=   € Ø×ÒØ*�4×#Ñ#×*Ñ*ÑB¨T¯[©[×-AÑ-AÑBÐBä&Ð'VÓWÐWr   )r@   rA   rB   rC   r/   r‚   rd   r1   r   r   r   r€   r€   ×   s   „ Ù0à€Kò1ò5óXr   r€   c                   ó    — e Zd ZdZeZd„ Zd„ Zy)ÚBaseDeleteViewzx
    Base view for deleting an object.

    Using this base class requires subclassing to provide a response mixin.
    c                 ó°   — | j                  «       | _        | j                  «       }|j                  «       r| j	                  |«      S | j                  |«      S r?   )r{   rI   r    rb   r5   r:   rc   s        r   rd   zBaseDeleteView.postú   sF   € ð
 —o‘oÓ'ˆŒØ�}‰}‹ˆØ�=‰=Œ?Ø—?‘? 4Ó(Ð(à×$Ñ$ TÓ*Ð*r   c                 ól   — | j                  «       }| j                  j                  «        t        |«      S r?   )r1   rI   r‚   r   )r   r4   r/   s      r   r5   zBaseDeleteView.form_valid  s+   € Ø×*Ñ*Ó,ˆØ�‰×ÑÔÜ# KÓ0Ð0r   N)r@   rA   rB   rC   r   r   rd   r5   r   r   r   r†   r†   ñ   s   „ ñð €Jò
+ó1r   r†   c                   ó   — e Zd ZdZdZy)Ú
DeleteViewzs
    View for deleting an object retrieved with self.get_object(), with a
    response rendered by a template.
    Ú_confirm_deleteNrv   r   r   r   rŠ   rŠ     s   „ ñð
 -Ñr   rŠ   N)Údjango.core.exceptionsr   Údjango.formsr   r   rN   Údjango.httpr   Údjango.views.generic.baser   r   r	   Údjango.views.generic.detailr
   r   r   r   rG   r\   rh   rk   rm   rt   ry   r~   r€   r†   rŠ   r   r   r   ú<module>r‘      sÎ   ðÝ 7Ý Ý .Ý ,ß OÑ O÷ñ ô<2�ô <2ô~:(�YÐ 1ô :(ôz*�dô *ô0-�9˜oô -ôJÐ$ lô Jô6�^ _ô 6ô #Ð2°Nô #ô6�^ _ô 6ô #Ð2°Nô #÷Xñ Xô41�] I¨~ô 1ô6-Ð2°Nõ -r   