ó
¸9—^c           @   si   d  d l  m Z d  d l m Z m Z d  d l m Z d  d l m Z d e f d „  ƒ  YZ	 d „  Z
 d S(	   iÿÿÿÿ(   t   apps(   t   CommandErrort   LabelCommand(   t
   force_text(   t   signalcommandt   Commandc           B   s&   e  Z d  Z d „  Z e d „  ƒ Z RS(   s>   Outputs the specified model as a form definition to the shell.c         C   sE   | j  d d t d d ƒ| j  d d d d d	 d
 d g  d d ƒd  S(   Nt   labelt   typet   helps   application name and model names   --fieldss   -ft   actiont   appendt   destt   fieldst   defaults$   Describe form with these fields only(   t   add_argumentt   str(   t   selft   parser(    (    sU   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/describe_form.pyt   add_arguments   s
    c         O   s!   | d } | d } t  | | ƒ S(   NR   R   (   t   describe_form(   R   t   argst   optionsR   R   (    (    sU   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/describe_form.pyt   handle   s    

(   t   __name__t
   __module__R   R   R   R   (    (    (    sU   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/describe_form.pyR   	   s   	c         C   sM  y |  j  d ƒ d \ } } Wn# t t f k
 rB t d ƒ ‚ n Xt j | | ƒ } | j } g  } x½| j | j D]«} | j	 sŠ qu n  | r¥ | j
 | k r¥ qu n  | j ƒ  } d t | ƒ k rÉ qu n  i  }	 d d d d d	 d
 d d d d d g }
 xº | j j ƒ  D]© \ } } | |
 k r| d k	 r| d k rB| rBqn  | d k r[| r[qn  | d k rw| j |	 | <q¯| d k r¢t t | ƒ j ƒ  ƒ |	 | <q¯| |	 | <qqWd j g  t |	 j ƒ  ƒ D] \ } } d | | f ^ qÌƒ } | j d i | j
 d 6| j j d 6| d 6ƒ qu Wd i | d 6| j d 6d j | ƒ d 6S(   s6    Return a string describing a form based on the model t   .iþÿÿÿs:   Need application and model name in the form: appname.modelt   __dict__t   requiredt   initialt
   max_lengtht
   min_lengtht	   max_valuet	   min_valuet
   max_digitst   decimal_placest   choicest	   help_textR   t   widgets   , s   %s=%rs5       %(field_name)s = forms.%(field_type)s(%(params)s)t
   field_namet
   field_typet   paramss   
from django import forms
from %(app_name)s.models import %(object_name)s

class %(object_name)sForm(forms.Form):
%(field_list)s
t   app_namet   object_names   
t
   field_listN(   R$   R   (   t   splitt
   IndexErrort
   ValueErrorR   R    t	   get_modelt   _metaR   t   many_to_manyt   editablet   namet	   formfieldt   dirR   t   itemst   Nonet	   __class__R   R   t   stript   joint   sortedR
   R   R*   (   R   R   R)   t
   model_namet   modelt   optsR+   t   fR4   t   attrst   valid_fieldst   kt   vR(   (    (    sU   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/describe_form.pyR      sD    		'>
N(   t   django.appsR    t   django.core.management.baseR   R   t   django.utils.encodingR   t"   django_extensions.management.utilsR   R   R   (    (    (    sU   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/describe_form.pyt   <module>   s
   