a
    8Xh
                     @   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   x/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/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   sh  z|  ddd \}}W n ttfy8   tdY n0 t||}|j}g }|j|j D ]}|j	shq\|rx|j
|vrxq\| }dt|vrq\i }	g d}
|j D ]p\}}||
v r|dur|dkr|rq|dkr|sq|d	kr|j|	|< q|d
v rtt| |	|< q||	|< qddd t|	 D }|d|j
|jj|d  q\d||jd|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   r!   r%   Zwidget)r%   r   z, c                 S   s   g | ]\}}d ||f qS )z%s=%rr   ).0kvr   r   r   
<listcomp>>       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)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optsr0   fr6   attrsZvalid_fieldsr'   r(   r,   r   r   r   r      sJ    

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
   