
    ]j
                     T    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e      Z	d Z
y)	    )apps)CommandErrorLabelCommand)	force_str)signalcommandc                   &    e Zd ZdZd Zed        Zy)Commandz>Outputs the specified model as a form definition to the shell.c                 b    |j                  dt        d       |j                  ddddg d	       y )
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parsers     ]/root/env/lib/python3.12/site-packages/django_extensions/management/commands/describe_form.pyadd_argumentszCommand.add_arguments   s>    G#!B 	 	DXHb7 	 	
    c                 .    |d   }|d   }t        ||      S )Nr   r   )describe_form)r   argsoptionsr   r   s        r   handlezCommand.handle   s#     "UF++r   N)__name__
__module____qualname__r   r   r   r    r   r   r	   r	   	   s     KD
 , ,r   r	   c           
         	 | j                  d      dd \  }}t	        j
                  ||      }|j                  }g }|j                  |j                  z   D ]9  }|j                  s|r|j                  |vr"|j                         }dt        |      vr@i }	g d}
|j                  j                         D ]a  \  }}||
v s||dk(  r|r|dk(  r|s|d	k(  r|j                  |	|<   3|d
v r&t!        t#        |      j%                               |	|<   ]||	|<   c dj'                  t)        |	j                               D cg c]  \  }}|d| c}}      }|j+                  d|j                  |j                  j,                  |dz         < d||j.                  dj'                  |      dz  S # t        t        f$ r t        d      w xY wc c}}w )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_length
min_length	max_value	min_value
max_digitsdecimal_placeschoices	help_textr   r'   r0   widget)r0   r   z, =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   r8   )r   r   r7   
model_namemodeloptsr9   frB   attrsvalid_fieldskvr5   s                 r   r   r      s   Y${{3/4* NN8Z0E;;DJ[[4,,, zzaffF*KKM	S^+ f&&,,. 	!DAqL Q]
?q#A= {{E!H00"9Q<#5#5#78E!H E!H	! 9NOAq!,OPQ&&#--66U
 
 	3< D,<,<DIIV`Labc cI 
# YWXXY< Ps   F5 G5GN)django.appsr   django.core.management.baser   r   django.utils.encodingr   "django_extensions.management.utilsr   r	   r   r"   r   r   <module>rU      s#     B + <,l ,&.cr   