
    jg.                         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y)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                 4    t               j                  |       S N)r   encode)values    [/var/www/html/Stanley/venv/lib/python3.12/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y)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y)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                 |    |j                  dt              |d<   t        j                  j                  | g|i | y )Ndefault)getdictr   	TextField__init__)r   argskwargss      r	   r*   zJSONField.__init__5   s5    "JJy$7y!!$888r   c                     | j                         r/| j                  }t        |      r |       }| j                  |      S t        |          S r   )has_defaultr&   callable	to_pythonsuperget_default)r   r&   	__class__s     r	   r2   zJSONField.get_default9   sD    llG !)>>'**w"$$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 DB r   )
isinstancestrr   r(   r   listr!   )r   r   ress      r	   r0   zJSONField.to_pythonC   sY    =ERKIeS!,CCc4 ?c?"T"C= 
r   c                 t    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   s/    %%<V%%t;EBBr   c                 $    | j                  |      S r   )r0   )r   r   
expression
connections       r	   from_db_valuezJSONField.from_db_valueY   s    ~~e$$r   c                 Z    || j                   ry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\   s*    =TYY %%%LEr   c                 Z    t         |          \  }}}}| j                  dk(  r|d= ||||fS )Nz{}r&   )r1   deconstructr&   )r   namepathr+   r,   r3   s        r	   rD   zJSONField.deconstructg   s<    #(7#6#8 dD&<<4y!T4''r   )r   r   r   r   r*   r2   r0   r;   r?   rB   rD   __classcell__)r3   s   @r	   r$   r$   /   s1    
9%"C
%	( (r   r$   )r   r   django.core.serializers.jsonr   	django.dbr   r
   r   r(   r   r8   r!   r)   r$   r   r   r	   <module>rJ      sI   
  : -t t <(   <(r   