
    h#                     v   S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	J
r
Jr  S SKJrJrJr   " S S\	5      r " S	 S
\\5      r " S S\5      r " S S\\5      r " S S\
\5      r " S S\\5      r " S S\\5      r " S S\\5      r " S S\\5      r " S S5      r " S S\\\5      r " S S\\5      rg)     )ImproperlyConfigured)Form)models)HttpResponseRedirect)ContextMixinTemplateResponseMixinView)BaseDetailViewSingleObjectMixin!SingleObjectTemplateResponseMixinc                   p   ^  \ rS rSrSr0 rSrSrSrS r	S r
S rSS jrS rS	 rS
 rS rU 4S jrSrU =r$ )	FormMixin   z5Provide a way to show and handle a form in a request.Nc                 6    U R                   R                  5       $ )z6Return the initial data to use for forms on this view.)initialcopyselfs    K/var/www/html/env/lib/python3.13/site-packages/django/views/generic/edit.pyget_initialFormMixin.get_initial   s    ||  ""    c                     U R                   $ )z#Return the prefix to use for forms.)prefixr   s    r   
get_prefixFormMixin.get_prefix   s    {{r   c                     U R                   $ )zReturn the form class to use.)
form_classr   s    r   get_form_classFormMixin.get_form_class   s    r   c                 T    Uc  U R                  5       nU" S0 U R                  5       D6$ )z7Return an instance of the form to be used in this view. )r   get_form_kwargs)r   r   s     r   get_formFormMixin.get_form!   s-    ,,.J3D00233r   c                     U R                  5       U R                  5       S.nU R                  R                  S;   a<  UR	                  U R                  R
                  U R                  R                  S.5        U$ )8Return the keyword arguments for instantiating the form.)r   r   )POSTPUT)datafiles)r   r   requestmethodupdater(   FILES)r   kwargss     r   r#   FormMixin.get_form_kwargs'   sg     '')oo'

 <</1MM LL--!\\// r   c                 d    U R                   (       d  [        S5      e[        U R                   5      $ )<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_urlFormMixin.get_success_url7   s(    &'VWW4##$$r   c                 4    [        U R                  5       5      $ )z3If the form is valid, redirect to the supplied URL.)r   r7   r   forms     r   
form_validFormMixin.form_valid=   s    #D$8$8$:;;r   c                 >    U R                  U R                  US95      $ )z0If the form is invalid, render the invalid form.)r;   render_to_responseget_context_datar:   s     r   form_invalidFormMixin.form_invalidA   s!    &&t'<'<$'<'GHHr   c                 V   > SU;  a  U R                  5       US'   [        TU ]  " S0 UD6$ )z&Insert the form into the context dict.r;   r"   )r$   superrA   r   r0   	__class__s     r   rA   FormMixin.get_context_dataE   s-    !]]_F6Nw'1&11r   r"   N)__name__
__module____qualname____firstlineno____doc__r   r   r5   r   r   r   r   r$   r#   r7   r<   rB   rA   __static_attributes____classcell__rG   s   @r   r   r      sM    ?GJKF#4 %<I2 2r   r   c                   H   ^  \ rS rSrSrSrS rU 4S jrS rU 4S jr	Sr
U =r$ )	ModelFormMixinL   z:Provide a way to show and handle a ModelForm in a request.Nc                    U R                   b  U R                  (       a  [        S5      eU R                  (       a  U R                  $ U R                  b  U R                  nO?[	        U SS5      b  U R
                  R                  nOU R                  5       R                  nU R                   c"  [        SU R                  R                  -  5      e[        R                  " XR                   S9$ )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)rW   r   r   modelgetattrrV   rG   get_querysetrJ   model_formsmodelform_factory)r   rX   s     r   r   ModelFormMixin.get_form_classQ   s    ;;"t&M  ????"zz%

x.: -- ))+11{{"*<>Bnn>U>UV 
 00{{KKr   c                    > [         TU ]  5       n[        U S5      (       a  UR                  SU R                  05        U$ )r'   rV   instance)rE   r#   hasattrr.   rV   rF   s     r   r#   ModelFormMixin.get_form_kwargsn   s7    (*4""MM:t{{34r   c                     U R                   (       a2  U R                   R                  " S0 U R                  R                  D6nU$  U R                  R	                  5       nU$ ! [
         a    [        S5      ef = f)r3   z^No URL to redirect to.  Either provide a url or define a get_absolute_url method on the Model.r"   )r5   formatrV   __dict__get_absolute_urlAttributeErrorr   )r   urls     r   r7   ModelFormMixin.get_success_urlu   sv    ""))ADKK,@,@AC 
kk224 
 " *? s   A! !A7c                 L   > UR                  5       U l        [        TU ]  U5      $ )z0If the form is valid, save the associated model.)saverV   rE   r<   )r   r;   rG   s     r   r<   ModelFormMixin.form_valid   s     iikw!$''r   rV   )rJ   rK   rL   rM   rN   rW   r   r#   r7   r<   rO   rP   rQ   s   @r   rS   rS   L   s%    DFL:( (r   rS   c                   *    \ rS rSrSrS rS rS rSrg)ProcessFormView   z.Render a form on GET and processes it on POST.c                 @    U R                  U R                  5       5      $ )z=Handle GET requests: instantiate a blank version of the form.r?   r   r,   argsr0   s       r   getProcessFormView.get   s    &&t'<'<'>??r   c                     U R                  5       nUR                  5       (       a  U R                  U5      $ U R                  U5      $ )zp
Handle POST requests: instantiate a form instance with the passed
POST variables and then check if it's valid.
)r$   is_validr<   rB   r   r,   rr   r0   r;   s        r   postProcessFormView.post   s:    
 }}==????4(($$T**r   c                 &    U R                   " U0 UD6$ rI   )rx   )r   rr   r0   s      r   putProcessFormView.put   s    yy$)&))r   r"   N)	rJ   rK   rL   rM   rN   rs   rx   r{   rO   r"   r   r   rn   rn      s    8@	+*r   rn   c                       \ rS rSrSrSrg)BaseFormView   z"A base view for displaying a form.r"   NrJ   rK   rL   rM   rN   rO   r"   r   r   r~   r~      s    ,r   r~   c                       \ rS rSrSrSrg)FormView   z?A view for displaying a form and rendering a template response.r"   Nr   r"   r   r   r   r      s    Ir   r   c                   8   ^  \ rS rSrSrU 4S jrU 4S jrSrU =r$ )BaseCreateView   zx
Base view for creating a new object instance.

Using this base class requires subclassing to provide a response mixin.
c                 :   > S U l         [        TU ]  " U/UQ70 UD6$ rI   )rV   rE   rs   r   r,   rr   r0   rG   s       r   rs   BaseCreateView.get   s#    w{74T4V44r   c                 :   > S U l         [        TU ]  " U/UQ70 UD6$ rI   )rV   rE   rx   r   s       r   rx   BaseCreateView.post   s#    w|G5d5f55r   rl   	rJ   rK   rL   rM   rN   rs   rx   rO   rP   rQ   s   @r   r   r          56 6r   r   c                       \ rS rSrSrSrSrg)
CreateView   zI
View for creating a new object, with a response rendered by a template.
_formr"   NrJ   rK   rL   rM   rN   template_name_suffixrO   r"   r   r   r   r      s     #r   r   c                   8   ^  \ rS rSrSrU 4S jrU 4S jrSrU =r$ )BaseUpdateView   zu
Base view for updating an existing object.

Using this base class requires subclassing to provide a response mixin.
c                 V   > U R                  5       U l        [        TU ]  " U/UQ70 UD6$ rI   )
get_objectrV   rE   rs   r   s       r   rs   BaseUpdateView.get   s*    oo'w{74T4V44r   c                 V   > U R                  5       U l        [        TU ]  " U/UQ70 UD6$ rI   )r   rV   rE   rx   r   s       r   rx   BaseUpdateView.post   s*    oo'w|G5d5f55r   rl   r   rQ   s   @r   r   r      r   r   r   c                       \ rS rSrSrSrSrg)
UpdateView   zDView for updating an object, with a response rendered by a template.r   r"   Nr   r"   r   r   r   r      s    N"r   r   c                   .    \ rS rSrSrSrS rS rS rSr	g)DeletionMixin   z&Provide the ability to delete objects.Nc                     U R                  5       U l        U R                  5       nU R                  R                  5         [	        U5      $ )zV
Call the delete() method on the fetched object and then redirect to the
success URL.
)r   rV   r7   deleter   )r   r,   rr   r0   r5   s        r   r   DeletionMixin.delete   s;    
 oo'**,#K00r   c                 .    U R                   " U/UQ70 UD6$ rI   )r   rq   s       r   rx   DeletionMixin.post   s    {{74T4V44r   c                     U R                   (       a0  U R                   R                  " S0 U R                  R                  D6$ [	        S5      e)Nr4   r"   )r5   rc   rV   rd   r   r   s    r   r7   DeletionMixin.get_success_url   s;    ##**BT[[-A-ABB&'VWWr   rl   )
rJ   rK   rL   rM   rN   r5   r   rx   r7   rO   r"   r   r   r   r      s    0K15Xr   r   c                   (    \ rS rSrSr\rS rS rSr	g)BaseDeleteView   zl
Base view for deleting an object.

Using this base class requires subclassing to provide a response mixin.
c                     U R                  5       U l        U R                  5       nUR                  5       (       a  U R	                  U5      $ U R                  U5      $ rI   )r   rV   r$   rv   r<   rB   rw   s        r   rx   BaseDeleteView.post   sH    
 oo'}}==????4(($$T**r   c                 l    U R                  5       nU R                  R                  5         [        U5      $ rI   )r7   rV   r   r   )r   r;   r5   s      r   r<   BaseDeleteView.form_valid  s+    **,#K00r   rl   N)
rJ   rK   rL   rM   rN   r   r   rx   r<   rO   r"   r   r   r   r      s     J
+1r   r   c                       \ rS rSrSrSrSrg)
DeleteViewi  zg
View for deleting an object retrieved with self.get_object(), with a
response rendered by a template.
_confirm_deleter"   Nr   r"   r   r   r   r     s    
 -r   r   N)django.core.exceptionsr   django.formsr   r   r[   django.httpr   django.views.generic.baser   r   r	   django.views.generic.detailr
   r   r   r   rS   rn   r~   r   r   r   r   r   r   r   r   r"   r   r   <module>r      s    7  . , O O <2 <2~:(Y 1 :(z*d *0-9o -J$l J6^_ 6 #2N #6^_ 6 #2N #X X41]I~ 16-2N -r   