
    Ef?                         d Z  G d de          Z G d de          Z G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G 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                   6    e Zd ZdZddZed             Zd ZdS )DjangoModelExportAdapterzdjango export parameter holderNc                 "    || _         || _        d S N)modelexport_columnsselfr   r   s      \/var/www/ffwdstore.be/apps/py-env/lib/python3.11/site-packages/pyexcel_io/database/common.py__init__z!DjangoModelExportAdapter.__init__   s    
,    c                 *    |                                  S zget database table name)get_namer	   s    r
   namezDjangoModelExportAdapter.name   s     }}r   c                 $    | j         j        j        S r   )r   _meta
model_namer   s    r
   r   z!DjangoModelExportAdapter.get_name   s    z**r   r   )__name__
__module____qualname____doc__r   propertyr   r    r   r
   r   r      sX        ((- - - -   X+ + + + +r   r   c                       e Zd ZdZ G d de          Zd Zed             Zed             Z	ed             Z
ej        d             Ze	j        d	             Z	e
j        d
             Z
d ZdS )DjangoModelImportAdapterz'parameter holder for django data importc                       e Zd ZdZd ZdS )'DjangoModelImportAdapter.InOutParameterz%local class to manipulate variable ioc                 "    d | _         d | _        d S r   )outputinputr   s    r
   r   z0DjangoModelImportAdapter.InOutParameter.__init__#   s    DKDJJJr   Nr   r   r   r   r   r   r   r
   InOutParameterr       s)        33	 	 	 	 	r   r#   c                     t                               | |           |                                 | _        |                                 | _        |                                 | _        |                                  d S r   )r   r   r#   _column_names_column_name_mapping_dict_row_initializer_process_parametersr	   r   s     r
   r   z!DjangoModelImportAdapter.__init__'   sl     ))$666!0022)-)<)<)>)>& $ 3 3 5 5  """""r   c                     | j         j        S )z%contructor for a database table entry)r'   r    r   s    r
   row_initializerz(DjangoModelImportAdapter.row_initializer.   s     $++r   c                     | j         j        S )z$the desginated database column names)r%   r    r   s    r
   column_namesz%DjangoModelImportAdapter.column_names3   s     !((r   c                     | j         j        S )z2if not the same, a mapping dictionary is looked up)r&   r    r   s    r
   column_name_mapping_dictz1DjangoModelImportAdapter.column_name_mapping_dict8   s     -44r   c                 F    || j         _        |                                  dS )zset the contructorN)r'   r!   r(   )r	   
a_functions     r
   r+   z(DjangoModelImportAdapter.row_initializer=   s'     '1#  """""r   c                 F    || j         _        |                                  dS )zset the column namesN)r%   r!   r(   )r	   r-   s     r
   r-   z%DjangoModelImportAdapter.column_namesC   s'     $0   """""r   c                 F    || j         _        |                                  dS )zset the mapping dictN)r&   r!   r(   )r	   mapping_dicts     r
   r/   z1DjangoModelImportAdapter.column_name_mapping_dictI   s'     0<&,  """""r   c                    | j         j        d | j         _        n| j         j        | j         _        t          | j        j        t
                    r#| j        j        | j        _        d | j        _        nt          | j        j        t                    r| j        j        rg | j        _        g }t          | j        j                  D ]W\  }}|| j        j        v rD| j        j        	                    | j        j        |                    |	                    |           X|| j        _        | j        j        | j        j        | j        _        d S d S r   )
r'   r!   r    
isinstancer&   listr%   dict	enumerateappend)r	   indicesindexr   s       r
   r(   z,DjangoModelImportAdapter._process_parametersO   sF    &.+/D!((+/+@+FD!(d4:DAA 	@(,(F(LD%48D*116<dCC 	@!' 	@,.")#,T-?-E#F#F . .KE4t=CCC*188 :@F    u---8?.5$,(,(:(@D%%% -,r   N)r   r   r   r   objectr#   r   r   r+   r-   r/   setterr(   r   r   r
   r   r      s       11       # # # , , X, ) ) X) 5 5 X5 # # #
 # # #
 $# # %$#
A A A A Ar   r   c                       e Zd ZdZd Zd ZdS )DjangoModelExporterz(public interface for django model exportc                     g | _         d S r   )adaptersr   s    r
   r   zDjangoModelExporter.__init__j   s    r   c                 :    | j                             |           dS z-store model parameter for more than one modelN)rB   r:   r	   import_adapters     r
   r:   zDjangoModelExporter.appendm   s    ^,,,,,r   N)r   r   r   r   r   r:   r   r   r
   r@   r@   g   s8        22  - - - - -r   r@   c                   $    e Zd ZdZd Zd Zd ZdS )DjangoModelImporterz(public interface for django model importc                     i | _         d S r   )	_adaptersr   s    r
   r   zDjangoModelImporter.__init__u   s    r   c                 >    || j         |                                <   dS rD   )rJ   r   rE   s     r
   r:   zDjangoModelImporter.appendx   s     4B~..00111r   c                 8    | j                             |d          S )zget a parameter outN)rJ   get)r	   r   s     r
   rM   zDjangoModelImporter.get|   s    ~!!$---r   N)r   r   r   r   r   r:   rM   r   r   r
   rH   rH   r   sJ        22  C C C. . . . .r   rH   c                        e Zd ZdZddZd ZdS )SQLTableExportAdapterz*parameter holder for sql table data exportNc                 L    t                               | ||           || _        d S r   )r   r   tabler   s      r
   r   zSQLTableExportAdapter.__init__   s%     ))$~FFF


r   c                 .    t          | j        dd           S N__tablename__getattrrQ   r   s    r
   r   zSQLTableExportAdapter.get_name       tz?D999r   r   r   r   r   r   r   r   r   r   r
   rO   rO      s=        44   : : : : :r   rO   c                       e Zd ZdZd Zd ZdS )SQLTableImportAdapterz,parameter holder for sqlalchemy table importc                 J    t                               | |           || _        d S r   )r   r   rQ   r)   s     r
   r   zSQLTableImportAdapter.__init__   s#     ))$666


r   c                 .    t          | j        dd           S rS   rU   r   s    r
   r   zSQLTableImportAdapter.get_name   rW   r   NrX   r   r   r
   rZ   rZ      s8        66  : : : : :r   rZ   c                       e Zd ZdZd ZdS )SQLTableExporterz%public interface for sql table exportc                 H    t                               |            || _        d S r   )r@   r   sessionr	   r`   s     r
   r   zSQLTableExporter.__init__   !    $$T***r   Nr"   r   r   r
   r^   r^      s)        //    r   r^   c                       e Zd ZdZd ZdS )SQLTableImporterz1public interface to do data import via sqlalchemyc                 H    t                               |            || _        d S r   )rH   r   r`   ra   s     r
   r   zSQLTableImporter.__init__   rb   r   Nr"   r   r   r
   rd   rd      s)        ;;    r   rd   N)
r   r=   r   r   r@   rH   rO   rZ   r^   rd   r   r   r
   <module>rf      s   + + + + +v + + +"GA GA GA GA GA7 GA GA GAT- - - - -& - - -. . . . .& . . .: : : : :4 : : :: : : : :4 : : :    *       *     r   