
    Ƿi.                         d Z ddlZddlmZ ddlmZ d Zd Z G d de          Z	 G d	 d
e
          Z G d dej                  ZdS )a%  
JSONField automatically serializes most Python terms to JSON data.
Creates a TEXT field with a default value of "{}".  See test_json.py for
more information.

 from django.db import models
 from django_extensions.db.fields import json

 class LOL(models.Model):
     extra = json.JSONField()
    N)DjangoJSONEncoder)modelsc                 D    t                                          |           S N)r   encode)values    X/srv/django_bis/venv311/lib/python3.11/site-packages/django_extensions/db/fields/json.pydumpsr
      s    %%e,,,    c                 *    t          j        |           S r   )jsonloads)txts    r	   r   r      s    :c??r   c                       e Zd ZdZd ZdS )JSONDict
    Hack so repr() called by dumpdata will output JSON instead of
    Python formatted data.  This way fixtures will work!
    c                      t          |           S r   r
   selfs    r	   __repr__zJSONDict.__repr__!       T{{r   N__name__
__module____qualname____doc__r    r   r	   r   r      -         
    r   r   c                       e Zd ZdZd ZdS )JSONListr   c                      t          |           S r   r   r   s    r	   r   zJSONList.__repr__+   r   r   Nr   r   r   r	   r!   r!   %   r   r   r!   c                   N     e Zd ZdZd Z fdZd Z fdZd Zd Z	 fdZ
 xZS )		JSONFieldz
    JSONField is a generic textfield that neatly serializes/unserializes
    JSON objects seamlessly.  Main thingy must be a dict object.
    c                 v    |                     dt                    |d<   t          j        j        | g|R i | d S )Ndefault)getdictr   	TextField__init__)r   argskwargss      r	   r*   zJSONField.__init__5   sD    "JJy$77y!$888888888r   c                     |                                  r5| j        }t          |          r
 |            }|                     |          S t	                                                      S r   )has_defaultr&   callable	to_pythonsuperget_default)r   r&   	__class__s     r	   r2   zJSONField.get_default9   sa     	+lG   $!'))>>'***ww""$$$r   c                     ||dk    ri S t          |t                    rt          |          }n|}t          |t                    rt	          di |S t          |t
                    rt          |          S |S )z=Convert our string value to JSON after we load it from the DBN r   )
isinstancestrr   r(   r   listr!   )r   r   ress      r	   r0   zJSONField.to_pythonC   s}    =ERKKIeS!! 	,,CCCc4   	!??c??"T"" 	!C== 
r   c                     t          |t                    st          |          S t          t          j        |                               |          S r   )r6   r7   r
   r1   r   r)   get_prep_value)r   r   r3   s     r	   r;   zJSONField.get_prep_valueT   sB    %%% 	 <<V%t,,;;EBBBr   c                 ,    |                      |          S r   )r0   )r   r   
expression
connections       r	   from_db_valuezJSONField.from_db_valueY   s    ~~e$$$r   c                 d    |	| j         rdS t          |t                    st          |          }|S )z2Convert our JSON object to a string before we saveN)nullr6   r7   r
   )r   r   r>   r,   s       r	   get_db_prep_savezJSONField.get_db_prep_save\   s6    =TY=4 %%% 	!%LLEr   c                 v    t                                                      \  }}}}| j        dk    r|d= ||||fS )Nz{}r&   )r1   deconstructr&   )r   namepathr+   r,   r3   s        r	   rD   zJSONField.deconstructg   sE    #(77#6#6#8#8 dD&<4y!T4''r   )r   r   r   r   r*   r2   r0   r;   r?   rB   rD   __classcell__)r3   s   @r	   r$   r$   /   s         
9 9 9% % % % %  "C C C C C
% % %	 	 	( ( ( ( ( ( ( ( (r   r$   )r   r   django.core.serializers.jsonr   	django.dbr   r
   r   r(   r   r8   r!   r)   r$   r   r   r	   <module>rJ      s   
 
  : : : : : :      - - -      t       t   <( <( <( <( <(  <( <( <( <( <(r   