a
    8Xhn                     @   s~   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 dej	Z	dd	 Z
d
d ZG dd deZG dd de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)Decimal)settings)StringFieldc                   @   s   e Zd Zdd ZdS )JSONEncoderc                 C   sD   t |trt|S t |tjr6tjdks,J |dS tj	| |S )NUTCz%Y-%m-%dT%H:%M:%SZ)

isinstancer   strdatetimer   Z	TIME_ZONEstrftimejsonr   default)selfobj r   j/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/django_extensions/mongodb/fields/json.pyr      s    

zJSONEncoder.defaultN)__name__
__module____qualname__r   r   r   r   r   r      s   r   c                 C   s   t | tsJ t | S N)r   dictr   encode)valuer   r   r   dumps    s    r   c                 C   s    t j| td}t|tsJ |S )N)parse_float)r   loadsr   r   r   )txtr   r   r   r   r   %   s    r   c                   @   s   e Zd ZdZdd ZdS )JSONDictz
    Hack so repr() called by dumpdata will output JSON instead of
    Python formatted data.  This way fixtures will work!
    c                 C   s   t | S r   )r   )r   r   r   r   __repr__1   s    zJSONDict.__repr__N)r   r   r   __doc__r   r   r   r   r   r   +   s   r   c                       s0   e Zd ZdZdd Zdd Z fddZ  ZS )	JSONFieldz
    JSONField is a generic textfield that neatly serializes/unserializes
    JSON objects seamlessly. Main object must be a dict object.
    c                 O   s,   d|vrd|d< t j| g|R i | d S )Nr   z{})r   __init__)r   argskwargsr   r   r   r    ;   s    zJSONField.__init__c                 C   s>   |si S t |tr6t|}t |ts(J tf i |S |S dS )z? Convert our string value to JSON after we load it from the DB N)r   r   r   r   r   )r   r   resr   r   r   	to_python@   s    
zJSONField.to_pythonc                    s$   |st  dS t  t|S dS )z4 Convert our JSON object to a string before we save  N)superget_db_prep_saver   )r   r   	__class__r   r   r'   K   s    zJSONField.get_db_prep_save)r   r   r   r   r    r$   r'   __classcell__r   r   r(   r   r   5   s   r   )r   r	   decimalr   r   Zdjango.confr   Zmongoengine.fieldsr   r   r   r   r   r   r   r   r   r   r   <module>   s   

