
    +'&h                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ dd	l
mZ dd
lmZ ddlmZ ddlmZ ddlmZ d Zd Zg dZd ZdS )z@This module defines the functions used for administration tasks.    )Column)Index)Table)event)func)dialects)_check_spatial_type)_spatial_idx_name)ArgumentError)	Geography)Geometry)Rasterc                     t           j        t           j        t           j        t           j        t           j        d}|                    | t           j                  S )z!Select the dialect from its name.)
geopackagemysqlmariadb
postgresqlsqlite)r   r   r   r   r   r   getcommon)dialect_nameknown_dialectss     U/var/www/html/reinick/venv/lib/python3.11/site-packages/geoalchemy2/admin/__init__.pyselect_dialectr      sF     )#)/ N lHO<<<    c                     t          j        t          d          d             } t          j        t          d          d             }t          j        t          d          d             }t          j        t          d          d             }t          j        t          d	          d
             }t          j        t          d          d             }dS )zGSetup the DDL event listeners to automatically process spatial columns.before_createc                 R     t          |j        j                  j        | |fi | dS )zHandle spatial indexes.N)r   dialectnamer   tablebindkws      r   r   z0setup_ddl_event_listeners.<locals>.before_create!   s4     	8t|())7tJJrJJJJJr   after_createc                 R     t          |j        j                  j        | |fi | dS z@Restore original column list including managed Geometry columns.N)r   r   r    r%   r!   s      r   r%   z/setup_ddl_event_listeners.<locals>.after_create&   s4     	7t|())6udIIbIIIIIr   before_dropc                 R     t          |j        j                  j        | |fi | dS )z"Drop the managed Geometry columns.N)r   r   r    r(   r!   s      r   r(   z.setup_ddl_event_listeners.<locals>.before_drop+   s4     	6t|())5eTHHRHHHHHr   
after_dropc                 R     t          |j        j                  j        | |fi | dS r'   )r   r   r    r*   r!   s      r   r*   z-setup_ddl_event_listeners.<locals>.after_drop0   s4     	5t|())4UDGGBGGGGGr   after_parent_attachc                    t          |t                    sdS t          | j        dd          s| j        j        | _        n&t          | j        d          r| j        | j        _        t          | j        dd          s%t          | j        dd          rt          d          t          | j        dd          sdS 	 | j        j        rdS n# t          $ r Y nw xY wddd	}| }t          | j        t          t          f          r| j        j        r| j        d
i|d<   n.t          | j        t                    rt          j        |           }|                    t%          t'          |j        | j                  |fi |           dS )z"Automatically add spatial indexes.NnullableTspatial_indexFuse_N_D_indexz4Arg Error(use_N_D_index): spatial_index must be Truegist)postgresql_using_column_flaggist_geometry_ops_ndpostgresql_ops)
isinstancer   getattrtyper.   hasattrr   _spatial_index_reflectedAttributeErrorr	   r   r   r0   r    r   r   ST_ConvexHullappend_constraintr   r
   )columnr"   kwargscols       r   r,   z6setup_ddl_event_listeners.<locals>.after_parent_attach5   s    %'' 	 Fv{J55 	3$k2FOOV[*-- 	3#)?FK v{OU;; 	XK%A
 A
 	X   VWWWv{OU;; 	F	{3  	 	 	D	 !' 
 
 v{Xy,ABB 	-{( Q,2K9O+P'( f55 	-$V,,C!%*fk::   	
 	
 	
 	
 	
s   :C	 	
CCcolumn_reflectc                 l    t          | j        j        j                                      | ||           d S N)r   r#   r   r    reflect_geometry_column)	inspectorr"   column_infos      r   rA   z1setup_ddl_event_listeners.<locals>.column_reflectd   s;    y~-233KKuk	
 	
 	
 	
 	
r   N)r   listens_forr   r   )r   r%   r(   r*   r,   rA   s         r   setup_ddl_event_listenersrH      s    uo..K K /.K un--J J .-J um,,I I -,I ul++H H ,+H v455,
 ,
 65,
\ u.//
 
 0/
 
 
r   )r   r   rH   c                      t           S rC   )__all__ r   r   __dir__rL   r   s    Nr   N)__doc__
sqlalchemyr   r   r   r   sqlalchemy.sqlr   geoalchemy2.adminr   !geoalchemy2.admin.dialects.commonr	   r
   geoalchemy2.excr   geoalchemy2.typesr   r   r   r   rH   rJ   rL   rK   r   r   <module>rT      s/   F F                               & & & & & & A A A A A A ? ? ? ? ? ? ) ) ) ) ) ) ' ' ' ' ' ' & & & & & & $ $ $ $ $ $	= 	= 	=J
 J
 J
Z      r   