U
    ®[Öe?  ã                   @   sˆ   d Z G dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZ	dS )zô
    pyexcel_io.database.common
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Common classes shared among database importers and exporters

    :copyright: (c) 2014-2022 by Onni Software Ltd.
    :license: New BSD License, see LICENSE for more details
c                   @   s.   e Zd ZdZd	dd„Zedd„ ƒZdd„ ZdS )
ÚDjangoModelExportAdapterzdjango export parameter holderNc                 C   s   || _ || _d S ©N)ÚmodelÚexport_columns©Úselfr   r   © r   ú\/var/www/html/services/stratfitenv/lib/python3.8/site-packages/pyexcel_io/database/common.pyÚ__init__   s    z!DjangoModelExportAdapter.__init__c                 C   s   |   ¡ S ©zget database table name)Úget_name©r   r   r   r   Úname   s    zDjangoModelExportAdapter.namec                 C   s
   | j jjS r
   )r   Ú_metaZ
model_namer   r   r   r   r      s    z!DjangoModelExportAdapter.get_name)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   Úpropertyr   r   r   r   r   r   r      s
   

r   c                   @   s~   e Zd ZdZG dd„ deƒZdd„ Zedd„ ƒZedd	„ ƒZ	ed
d„ ƒZ
ejdd„ ƒZe	jdd	„ ƒZ	e
jdd„ ƒZ
dd„ ZdS )ÚDjangoModelImportAdapterz'parameter holder for django data importc                   @   s   e Zd ZdZdd„ ZdS )z'DjangoModelImportAdapter.InOutParameterz%local class to manipulate variable ioc                 C   s   d | _ d | _d S r   )ÚoutputÚinputr   r   r   r   r	   #   s    z0DjangoModelImportAdapter.InOutParameter.__init__N©r   r   r   r   r	   r   r   r   r   ÚInOutParameter    s   r   c                 C   s6   t  | |¡ |  ¡ | _|  ¡ | _|  ¡ | _|  ¡  d S r   )r   r	   r   Ú_column_namesÚ_column_name_mapping_dictÚ_row_initializerÚ_process_parameters©r   r   r   r   r   r	   '   s
    


z!DjangoModelImportAdapter.__init__c                 C   s   | j jS )z%contructor for a database table entry)r   r   r   r   r   r   Úrow_initializer.   s    z(DjangoModelImportAdapter.row_initializerc                 C   s   | j jS )z$the desginated database column names)r   r   r   r   r   r   Úcolumn_names3   s    z%DjangoModelImportAdapter.column_namesc                 C   s   | j jS )z2if not the same, a mapping dictionary is looked up)r   r   r   r   r   r   Úcolumn_name_mapping_dict8   s    z1DjangoModelImportAdapter.column_name_mapping_dictc                 C   s   || j _|  ¡  dS )zset the contructorN)r   r   r   )r   Z
a_functionr   r   r   r   =   s    c                 C   s   || j _|  ¡  dS )zset the column namesN)r   r   r   )r   r   r   r   r   r   C   s    c                 C   s   || j _|  ¡  dS )zset the mapping dictN)r   r   r   )r   Zmapping_dictr   r   r   r    I   s    c                 C   sÎ   | j jd krd | j _n| j j| j _t| jjtƒrF| jj| j_d | j_nlt| jjtƒr²| jjr²g | j_g }t| jjƒD ]4\}}|| jjkrt| jj 	| jj| ¡ | 	|¡ qt|| j_| jjd krÊ| jj| j_d S r   )
r   r   r   Ú
isinstancer   Úlistr   ÚdictÚ	enumerateÚappend)r   ÚindicesÚindexr   r   r   r   r   O   s&    


ÿz,DjangoModelImportAdapter._process_parametersN)r   r   r   r   Úobjectr   r	   r   r   r   r    Úsetterr   r   r   r   r   r      s    





r   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚDjangoModelExporterz(public interface for django model exportc                 C   s
   g | _ d S r   )Úadaptersr   r   r   r   r	   j   s    zDjangoModelExporter.__init__c                 C   s   | j  |¡ dS ©z-store model parameter for more than one modelN)r+   r%   ©r   Zimport_adapterr   r   r   r%   m   s    zDjangoModelExporter.appendN)r   r   r   r   r	   r%   r   r   r   r   r*   g   s   r*   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚDjangoModelImporterz(public interface for django model importc                 C   s
   i | _ d S r   )Ú	_adaptersr   r   r   r   r	   u   s    zDjangoModelImporter.__init__c                 C   s   || j | ¡ < dS r,   )r/   r   r-   r   r   r   r%   x   s    zDjangoModelImporter.appendc                 C   s   | j  |d¡S )zget a parameter outN)r/   Úget)r   r   r   r   r   r0   |   s    zDjangoModelImporter.getN)r   r   r   r   r	   r%   r0   r   r   r   r   r.   r   s   r.   c                   @   s"   e Zd ZdZddd„Zdd„ ZdS )ÚSQLTableExportAdapterz*parameter holder for sql table data exportNc                 C   s   t  | ||¡ || _d S r   )r   r	   Útabler   r   r   r   r	   „   s    zSQLTableExportAdapter.__init__c                 C   s   t | jdd ƒS ©NZ__tablename__©Úgetattrr2   r   r   r   r   r   ˆ   s    zSQLTableExportAdapter.get_name)N©r   r   r   r   r	   r   r   r   r   r   r1      s   
r1   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚSQLTableImportAdapterz,parameter holder for sqlalchemy table importc                 C   s   t  | |¡ || _d S r   )r   r	   r2   r   r   r   r   r	      s    zSQLTableImportAdapter.__init__c                 C   s   t | jdd ƒS r3   r4   r   r   r   r   r   “   s    zSQLTableImportAdapter.get_nameNr6   r   r   r   r   r7   Œ   s   r7   c                   @   s   e Zd ZdZdd„ ZdS )ÚSQLTableExporterz%public interface for sql table exportc                 C   s   t  | ¡ || _d S r   )r*   r	   Úsession©r   r9   r   r   r   r	   š   s    
zSQLTableExporter.__init__Nr   r   r   r   r   r8   —   s   r8   c                   @   s   e Zd ZdZdd„ ZdS )ÚSQLTableImporterz1public interface to do data import via sqlalchemyc                 C   s   t  | ¡ || _d S r   )r.   r	   r9   r:   r   r   r   r	   ¢   s    
zSQLTableImporter.__init__Nr   r   r   r   r   r;   Ÿ   s   r;   N)
r   r(   r   r   r*   r.   r1   r7   r8   r;   r   r   r   r   Ú<module>   s   J