
^Q\3
                 @   sJ   d  d l  m Z d  d l m Z d  d l m Z Gd d   d e  Z d S)    )checks)BaseDatabaseValidation)get_docs_versionc                   s@   e  Z d  Z   f d d   Z d d   Z   f d d   Z   S)DatabaseValidationc                s2   t  t |   j |   } | j |  j |    | S)N)superr   checkextend_check_sql_mode)selfkwargsZissues)	__class__ I/var/www/dbchiro/venv/build/Django/django/db/backends/mysql/validation.pyr      s    zDatabaseValidation.checkc             K   s   |  j  j     } | j d  | j   } Wd  QXt | rM | d j d  n f   } | d d h @s t j d |  j  j d d t	   f d	 d
 g Sg  S)NzSELECT @@sql_moder   ,ZSTRICT_TRANS_TABLESZSTRICT_ALL_TABLESz9MySQL Strict Mode is not set for database connection '%s'Zhinta   MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://docs.djangoproject.com/en/%s/ref/databases/#mysql-sql-modeidz
mysql.W002)

connectioncursorexecuteZfetchonesetsplitr   Warningaliasr   )r
   r   r   Zsql_modemodesr   r   r   r	      s    %
z"DatabaseValidation._check_sql_modec                s   t  t    j | |  } t | d d  r1 | St   f d d   | j j j D  } | sc | S| j   j	  } | d k r | S| j
 d  r | j r | j d k s t | j  d k r | j t j d d | d	 d
  n  | S)z
        MySQL has the following field length restriction:
        No character (varchar) fields can have a length exceeding 255
        characters if they have a unique index on them.
        Zremote_fieldNc             3   s'   |  ] } t    j j | d   Vq d S)FN)getattrr   features).0feature)r
   r   r   	<genexpr>+   s   z1DatabaseValidation.check_field.<locals>.<genexpr>Zvarchar   zBMySQL does not allow unique CharFields to have a max_length > 255.objr   z
mysql.E001)r   r   check_fieldr   allmodelZ_metaZrequired_db_featuresZdb_typer   
startswithunique
max_lengthintappendr   Error)r
   fieldr   errorsZ!db_supports_all_required_featuresZ
field_type)r   )r
   r   r       s&    $zDatabaseValidation.check_field)__name__
__module____qualname__r   r	   r    r   r   )r   r   r      s   r   N)Zdjango.corer   Z"django.db.backends.base.validationr   Zdjango.utils.versionr   r   r   r   r   r   <module>   s   