3
g.                 @   sj   d Z ddlZddlmZ ddlmZ dd Zdd ZG d	d
 d
eZ	G dd de
ZG d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             C   s   t  j| S )N)r   encode)value r   ^/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django_extensions/db/fields/json.pydumps   s    r   c             C   s
   t j| S )N)jsonloads)txtr   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   )selfr   r   r   __repr__!   s    zJSONDict.__repr__N)__name__
__module____qualname____doc__r   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdd ZdS )JSONListz
    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   r   +   s    zJSONList.__repr__N)r   r   r   r   r   r   r   r   r   r   %   s   r   c                   sX   e Zd ZdZdd Z fddZdd Z fd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 thingy must be a dict object.
    c             O   s(   |j dt|d< tjj| f|| d S )Ndefault)getdictr   	TextField__init__)r   argskwargsr   r   r   r   5   s    zJSONField.__init__c                s0   | j  r&| j}t|r| }| j|S t j S )N)Zhas_defaultr   callable	to_pythonsuperget_default)r   r   )	__class__r   r   r   9   s    
zJSONField.get_defaultc             C   sV   |dks|dkri S t |tr(t|}n|}t |tr@tf |S t |trRt|S |S )z=Convert our string value to JSON after we load it from the DBN )
isinstancestrr
   r   r   listr   )r   r   resr   r   r   r   C   s    




zJSONField.to_pythonc                s$   t |tst|S ttj| j|S )N)r"   r#   r   r   r   r   get_prep_value)r   r   )r    r   r   r&   T   s    
zJSONField.get_prep_valuec             C   s
   | j |S )N)r   )r   r   Z
expression
connectionr   r   r   from_db_valueY   s    zJSONField.from_db_valuec             K   s(   |dkr| j rdS t|ts$t|}|S )z2Convert our JSON object to a string before we saveN)nullr"   r#   r   )r   r   r'   r   r   r   r   get_db_prep_save\   s
    
zJSONField.get_db_prep_savec                s.   t  j \}}}}| jdkr"|d= ||||fS )Nz{}r   )r   deconstructr   )r   namepathr   r   )r    r   r   r+   g   s    
zJSONField.deconstruct)r   r   r   r   r   r   r   r&   r(   r*   r+   __classcell__r   r   )r    r   r   /   s   
r   )r   r	   Zdjango.core.serializers.jsonr   Z	django.dbr   r   r
   r   r   r$   r   r   r   r   r   r   r   <module>   s   

