o
    êË·eì  ã                   @   s²   d dl Z d dlmZ ddlmZ ddlmZ ddlmZ z$zd dl	m
Z
 d d	lmZ W n ey<   d d
l	m
Z
mZ Y nw dZW n eyK   dZY nw ejG dd„ deƒƒZdS )é    N)Úformat_htmlé   )ÚAttributeDicté   )Úlibrary)ÚBaseLinkColumn)ÚHStoreField)Ú	JSONField)r   r	   TFc                       s6   e Zd ZdZd	‡ fdd„	Zdd„ Zedd„ ƒZ‡  ZS )
Ú
JSONColumna¼  
    Render the contents of `~django.contrib.postgres.fields.JSONField` or
    `~django.contrib.postgres.fields.HStoreField` as an indented string.

    .. versionadded :: 1.5.0

    .. note::

        Automatic rendering of data to this column requires PostgreSQL support
        (psycopg2 installed) to import the fields, but this column can also be
        used manually without it.

    Arguments:
        json_dumps_kwargs: kwargs passed to `json.dumps`, defaults to `{'indent': 2}`
        attrs (dict): In addition to *attrs* keys supported by `~.Column`, the
            following are available:

             - ``pre`` -- ``<pre>`` around the rendered JSON string in ``<td>`` elements.

    Nc                    s,   |d ur|nddi| _ tƒ jdi |¤Ž d S )NÚindentr   © )Újson_dumps_kwargsÚsuperÚ__init__)Úselfr   Úkwargs©Ú	__class__r   úX/var/www/ideatree/venv/lib/python3.10/site-packages/django_tables2/columns/jsoncolumn.pyr   .   s   ÿzJSONColumn.__init__c                 C   s.   t dt| j di ¡ƒ ¡ tj|fi | j¤ŽƒS )Nz<pre {}>{}</pre>Úpre)r   r   ÚattrsÚgetÚas_htmlÚjsonÚdumpsr   )r   ÚrecordÚvaluer   r   r   Úrender5   s
   ýzJSONColumn.renderc                 K   s(   t rt|ttfƒr| di |¤ŽS d S d S )Nr   )ÚPOSTGRES_AVAILABLEÚ
isinstancer	   r   )ÚclsÚfieldr   r   r   r   Ú
from_field<   s
   þzJSONColumn.from_field)N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úclassmethodr"   Ú__classcell__r   r   r   r   r
      s    r
   )r   Údjango.utils.htmlr   Úutilsr   Úbaser   Ú
linkcolumnr   Údjango.contrib.postgres.fieldsr   Údjango.db.modelsr	   ÚImportErrorr   Úregisterr
   r   r   r   r   Ú<module>   s$    ÿý