3
g
                 @   sP   d dl mZ d dlmZmZ d dlmZ d dlmZ G dd deZ	dd Z
d	S )
    )apps)CommandErrorLabelCommand)	force_str)signalcommandc               @   s$   e Zd ZdZdd Zedd ZdS )Commandz>Outputs the specified model as a form definition to the shell.c             C   s*   |j dtdd |j ddddg dd	 d S )
Nlabelzapplication name and model name)typehelpz--fieldsz-fappendfieldsz$Describe form with these fields only)actiondestdefaultr
   )add_argumentstr)selfparser r   q/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django_extensions/management/commands/describe_form.pyadd_arguments   s
    
zCommand.add_argumentsc             O   s   |d }|d }t ||S )Nr   r   )describe_form)r   argsoptionsr   r   r   r   r   handle   s    zCommand.handleN)__name__
__module____qualname__r
   r   r   r   r   r   r   r   r   	   s   r   c             C   s  y| j ddd \}}W n  ttfk
r:   tdY nX tj||}|j}g }x|j|j D ]}|j	spqb|r|j
|krqb|j }dt|krqbi }	dddd	d
ddddddg}
x|jj D ]t\}}||
ko|dk	r|dkr|rq|dkr| rq|dkr|j|	|< q|dkr,tt|j |	|< q||	|< qW djdd t|	j D }|jd|j
|jj|d  qbW d||jdj|d S )z6 Return a string describing a form based on the model .   Nz:Need application and model name in the form: appname.model__dict__requiredinitial
max_lengthZ
min_lengthZ	max_valueZ	min_valueZ
max_digitsZdecimal_placeschoices	help_textr   Zwidgetz, c             S   s   g | ]\}}d ||f qS )z%s=%rr   ).0kvr   r   r   
<listcomp>>   s    z!describe_form.<locals>.<listcomp>z5    %(field_name)s = forms.%(field_type)s(%(params)s))
field_nameZ
field_typeparamsz
from django import forms
from %(app_name)s.models import %(object_name)s

class %(object_name)sForm(forms.Form):
%(field_list)s

)app_nameobject_name
field_list)r%   r   )split
IndexError
ValueErrorr   r   Z	get_modelZ_metar   Zmany_to_manyeditablename	formfielddirr    items	__class__r   r   stripjoinsortedr   r   r.   )r   r   r-   Z
model_namemodeloptsr/   fr6   attrsZvalid_fieldsr'   r(   r+   r   r   r   r      sD    

r   N)Zdjango.appsr   Zdjango.core.management.baser   r   Zdjango.utils.encodingr   Z"django_extensions.management.utilsr   r   r   r   r   r   r   <module>   s
   