
    7 f                     f    d dl Z d dlmZ d dlmZ d dlmZ d dlmZ  G d dej                        Z
y)    N)forms)signing)ValidationError)	force_strc                   ~     e Zd ZdZdZ ej                  dej                        Z fdZ	d Z
d Zed        Z xZS )	SignedDataForma  Helper form that wraps a form to validate its contents on post.

    class PanelForm(forms.Form):
        # fields

    On render:
        form = SignedDataForm(initial=PanelForm(initial=data).initial)

    On POST:
        signed_form = SignedDataForm(request.POST)
        if signed_form.is_valid():
            panel_form = PanelForm(signed_form.verified_data)
            if panel_form.is_valid():
                # Success
    django_debug_toolbarT)requiredwidgetc                 v    |j                  dd       }|rd| j                  |      i}t        |   |d|i| y )Ninitialsigned)popsignsuper__init__)selfargskwargsr   	__class__s       I/var/www/equiseq/venv/lib/python3.11/site-packages/debug_toolbar/forms.pyr   zSignedDataForm.__init__   s@    **Y-7!34G$::6:    c                     	 t        j                  t        j                  | j                        j                  | j                  d               }|S # t        j                  $ r}t        d      |d }~ww xY w)Nsaltr   zBad signature)	jsonloadsr   Signerr   unsigncleaned_dataBadSignaturer   )r   verifiedexcs      r   clean_signedzSignedDataForm.clean_signed#   se    	<zzDII.55d6G6G6QRH O## 	<!/2;	<s   AA A7&A22A7c                 D    | j                         xr | j                  d   S )Nr   )is_validr    )r   s    r   verified_datazSignedDataForm.verified_data,   s    }}>4#4#4X#>>r   c                     t        j                  | j                        j                  t	        j
                  |j                         D ci c]  \  }}|t        |       c}}            S c c}}w )Nr   )r   r   r   r   r   dumpsitemsr   )clsdatakeyvalues       r   r   zSignedDataForm.sign/   sP    ~~388,11JJ

M*#uYu--MN
 	
Ms   A.)__name__
__module____qualname____doc__r   r   	CharFieldHiddenInputr   r   r$   r'   classmethodr   __classcell__)r   s   @r   r   r   	   sJ      "DU__d53D3DEF;<? 
 
r   r   )r   djangor   django.corer   django.core.exceptionsr   django.utils.encodingr   Formr    r   r   <module>r=      s$       2 +*
UZZ *
r   