
    Dvg\                     :    d dl mZ d dlmZ  G d de          ZdS )    )OGRGeomType)DatabaseIntrospectionc                   @     e Zd Zi Zej        g dz   Z fdZd Z xZS )PostGISIntrospection)geography_columnsgeometry_columnsraster_columnsspatial_ref_sysraster_overviewsc                    | j         s| j                                        5 }|                    d           t	          |                                          | _         d d d            n# 1 swxY w Y   | j                            d | j         D                        t                      	                    ||          S )NzKSELECT oid, typname FROM pg_type WHERE typname IN ('geometry', 'geography')c              3      K   | ]}|d fV  	dS )GeometryFieldN ).0oids     q/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/gis/db/backends/postgis/introspection.py	<genexpr>z6PostGISIntrospection.get_field_type.<locals>.<genexpr>   s8       + ++.o&+ + + + + +    )
postgis_oid_lookup
connectioncursorexecutedictfetchalldata_types_reverseupdatesuperget_field_type)self	data_typedescriptionr   	__class__s       r   r   z#PostGISIntrospection.get_field_type   s   & 	 '')) BVA  
 +/v/@/@*A*A'B B B B B B B B B B B B B B B #** + +262I+ + +    ww%%i===s   <A**A.1A.c                    | j                                         5 }|                    d||j        f           |                                }|st          d|d|j        d          |\  }}}t          |          j        }i }| j        	                    |j
                  dk    rd|d<   |dk    r||d<   |d	k    r||d
<   ddd           n# 1 swxY w Y   ||fS )a%  
        The geometry type OID used by PostGIS does not indicate the particular
        type of field that a geometry column is (e.g., whether it's a
        PointField or a PolygonField).  Thus, this routine queries the PostGIS
        metadata tables to determine the geometry type.
        a   
                SELECT t.coord_dimension, t.srid, t.type FROM (
                    SELECT * FROM geometry_columns
                    UNION ALL
                    SELECT * FROM geography_columns
                ) AS t WHERE t.f_table_name = %s AND t.f_geometry_column = %s
            z3Could not find a geometry or geography column for "z".""	geographyTi  srid   dimN)r   r   r   namefetchone	Exceptionr   djangor   get	type_code)	r   
table_namer!   r   rowr(   r&   
field_typefield_paramss	            r   get_geometry_typez&PostGISIntrospection.get_geometry_type#   sW    _##%% 	*NN [-.	 	 	 //##C i!zz;#3#3#35   %(!Cz %Z007JL&**;+@AA[PP,0[)t||'+V$axx&)U#9	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*: <''s   B)CCC)	__name__
__module____qualname__r   r   ignored_tablesr   r3   __classcell__)r"   s   @r   r   r      si        *9 = = = N> > > > >&$( $( $( $( $( $( $(r   r   N)django.contrib.gis.gdalr   +django.db.backends.postgresql.introspectionr   r   r   r   r   <module>r;      sh    / / / / / / M M M M M MB( B( B( B( B(0 B( B( B( B( B(r   