ó
ø¢TQc           @   s˜   d  d l  m Z d  d l m Z d  d l m Z m Z d  d l m Z m	 Z	 m
 Z
 m Z m Z d  d l m Z d  d l m Z d e f d „  ƒ  YZ d	 S(
   iÿÿÿÿ(   t   make_option(   t   BaseDatabaseCache(   t   LabelCommandt   CommandError(   t   connectionst   routert   transactiont   modelst   DEFAULT_DB_ALIAS(   t   DatabaseError(   t
   force_textt   Commandc           B   sW   e  Z d  Z d Z d Z e j e d d d d d d e d	 d
 ƒf Z e	 Z
 d „  Z RS(   s6   Creates the table needed to use the SQL cache backend.s   <tablename>t	   tablenames
   --databaset   actiont   storet   destt   databaset   defaultt   helpsf   Nominates a database onto which the cache table will be installed. Defaults to the "default" database.c         K   s©  | j  d ƒ } t | i  ƒ } t j | | j ƒ s7 d  St | } t j d d d d d t d t ƒ t j	 d d ƒ t j
 d d	 d
 t ƒ f } g  } g  } | j j }	 xø | D]ð }
 |	 |
 j ƒ |
 j d | ƒ g } | j d |
 j rë d pî d ƒ |
 j r| j d ƒ n |
 j r%| j d ƒ n  |
 j r…|
 j r=d p@d } | j d | |	 d | |
 j f ƒ |	 | ƒ |	 |
 j ƒ f ƒ n  | j d j | ƒ ƒ q« Wd |	 | ƒ g } xM t | ƒ D]? \ } } | j d | | t | ƒ d k  ród pöd f ƒ q¿W| j d ƒ | j ƒ  } y | j d j | ƒ ƒ Wn? t k
 rv} t j d | ƒ t d | t | ƒ f ƒ ‚ n Xx | D] } | j | ƒ q~Wt j d | ƒ d  S(   NR   t   namet	   cache_keyt
   max_lengthiÿ   t   uniquet   primary_keyt   valuet   expirest   db_indext
   connections   %sNULLs   NOT t    s   PRIMARY KEYt   UNIQUEs   UNIQUE s   CREATE %sINDEX %s ON %s (%s);s   %s_%st    s   CREATE TABLE %s (s       %s%si   t   ,s   );s   
t   usings9   Cache table '%s' could not be created.
The error was: %s.(   t   getR   R   t   allow_syncdbt   cache_model_classR   R   t	   CharFieldt   Truet	   TextFieldt   DateTimeFieldt   opst
   quote_nameR   t   db_typet   appendt   nullR   R   R   t   joint	   enumeratet   lent   cursort   executeR	   R   t   rollback_unless_managedR   R
   t   commit_unless_managed(   t   selfR   t   optionst   dbt   cacheR   t   fieldst   table_outputt   index_outputt   qnt   ft   field_outputR   t   full_statementt   it   linet   curst   et	   statement(    (    sI   ../Django//lib/python/django/core/management/commands/createcachetable.pyt   handle_label   sN    
!!!				"7(   t   __name__t
   __module__R   t   argst   labelR   t   option_listR    R   t   Falset   requires_model_validationRD   (    (    (    sI   ../Django//lib/python/django/core/management/commands/createcachetable.pyR   
   s   N(   t   optparseR    t   django.core.cache.backends.dbR   t   django.core.management.baseR   R   t	   django.dbR   R   R   R   R   t   django.db.utilsR	   t   django.utils.encodingR
   R   (    (    (    sI   ../Django//lib/python/django/core/management/commands/createcachetable.pyt   <module>   s   (