3
gn                 @   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,t|jdS tj	j
| |S )NUTCz%Y-%m-%dT%H:%M:%SZ)
isinstancer   strdatetimer   Z	TIME_ZONEAssertionErrorstrftimejsonr   default)selfobj r   c/var/www/tester-filtro-web/env/lib/python3.6/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tt j| S )N)r   dictr
   r   encode)valuer   r   r   dumps    s    r   c             C   s    t j| td}t|tst|S )N)parse_float)r   loadsr   r   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 )N)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|krd|d< t j| f|| d S )Nr   z{})r   __init__)r   argskwargsr   r   r   r    ;   s    zJSONField.__init__c             C   s:   |si S t |tr2t|}t |ts(ttf |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   r   resr   r   r   	to_python@   s    

zJSONField.to_pythonc                s$   |st  jdS t  j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   

