ó
Ý*µPc           @   sZ   d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   settings(   t   ImproperlyConfigured(   t   DatabaseCreation(   t   cached_propertyt   PostGISCreationc           B   sD   e  Z d  Z d Z d Z e d „  ƒ Z d „  Z d „  Z d „  Z	 RS(   t   GISTt   GIST_GEOMETRY_OPSt   GIST_GEOMETRY_OPS_NDc         C   sH   t  t d d ƒ } |  j j ƒ  } | j d | f ƒ | j ƒ  rD | Sd  S(   Nt   POSTGIS_TEMPLATEt   template_postgiss5   SELECT 1 FROM pg_database WHERE datname = %s LIMIT 1;(   t   getattrR    t
   connectiont   cursort   executet   fetchonet   None(   t   selfR	   R   (    (    sH   ../Django//lib/python/django/contrib/gis/db/backends/postgis/creation.pyR	      s    c   
      C   s¡  d d l  m } t t |  ƒ j | | | ƒ } t | | ƒ r|  j j j } |  j j j	 } | j
 j } | j s‘|  j j j r‚ n| j | j d ƒ | j d ƒ d | j | | ƒ ƒ d | j | | j ƒ ƒ d | j t | j ƒ ƒ d | j | | j ƒ ƒ d | j t | j ƒ ƒ d ƒ | j s‘| j | j d ƒ | j | | ƒ ƒ | j d	 ƒ | j | | j ƒ ƒ | j d
 ƒ d ƒ n  | j r| j r¬d }	 nV |  j j j rì| j d k rãd | j |  j ƒ }	 qd }	 n d | j |  j ƒ }	 | j | j d ƒ | j | d | | j f ƒ ƒ | j d ƒ | j | | ƒ ƒ | j d ƒ | j |  j ƒ d | j | | j ƒ ƒ |	 d ƒ qn  | S(   s4   Return any spatial index creation SQL for the field.iÿÿÿÿ(   t   GeometryFields   SELECT t   AddGeometryColumnt   (s   , s   );s   ALTER TABLE s    ALTER s    SET NOT NULLt   ;t    i   t    s   CREATE INDEX s   %s_%s_ids    ON s    USING s    ( s    );(   t#   django.contrib.gis.db.models.fieldsR   t   superR   t   sql_indexes_for_fieldt
   isinstanceR   t   opst   geo_quote_namet
   quote_namet   _metat   db_tablet	   geographyt   geometryt   appendt   SQL_KEYWORDt	   SQL_TABLEt	   SQL_FIELDt   columnt   strt   sridt   SQL_COLTYPEt	   geom_typet   dimt   nullt   spatial_indext   geom_index_ops_ndt   geom_index_opst   geom_index_type(
   R   t   modelt   ft   styleR   t   outputt   gqnt   qnR   t	   index_ops(    (    sH   ../Django//lib/python/django/contrib/gis/db/backends/postgis/creation.pyR      s0     	Z				•c         C   s0   |  j  d  k	 r, d |  j j j |  j  ƒ f Sd S(   Ns    TEMPLATE %sR   (   R	   R   R   R   R   (   R   (    (    sH   ../Django//lib/python/django/contrib/gis/db/backends/postgis/creation.pyt   sql_table_creation_suffixP   s    c         C   sw   t  t |  ƒ j | | ƒ } |  j d  k rs |  j j ƒ  | |  j j d <|  j j ƒ  } | j	 d ƒ | j j
 ƒ  n  | S(   Nt   NAMEs   CREATE EXTENSION postgis(   R   R   t   _create_test_dbR	   R   R   t   closet   settings_dictR   R   t   commit(   R   t	   verbosityt   autoclobbert   test_database_nameR   (    (    sH   ../Django//lib/python/django/contrib/gis/db/backends/postgis/creation.pyR:   V   s    (
   t   __name__t
   __module__R0   R/   R.   R   R	   R   R8   R:   (    (    (    sH   ../Django//lib/python/django/contrib/gis/db/backends/postgis/creation.pyR      s   		;	N(	   t   django.confR    t   django.core.exceptionsR   t/   django.db.backends.postgresql_psycopg2.creationR   t   django.utils.functionalR   R   (    (    (    sH   ../Django//lib/python/django/contrib/gis/db/backends/postgis/creation.pyt   <module>   s   