a
    ÆZEg±
  ã                   @   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   úl/var/www/sistema_ama/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rŽq\i }	g d¢}
|j ¡ D ]p\}}||
v r¤|dur¤|dkrÊ|rÊq¤|dkrØ|sØq¤|d	krì|j|	|< q¤|d
v �rtt|ƒ ¡ ƒ|	|< q¤||	|< q¤d 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
   