
    恕f                     L    d dl mZmZ d dlmZmZ ddlmZ  G d de      Zd Z	y)	    )
as_unicodestring_types)AjaxModelLoaderDEFAULT_PAGE_SIZE   )get_primary_keyc                   <     e Zd Z fdZd Zd Zd ZdefdZ xZ	S )QueryAjaxModelLoaderc                     t         t        |   ||       || _        |j	                  d      | _        | j
                  st        d|d| j                        | j                         | _	        t        |      | _        y)zj
            Constructor.

            :param fields:
                Fields to run query against
        fieldsz3AJAX loading requires `fields` to be specified for .N)superr
   __init__modelgetr   
ValueErrorname_process_fields_cached_fieldsr   pk)selfr   r   options	__class__s       ^/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/flask_admin/contrib/peewee/ajax.pyr   zQueryAjaxModelLoader.__init__   sj     	"D24A
kk(+{{[`bfbkbklmm"224!%(    c                     g }| j                   D ]i  }t        |t              rFt        | j                  |d       }|st        | j                  d|d      |j                  |       Y|j                  |       k |S )Nr   z does not exist.)r   
isinstancer   getattrr   r   append)r   remote_fieldsfieldattrs       r   r   z$QueryAjaxModelLoader._process_fields   sq    [[ 		,E%.tzz5$7$

E%RSS$$T*$$U+		, r   c                 J    |sy t        || j                        t        |      fS )N)r   r   r   )r   r   s     r   formatzQueryAjaxModelLoader.format+   s#    tww'E):;;r   c                 R     | j                   j                  di | j                  |iS )N )r   r   r   )r   r   s     r   get_onezQueryAjaxModelLoader.get_one1   s"    tzz~~."..r   r   c                 4   | j                   j                         }t        |      dkD  r6d }| j                  D ]  }|d|z  z  }||}||z  } |j	                  |      }|r|j                  |      }t        |j                  |      j                               S )Nr   z%%%s%%)	r   selectlenr   whereoffsetlistlimitexecute)r   termr,   r.   querystmtr!   qs           r   get_listzQueryAjaxModelLoader.get_list4   s    

!!#t9q=D,, i$./<DAID KK%ELL(EEKK&..011r   )
__name__
__module____qualname__r   r   r$   r'   r   r4   __classcell__)r   s   @r   r
   r
      s$    )& </ %&-> 2r   r
   c                 v    t        | |d       }|t        d| d|d      |j                  }t        ||fi |S )NzModel z does not have field r   )r   r   	rel_modelr
   )r   r   
field_namer   propremote_models         r   create_ajax_loaderr>   I   sB    5*d+D|ujQRR >>Ll>g>>r   N)
flask_admin._compatr   r   flask_admin.model.ajaxr   r   toolsr   r
   r>   r&   r   r   <module>rB      s     8 E "?2? ?2D?r   