ó
E()Qc           @@ sD  d  d l  m Z m Z d  d l 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 m Z m Z 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 m Z m Z m Z m Z m  Z  m! Z! m" Z" m# Z# m$ Z$ m% Z% m& Z& e j' j( e j' j) e j' j* e e+ ƒ ƒ e j, d ƒ ƒ Z- e j' j) e- d d ƒ Z. e j' j) e- d d ƒ Z/ e j' j) e- d d ƒ Z0 e j' j) e- d d ƒ Z1 d d d d d g Z2 d d d d d g Z3 d d d d  d! g Z4 d" e f d# „  ƒ  YZ5 d$ e6 f d% „  ƒ  YZ7 d& e f d' „  ƒ  YZ8 d S((   i    (   t   absolute_importt   unicode_literalsN(   t   copy(   t   Decimal(   t
   DataSource(   t   mysql(   t   LayerMappingt   LayerMapErrort   InvalidDecimalt   MissingForeignKey(   t   router(   t   settings(   t   TestCase(   t   unittest(   t   upathi   (   t   Cityt   Countyt
   CountyFeatt
   Interstatet   ICity1t   ICity2t   Invalidt   Statet   city_mappingt
   co_mappingt   cofeat_mappingt   inter_mappingu   datau   citiesu
   cities.shpu   countiesu   counties.shpu   interstatesu   interstates.shpu   invalidu   emptypoints.shpu   Bexaru	   Galvestonu   Harrisu   Honoluluu   Puebloi   i   u   Texasu   Hawaiiu   Coloradot   LayerMapTestc           B@ se   e  Z d  „  Z d „  Z d „  Z e d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z RS(
   c      
   C@ s¶   t  t ƒ } d | d <t  t ƒ } d | d <t  t ƒ } d | d <x? | | | f D]. } |  j t ƒ  t t t | ƒ } Wd QXqR W|  j t ƒ  t t t t d d ƒ} Wd QXd S(	   u$   Testing LayerMapping initialization.u   FooFieldu   foobaru   Nombreu   nameu   CURVEu   pointNt   encoding(   R   R   t   assertRaisesR   R   R   t   city_shpt   LookupError(   t   selft   bad1t   bad2t   bad3t   bad_mapt   lm(    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt	   test_init%   s    


c         C@ s  t  t t t ƒ } | j ƒ  |  j d t j j ƒ  ƒ t t ƒ } | d } xÆ | D]¾ } t j j	 d | d j
 ƒ } |  j | d j
 | j ƒ |  j t t | d ƒ ƒ | j ƒ |  j | d j
 | j ƒ | j | j } } |  j | j | j d ƒ |  j | j | j d ƒ qR Wd	 S(
   u5   Test LayerMapping import of a simple point shapefile.i   i    t   nameu   Nameu
   Populationu   Densityu   Createdi   N(   R   R   R   R   t   savet   assertEqualt   objectst   countR   t   gett   valuet
   populationR   t   strt   densityt   dtt   geomt   pointt   assertAlmostEqualt   xt   y(   R    R%   t   dst   layert   featt   cityt   pnt1t   pnt2(    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   test_simple_layermap>   s    

#c      	   C@ sŸ  |  j  t ƒ - t t t t ƒ } | j d t d t ƒ Wd QXt j j	 ƒ  j
 ƒ  t t t t ƒ } | j d t ƒ |  j d t j j ƒ  ƒ t t ƒ } | d d  } xò | D]ê } t j j d | d j ƒ } | j d k r|  j t t | d ƒ ƒ | j ƒ n7 | j d	 k r;|  j | j d ƒ t | j ƒ d ƒ n  xY t | j | j ƒ D]B \ } } |  j | d | d d
 ƒ |  j | d	 | d	 d
 ƒ qQWq­ Wd S(   uC   Testing the `strict` keyword, and import of a LineString shapefile.t   silentt   strictNi   i    R'   u   Nameu   Lengthi   i   (   R   R   R   R   t	   inter_shpR   R(   t   TrueR*   t   allt   deleteR)   R+   R   R,   R-   t   fidR   R/   t   lengthR4   t   floatt   zipR2   t   path(   R    R%   R7   t   valid_featsR9   t   istatet   p1t   p2(    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   test_layermap_strictV   s$    &("c         C@ s¢   x› t  t t t ƒ D]‡ \ } } } t j j d | ƒ } |  j | t | j	 ƒ ƒ |  j | | j
 j ƒ | r t j j d | ƒ } |  j | | j ƒ  ƒ q q Wd S(   uG   Helper function for ensuring the integrity of the mapped County models.R'   N(   RG   t   NAMESt   NUMSt   STATESR   R*   R,   R)   t   lent   mpolyt   stateR'   R   t   filterR+   (   R    t   county_featR'   t   nt   stt   ct   qs(    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   county_helpery   s    "c         C@ sc  y t  t t t d t ƒ} t  t t t d d ƒ} t  t t t d d ƒ} x2 d d f D]$ } t  t t t d t d | ƒ} qX WWn |  j d ƒ n XxT t d	 f t d
 f t d f f D]1 \ } } |  j | t  t t t d t d | ƒqº Wt	 s|  j t
 t  t t t ƒ n  t t ƒ } d | d <t t ƒ } i d d 6| d <|  j t t  t t | d t ƒ|  j t
 t  t t | d t ƒt  t t t d t d d ƒ} |  j t | j d t d t ƒt j j t d d ƒ t d d ƒ t d d ƒ g ƒ t  t t t d t d d ƒ} | j d t d t ƒ t  t t t d t ƒ} | j d t d t ƒ |  j ƒ  d S(   u_   Testing the `unique`, and `transform`, geometry collection conversion, and ForeignKey mappings.t	   transformt
   source_srsi­  u   NAD83u   nameu   mpolyt   uniqueu9   No exception should be raised for proper use of keywords.g      @u   foobaru   mpolygonu   stateu   Stateu   nombreR>   R?   R'   u   Coloradou   Hawaiiu   TexasN(   u   nameu   mpoly(   u   nameu   mpolygon(   R   R   t   co_shpR   t   Falset   failt	   TypeErrort
   ValueErrorR   R   R   R   R	   R(   RA   R   R*   t   bulk_createR   R   RZ   (   R    R%   t   argt   et   bad_fk_map1t   bad_fk_map2(    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt%   test_layermap_unique_multigeometry_fk†   s6    &.) 
 	+c         C@ sP  d „  } t  j j t  d d ƒ t  d d ƒ t  d d ƒ g ƒ t t t t d t d d ƒ} d	 d
 t f } x' | D] } |  j t	 | j
 d | ƒqq Wd } |  j t | j
 d | d d ƒ| j
 d | ƒ t j j ƒ  } |  j d | j ƒ  ƒ |  j d | d j ƒ | ƒ  | j
 d t d d ƒ d t d t ƒ | j
 d t d d ƒ d t d t ƒ t j j d ƒ } |  j d | j ƒ  ƒ t | ƒ \ } } t t t j d ƒ ƒ \ }	 }
 |  j d | j ƒ |  j t |
 t | j ƒ ƒ |  j d | j ƒ |  j t |	 t | j ƒ ƒ x; d D]3 } | ƒ  | j
 d | d t ƒ |  j d t ƒ qWd S(    u@   Tests the `fid_range` keyword and the `step` keyword of .save().c           S@ s   t  j j ƒ  j ƒ  d  S(   N(   R   R*   RB   RC   (    (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   clear_countiesÌ   s    R'   u   Coloradou   Hawaiiu   TexasR[   R]   u   nameg      @u   foot	   fid_rangei   i   t   stepi
   i   u	   Galvestoni    R>   R?   i   u   Honoluluu   Puebloi   i   iè  RU   N(   i   i   (   u   Honoluluu   Pueblo(   i   i   iè  (   R   R*   Rc   R   R   R^   R   R_   R   Ra   R(   R   RB   R)   R+   R'   t   slicet   NoneRA   t   order_byt   tuplet   mapRN   t   indexRO   RQ   RR   RZ   (   R    Ri   R%   t
   bad_rangest   badt   frRY   t   hit   cot   hi_idxt   co_idxRW   (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   test_test_fid_range_stepÉ   s8    		+%%c         C@ s—   i d d 6d d 6d d 6d d 6d	 d
 6} t  t t | ƒ } | j ƒ  t  t t | ƒ } | j ƒ  |  j d t j j ƒ  ƒ |  j d t j j ƒ  ƒ d S(   u4   Tests LayerMapping on inherited models.  See #12093.u   Nameu   nameu
   Populationu
   populationu   Densityu   densityu   POINTu   pointu   Createdu   dti   i   N(   R   R   R   R(   R   R)   R*   R+   (   R    t   icity_mappingt   lm1t   lm2(    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   test_model_inheritanceÿ   s    



c         C@ s9   i d d 6} t  t t | d d ƒ} | j d t ƒ d S(   u6   Tests LayerMapping on invalid geometries.  See #15378.u   POINTu   pointR\   iæ  R>   N(   R   R   t   invalid_shpR(   RA   (   R    t   invalid_mappingR%   (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   test_invalid_layer  s    	c         C@ s„   t  t ƒ } d | d <t t t | ƒ } | j d t d t ƒ |  j t j j	 ƒ  d ƒ |  j t j j
 ƒ  j d ƒ d j d ƒ d S(	   u2   Tests that String content fits also in a TextFieldu   Nameu   name_txtR>   R?   i   i    u   HoustonN(   R   R   R   R   R   R(   RA   R)   R*   R+   RB   Rn   t   name_txt(   R    t   mappingR%   (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   test_textfield  s    
c         C@ s}   t  j j t d d ƒ } t t | t ƒ } | j d t d t ƒ |  j	 t j
 j ƒ  d ƒ |  j	 t j
 j ƒ  d j d ƒ d S(	   u,    Test a layer containing utf-8-encoded name u   ch-cityu   ch-city.shpR>   R?   i   i    u   ZÃ¼richN(   t   osRH   t   joint   shp_pathR   R   R   R(   RA   R)   R*   R+   RB   R'   (   R    R   R%   (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   test_encoded_name#  s
    (   t   __name__t
   __module__R&   R=   RM   RA   RZ   Rh   Ry   R}   R€   Rƒ   R‡   (    (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyR   #   s   			#	C	6				t   OtherRouterc           B@ s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         K@ s   d S(   Nu   other(    (   R    t   modelt   hints(    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   db_for_read,  s    c         K@ s   |  j  | |  S(   N(   R   (   R    R‹   RŒ   (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   db_for_write/  s    c         K@ s   d  S(   N(   Rm   (   R    t   obj1t   obj2RŒ   (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   allow_relation2  s    c         C@ s   t  S(   N(   RA   (   R    t   dbR‹   (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   allow_syncdb5  s    (   Rˆ   R‰   R   RŽ   R‘   R“   (    (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyRŠ   +  s   			t   LayerMapRouterTestc           B@ sD   e  Z d  „  Z d „  Z e j e e j ƒ d k d ƒ d „  ƒ Z	 RS(   c         C@ s   t  j |  _ t ƒ  g t  _ d  S(   N(   R
   t   routerst   old_routersRŠ   (   R    (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   setUp;  s    c         C@ s   |  j  t _ d  S(   N(   R–   R
   R•   (   R    (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   tearDown?  s    i   u   multiple databases requiredc         C@ s)   t  t t t ƒ } |  j | j d ƒ d  S(   Nu   other(   R   R   R   R   R)   t   using(   R    R%   (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   test_layermapping_default_dbB  s    (
   Rˆ   R‰   R—   R˜   R   t
   skipUnlessRQ   R   t	   DATABASESRš   (    (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyR”   9  s   		(9   t
   __future__R    R   R„   R   t   decimalR   t   django.contrib.gis.gdalR   t   django.contrib.gis.tests.utilsR   t%   django.contrib.gis.utils.layermappingR   R   R   R	   t	   django.dbR
   t   django.confR   t   django.testR   t   django.utilsR   t   django.utils._osR   t   modelsR   R   R   R   R   R   R   R   R   R   R   R   RH   t   realpathR…   t   dirnamet   __file__t   pardirR†   R   R^   R@   R~   RN   RO   RP   R   t   objectRŠ   R”   (    (    (    s@   ../Django//lib/python/django/contrib/gis/tests/layermap/tests.pyt   <module>   s0   "R9ÿ 	