
    恕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 d dlmZ d	 Z G d
 de      Z G d dej"                        Z G d de      Zy# e	$ r	 d dl
mZ Y Hw xY w)    )get_document)FileStorage)fields)_unset_value)unset_value   )widgets)InlineFormFieldc                     | j                  d       | j                  d      }| j                  d       t        |       S )Nr   r   )seekreadbool)file_object
first_chars     e/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/flask_admin/contrib/mongoengine/fields.pyis_emptyr      s<    Q!!!$JQJ    c                   *     e Zd ZdZd fd	Zd Z xZS )ModelFormFieldzJ
        Customized ModelFormField for MongoEngine EmbeddedDocuments.
    c                     t        t        | 
  |fi | || _        t	        | j                  t
              rt        | j                        | _        || _        || _        y N)	superr   __init__model
isinstancestrr   view	form_opts)selfr   r   
form_classr   kwargs	__class__s         r   r   zModelFormField.__init__   sJ    nd,ZB6B
djj#&%djj1DJ	"r   c                     t        ||d       }|d u }|r| j                         }t        |||       | j                  j	                  |       | j
                  j                  | j                  ||       y r   )getattrr   setattrformpopulate_objr   _on_model_change)r   objname	candidate
is_createds        r   r'   zModelFormField.populate_obj%   s`    Ct,	$&


ICy)		y)		""499iDr   r   )__name__
__module____qualname____doc__r   r'   __classcell__r"   s   @r   r   r      s    #	Er   r   c                   Z     e Zd ZdZ ej
                         Zd fd	Zef fd	Z	d Z
 xZS )MongoFileFieldz 
        GridFS file field.
    c                 >    t        t        | 
  ||fi | d| _        y )NF)r   r4   r   _should_delete)r   label
validatorsr!   r"   s       r   r   zMongoFileField.__init__7   s!    nd,UJI&I#r   c                 d    |rd| j                   z  }||v rd| _        t        t        |   ||      S )Nz
_%s-deleteT)r*   r6   r   r4   process)r   formdatadatamarkerr"   s       r   r:   zMongoFileField.process<   s8    !DII-F!&*#^T28TBBr   c                    t        ||d       }|| j                  r|j                          y t        | j                  t
              rt        | j                  j                        sm|j                  s|j                  }n|j                  } || j                  j                  | j                  j                  | j                  j                         y y y y )N)filenamecontent_type)r$   r6   deleter   r<   r   r   streamgrid_idputreplacer?   r@   )r   r)   r*   fieldfuncs        r   r'   zMongoFileField.populate_objD   s    T4(""$))[1(499CSCS:T}} 99D ==DTYY%%"ii00"&))"8"8: ;U1 r   )NN)r-   r.   r/   r0   r	   MongoFileInputwidgetr   r   r:   r'   r1   r2   s   @r   r4   r4   1   s/     $W##%F$
 &1 C:r   r4   c                   2    e Zd ZdZ ej
                         Zy)MongoImageFieldz!
        GridFS image field.
    N)r-   r.   r/   r0   r	   MongoImageInputrI    r   r   rK   rK   W   s     %W$$&Fr   rK   N)mongoengine.baser   werkzeug.datastructuresr   wtformsr   wtforms.fields.corer   r   ImportErrorwtforms.utils r	   flask_admin.model.fieldsr
   r   r   	FileFieldr4   rK   rM   r   r   <module>rW      se    ) / *?  4 E_ E4#:V%% #:L'n ']  *)*s   A A#"A#