
    恕f                         d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ  G d	 d
e      Z G d de      Z G d de      Z G d de      Zy)    )json)escape)html_params)Markup)
as_unicode	text_type)gettext)get_url)RenderTemplateWidgetc                        e Zd Z fdZ xZS )InlineFieldListWidgetc                 ,    t         t        |   d       y )Nz"admin/model/inline_field_list.html)superr   __init__self	__class__s    X/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/flask_admin/model/widgets.pyr   zInlineFieldListWidget.__init__   s    #T34XY    )__name__
__module____qualname__r   __classcell__r   s   @r   r   r      s    Z Zr   r   c                   (     e Zd Z fdZ fdZ xZS )InlineFormWidgetc                 ,    t         t        |   d       y )Nzadmin/model/inline_form.html)r   r   r   r   s    r   r   zInlineFormWidget.__init__   s    ./MNr   c                 f    |j                  dt        |dd              t        t        |   |fi |S )N	form_opts)
setdefaultgetattrr   r   __call__)r   fieldkwargsr   s      r   r"   zInlineFormWidget.__call__   s4    +wuk4'HI%t5eFvFFr   )r   r   r   r   r"   r   r   s   @r   r   r      s    OG Gr   r   c                       e Zd ZddZd Zy)AjaxSelect2Widgetc                     || _         y )N)multiple)r   r(   s     r   r   zAjaxSelect2Widget.__init__   s	     r   c                 N   |j                  dd       |j                  dt        d|j                  j                               t	        |dd      }|r| j
                  sd|d	<   |j                  d
|j                         |j                  dd       | j
                  rg }g }|j                  D ]K  }|j                  j                  |      }|j                  |       |j                  t        |d                M t	        |dd      }|j                  |      |d<   t        j                  |      |d<   d|d<   nG|j                  j                  |j                        }|r |d   |d<   t        j                  |      |d<   |j                  j                  j                  dt!        d            }	|j                  d|	       t#        |j                  j                  j                  dd            }
|j                  d|
       t%        dt'        dd|j                  i|z        S )N	data-rolezselect2-ajaxdata-urlz.ajax_lookup)nameallow_blankF1zdata-allow-blankidtypehiddenr   	separator,valuez	data-jsonzdata-multipleplaceholderzPlease select modelzdata-placeholderminimum_input_length   zdata-minimum-input-lengthz
<input %s>r,    )r    r
   loaderr,   r!   r(   r/   dataformatappendr   joinr   dumpsoptionsgetr	   intr   r   )r   r#   r$   r-   resultidsr4   r:   r2   r5   r6   s              r   r"   zAjaxSelect2Widget.__call__   s   +~6*gn5<<CTCT&UVe]E:t}})-F%&$)&(+==FC 0||**51d#

:d1g./0
  {C8I'nnS1F7O"&**V"4F;&*F?#<<&&uzz2D"&q'w&*jj&6{#ll**..}gF[>\],k:"5<<#7#7#;#;<RTU#VW57KLl[%Kejj%KF%KKLLr   N)F)r   r   r   r   r"   r8   r   r   r&   r&      s    !&Mr   r&   c                       e Zd ZdZd Zd Zy)XEditableWidgetz
        WTForms widget that provides in-line editing for the list view.

        Determines how to display the x-editable/ajax form based on the
        field inside of the FieldList (StringField, IntegerField, etc).
    c                 .   |j                  dd      }|j                  d|       |j                  dd       |j                  dd       |j                  d|j                         |j                  d	|j                         |j                  d
d       |j	                  d      st        d      t        |j                  d            |d<   |j                  dd      |d<   | j                  ||      }t        dt        di |dt        |      d      S )Ndisplay_value 
data-valuer*   z
x-editabler+   z./ajax/update/r/   r,   href#pkzpk requiredzdata-pkcsrfz	data-csrfz<a >z</a>r8   )popr    r/   r,   r@   	Exceptionstr
get_kwargsr   r   r   )r   r#   r$   rG   s       r   r"   zXEditableWidget.__call__N   s    

?B7,6+|4*&67$)&%**-&#&zz$M**

4 01y$jj4{/)3F3$]35
 	
r   c                 <   |j                   dk(  rd|d<   |S |j                   dk(  rd|d<   d|d<   |S |j                   dk(  rQd	|d<   |j                  rd
nd|d<   t        j                  dt	        d      dd
t	        d      dg      |d<   d|d<   |S |j                   dv rbd	|d<   |j
                  D cg c]
  \  }}||d }}}t        |dd      r|j                  dddd       t        j                  |      |d<   |S |j                   dk(  rd|d<   d|d<   d|d<   d|d<   |S |j                   dk(  rd|d<   d|d<   d |d<   d|d<   |S |j                   d!k(  rd|d<   d"|d<   d"|d<   d|d<   |S |j                   d#k(  rd$|d<   |S |j                   d%v rd$|d<   d&|d'<   |S |j                   d(v rd	|d<   g }g }|j                         D ]C  \  }}}		 t        |      }|j                  t        |      |d       |	s3|j                  |       E t        j                  |      |d<   |j                   d)k(  r(d*|d<   t        |d+d,      }
|
j                  |      |d<   |S t        |d         |d<   |S t        d-t        |            c c}}w # t        $ r d}Y w xY w).zB
            Return extra kwargs based on the field type.
        StringFieldtextz	data-typeTextAreaFieldtextarea5z	data-rowsBooleanFieldselect2r.   rH   rI   No)r4   rU   Yeszdata-sourcezx-editable-booleanr*   )Select2FieldSelectFieldr-   Fr   __None	DateField	combodatez
YYYY-MM-DDzdata-formatzdata-templatezx-editable-combodateDateTimeFieldzYYYY-MM-DD HH:mm:sszYYYY-MM-DD  HH:mm:ss	TimeFieldzHH:mm:ssIntegerFieldnumber)
FloatFieldDecimalFieldanyz	data-step)QuerySelectFieldModelSelectFieldQuerySelectMultipleFieldKeyPropertyFieldrk   zx-editable-select2-multipler2   r3   zUnsupported field type: )r0   r:   r   r>   r	   choicesr!   insertiter_choicesr   	TypeErrorr<   r=   rP   )r   r#   r$   xyrm   selected_idsr4   labelselectedr2   s              r   rR   zXEditableWidget.get_kwargsf   sd    ::&"(F;V U ZZ?*",F;"%F;P O ZZ>)"+F;*/**3"F< $(JJgdm4wu~60 %F=! #7F;~ } ZZ::"+F;;@==I41aA.IGI umU3qHb"AB %)JJw$7F=!j i ZZ;&"-F;$0F=!&2F?#"8F;` _ ZZ?*"-F;$9F=!&<F?#"8F;T S ZZ;&"-F;$.F=!&0F?#"8F;J I ZZ>)"*F;F E ZZ99"*F;"'F;@ ? ZZ L L #,F;GL*/*<*<*> /&uh%e,E 5)95IJ ''./ %)JJw$7F=!zz77&C{# $E;<	'0~~l'C|$ 	 (1a'A|$  DKIJJu JN ! Es   4JJJJN)r   r   r   __doc__r"   rR   r8   r   r   rE   rE   G   s    
0Pr   rE   N)flaskr   
markupsafer   wtforms.widgetsr   flask_admin._backwardsr   flask_admin._compatr   r   flask_admin.babelr	   flask_admin.helpersr
   flask_admin.formr   r   r   objectr&   rE   r8   r   r   <module>r      sX      ' ) 5 % ' 1Z0 Z
G+ G*M *MZof or   