
    jgn                         d Z ddlZddlmZ ddlZddlmZ ddlmZ  G d dej                        Z	d Z
d	 Z G d
 de      Z G d de      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)Decimal)settings)StringFieldc                       e Zd Zd Zy)JSONEncoderc                     t        |t              rt        |      S t        |t        j                        r&t        j
                  dk(  sJ |j                  d      S t        j                  j                  | |      S )NUTCz%Y-%m-%dT%H:%M:%SZ)

isinstancer   strdatetimer   	TIME_ZONEstrftimejsonr   default)selfobjs     `/var/www/html/Stanley/venv/lib/python3.12/site-packages/django_extensions/mongodb/fields/json.pyr   zJSONEncoder.default   sb    c7#s8OX../%%...<< 455''c22    N)__name__
__module____qualname__r    r   r   r   r      s    3r   r   c                 X    t        | t              sJ t               j                  |       S N)r
   dictr   encode)values    r   dumpsr       s%    eT"""=&&r   c                 `    t        j                  | t              }t        |t              sJ |S )N)parse_float)r   loadsr   r
   r   )txtr   s     r   r!   r!   %   s'    JJs0EeT"""Lr   c                       e Zd ZdZd Zy)JSONDictz
    Hack so repr() called by dumpdata will output JSON instead of
    Python formatted data.  This way fixtures will work!
    c                     t        |       S r   )r   )r   s    r   __repr__zJSONDict.__repr__1   s    T{r   N)r   r   r   __doc__r&   r   r   r   r$   r$   +   s    
r   r$   c                   .     e Zd Z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 object must be a dict object.
    c                 H    d|vrd|d<   t        j                  | g|i | y )Nr   z{})r   __init__)r   argskwargss      r   r+   zJSONField.__init__;   s,    F" $F9T3D3F3r   c                 ~    |si S t        |t              r(t        |      }t        |t              sJ t	        di |S |S )z? Convert our string value to JSON after we load it from the DB r   )r
   r   r!   r   r$   )r   r   ress      r   	to_pythonzJSONField.to_python@   s>    Is#,Cc4(((?c?"Lr   c                 V    |st         |   d      S t         |   t        |            S )z4 Convert our JSON object to a string before we save  )superget_db_prep_saver   )r   r   	__class__s     r   r4   zJSONField.get_db_prep_saveK   s*    7+B//7+E%L99r   )r   r   r   r'   r+   r0   r4   __classcell__)r5   s   @r   r)   r)   5   s    
4
	: :r   r)   )r'   r   decimalr   r   django.confr   mongoengine.fieldsr   r   r   r!   r   r$   r)   r   r   r   <module>r:      sO   
      *3$"" 3'
t : :r   