o
    i                     @   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   s/var/www/html/formularioweb/env/lib/python3.10/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   sb  z|  ddd \}}W n ttfy   tdw t||}|j}g }|j|j D ]x}|j	s2q,|r:|j
|vr:q,| }dt|vrEq,i }	g d}
|j D ]7\}}||
v r|dur|dkrc|rcqP|dkrj|sjqP|d	krt|j|	|< qP|d
v rtt| |	|< qP||	|< qPddd t|	 D }|d|j
|jj|d  q,d||jd|d S )z4Return a string describing a form based on the model.Nz:Need application and model name in the form: appname.model__dict__)requiredinitial
max_length
min_length	max_value	min_value
max_digitsdecimal_placeschoices	help_textr   r!   r*   widget)r*   r   z, c                 S   s   g | ]
\}}d ||f qS )z%s=%rr   ).0kvr   r   r   
<listcomp>M   s    z!describe_form.<locals>.<listcomp>z5    %(field_name)s = forms.%(field_type)s(%(params)s))
field_name
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   	get_model_metar   many_to_manyeditablename	formfielddirr    items	__class__r   r   stripjoinsortedr   r   r5   )r   r   r4   
model_namemodeloptsr6   fr?   attrsvalid_fieldsr-   r.   r2   r   r   r   r      sZ   r   N)django.appsr   django.core.management.baser   r   django.utils.encodingr   "django_extensions.management.utilsr   r   r   r   r   r   r   <module>   s   